默认情况下,wordpress有许多有用的小部件,例如类别小部件。现在查看位于 wp_includes / widgets / class-categories-widget.php
的课程WP_Widget_Categories
class WP_Widget_Categories extends WP_Widget
{
/**
* Sets up a new Categories widget instance.
*
* @since 2.8.0
* @access public
*/
public function __construct()
{
$widget_ops = array(
'classname' => 'widget_categories',
'description' => __( 'A list or dropdown of categories.' ),
'customize_selective_refresh' => true,
);
parent::__construct( 'categories', __( 'Categories' ), $widget_ops );
}
//...
}
我们在$widget_ops
数组中有一个选项,我想编辑类名widget_categories
。
搜索窗口小部件
的另一个示例public function __construct()
{
$widget_ops = array(
'classname' => 'widget_search',
'description' => __( 'A search form for your site.' ),
'customize_selective_refresh' => true,
);
parent::__construct( 'search', _x( 'Search', 'Search widget' ), $widget_ops );
}
有时我们需要在这里编辑一些字符串。
那么我们如何扩展这些课程呢?当然我不想编辑这些核心文件
答案 0 :(得分:1)
如果要为所有小部件添加自定义类,可以在注册侧边栏时执行此操作。 before_widget
参数是输出类名的位置。
<?php
add_action( 'widgets_init', 'theme_slug_widgets_init' );
function theme_slug_widgets_init() {
register_sidebar( array(
'name' => __( 'Main Sidebar', 'theme-slug' ),
'id' => 'sidebar-1',
'description' => __( 'Widgets in this area will be shown on all posts and pages.', 'theme-slug' ),
'before_widget' => '<li id="%1$s" class="widget %2$s">', // this is where you would add additional classes
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h2>',
) );
}
如果您想要更精细的控制,可以使用dynamic_sidebar_params
过滤器循环浏览侧栏中的小部件,更改特定小部件的before_title
参数。
add_filter( 'dynamic_sidebar_params', 'my_dynamic_params' );
function my_dynamic_params( $params ) {
foreach ( $params as $key => $param ) {
// check to see if the widget is a category widget
if ( $param['widget_name'] == 'Categories' ) {
$params[$key]['before_widget'] = '<li id="' . $param['widget_id'] . '" class="widget my-custom-class">';
}
}
return $params;
}