当前浏览:首页 / WordPress函数 / register_sidebar()

register_sidebar( array|string $args = array() )

构建单个边栏的定义并返回ID

registermore...

sidebar 侧边栏


描述

接受字符串或数组,然后根据新边栏的一组默认参数对其进行解析。如果不包括这些参数,WordPress将根据当前注册的边栏数量自动生成边栏ID和名称。

当允许自动生成名称和ID参数时,请记住,边栏的增量可能会随着时间的推移而变化,具体取决于安装了哪些其他插件和主题。

如果调用此函数时尚未添加对“小工具”的主题支持,则将通过使用add_theme_support()自动启用


参数

$args

(array|string) (可选) 要注册的边栏的数组或字符串参数。

  • 'name'
    (string) 显示在小工具界面的侧边栏的名称或标题。默认值 'Sidebar $instance'
  • 'id'
    (string) 侧边栏将被调用的唯一标识符。默认值 'sidebar-$instance'
  • 'description'
    (string) 边栏的描述,显示在小工具界面。默认为空字符串。
  • 'class'
    (string) 额外的CSS类,分配给小工具界面中的侧边栏。
  • 'before_widget'
    (string) 当分配给此边栏时,添加到每个小工具的HTML输出的HTML内容。接收小工具的ID属性为 %1$s ,类名为 %2$s。默认是一个打开的列表项元素。
  • 'after_widget'
    (string) 当分配给此边栏时,要追加到每个小工具的HTML输出的HTML内容。默认是一个关闭的列表项元素。
  • 'before_title'
    (string) 显示时要在侧边栏标题前添加的HTML内容。默认为打开的h2元素。
  • 'after_title'
    (string) 显示时要追加到侧边栏标题的HTML内容。默认为关闭的h2元素。
  • 'before_sidebar'
    (string) 显示时,添加到边栏的 HTML 内容。接收 $id 参数为 %1$s,接收 $class 为 %2$s,在 ‘dynamic_sidebar_before’ 动作钩子之后输出,默认为空字符串。
  • 'after_sidebar'
    (string) 显示时,追加到边栏的 HTML 内容。在 ‘dynamic_sidebar_after’ 动作钩子之前输出,默认为空字符串。
  • 'show_in_rest'
    (bool) 是否在REST API中公开显示这个侧边栏。默认情况下,只向管理员用户显示侧边栏。

默认值: array()


返回

(string) 边栏ID添加到 $wp_registered_sidebars 全局变量。



源码

查看源码 官方文档


更新日志

版本描述
5.9.0添加了show_in_rest参数
5.6.0添加了before_sidebarafter_sidebar参数
2.2.0开始引入

使用示例

  • 示例1

    本例创建了一个名为“Main sidebar”的边栏,标题前后都有。

    /**
     * Add a sidebar.
     */
    function wpdocs_theme_slug_widgets_init() {
    	register_sidebar( array(
    		'name'          => __( 'Main Sidebar', 'textdomain' ),
    		'id'            => 'sidebar-1',
    		'description'   => __( 'Widgets in this area will be shown on all posts and pages.', 'textdomain' ),
    		'before_widget' => '<li id="%1$s" class="widget %2$s">',
    		'after_widget'  => '</li>',
    		'before_title'  => '<h2 class="widgettitle">',
    		'after_title'   => '</h2>',
    	) );
    }
    add_action( 'widgets_init', 'wpdocs_theme_slug_widgets_init' );
    
  • 示例2

    输出注册的边栏:

    <?php if ( is_active_sidebar( 'your-sidebar-slug' ) ) { ?>
    	<ul id="sidebar">
    		<?php dynamic_sidebar('your-sidebar-slug'); ?>
    	</ul>
    <?php } ?>
  • 示例3
    /* Better way to add multiple widgets areas */
    function widget_registration($name, $id, $description,$beforeWidget, $afterWidget, $beforeTitle, $afterTitle){
    	register_sidebar( array(
    		'name' => $name,
    		'id' => $id,
    		'description' => $description,
    		'before_widget' => $beforeWidget,
    		'after_widget' => $afterWidget,
    		'before_title' => $beforeTitle,
    		'after_title' => $afterTitle,
    	));
    }
    
    function multiple_widget_init(){
    	widget_registration('Footer widget 1', 'footer-sidebar-1', 'test', '', '', '', '');
    	widget_registration('Footer widget 2', 'footer-sidebar-2', 'test', '', '', '', '');
    	// ETC...
    }
    
    add_action('widgets_init', 'multiple_widget_init');
  • 示例4
    /* Add Multiple sidebar 
    */
    if ( function_exists('register_sidebar') ) {
    	$sidebar1 = array(
    		'before_widget' => '<div class="widget %2$s">',
    		'after_widget' => '</div>',
    		'before_title' => '<h2 class="widgettitle">',
    		'after_title' => '</h2>',        
    		'name'=>__( 'My sidebar 1', 'textdomain' ),	
    	);	
    	$sidebar2 = array(
    		'before_widget' => '<div class="widget %2$s">',
    		'after_widget' => '</div>',
    		'before_title' => '<h2 class="widgettitle">',
    		'after_title' => '</h2>',        
    		'name'=>__( 'My sidebar 2', 'textdomain' ),	
    	);
        $sidebar3 = array(
    		'before_widget' => '<div class="widget %2$s">',
    		'after_widget' => '</div>',
    		'before_title' => '<h2 class="widgettitle">',
    		'after_title' => '</h2>',        
    		'name'=>__( 'My sidebar 3', 'textdomain' ),	
    	);
        $sidebar4 = array(
    		'before_widget' => '<div class="widget %2$s">',
    		'after_widget' => '</div>',
    		'before_title' => '<h2 class="widgettitle">',
    		'after_title' => '</h2>',        
    		'name'=>__( 'My sidebar 4', 'textdomain' ),	
    	);
    	
    	register_sidebar($sidebar1);
    	register_sidebar($sidebar2);
        register_sidebar($sidebar3);
        register_sidebar($sidebar4);
    }