自定义主题初始小工具(widge)等方法:add_theme_support()
How to use it
Themes define a subset of core-provided starter content using add_theme_support()
– let’s look at a breakdown of how Twenty Seventeen does things. In its setup function hooked to after_setup_theme
, we see an array with collections of widgets, posts (pages), attachments, options, theme mods, and nav menus registered as the starter content. The customizer looks for this starter-content
at after_setup_theme
priority 100, so do make this call at that point or later:
add_theme_support( 'starter-content', array( /*...*/ ) )
Widgets
Each widget area ID corresponds to one sidebar registered by the theme, with the contents of each widget area array being a list of widget “symbols” that reference core-registered widget configurations. Most default widgets are available (archives
, calendar
, categories
, meta
, recent-comments
, recent-posts
, and search
), as well as text widgets with business hours (text_business_info
) and a short prompt for an “about this site” style blurb (text_about
). Themes should place widgets based on what works best in that area – for instance, business info in a footer widget of a business-centric theme, or a nicely styled calendar widget in the sidebar of a blog.
Custom widgets can also be registered at the time of starter content registration or later filtered in, which will be more likely the case for plugins, as add_theme_support()
for starter content will be overridden by any later calls.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
// Custom registration example add_theme_support( 'starter-content' , array ( 'widgets' => array ( 'sidebar-1' => array ( 'meta_custom' => array ( 'meta' , array ( 'title' => 'Pre-hydrated meta widget.' , ) ), ), ), ); // Plugin widget added using filters function myprefix_starter_content_add_widget( $content , $config ) { if ( isset( $content [ 'widgets' ][ 'sidebar-1' ] ) ) { $content [ 'widgets' ][ 'sidebar-1' ][ 'a_custom_widget' ] = array ( 'my_custom_widget' , array ( 'title' => 'A Special Plugin Widget' , ), ); } return $content ; } add_filter( 'get_theme_starter_content' , 'myprefix_starter_content_add_widget' , 10, 2 ); |