在"文本小部件"中添加文本输入的方法是什么?并且文本输入中的数据将添加到小部件类,如
<aside id="text-2" class="widget widget_text custom_class_here">
...
</aside>
我的方式是取消注册窗口小部件文本并重新创建它。但我认为会有更好的方法。如何做到这一点,谢谢
答案 0 :(得分:1)
在functions.php文件中注册了侧边栏。 e.g。
register_sidebar( array(
'name' => __( 'Main Sidebar', 'twentytwelve' ),
'id' => 'sidebar-1',
'description' => __( 'Appears on posts and pages except the optional Front Page template, which has its own widgets', 'twentytwelve' ),
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
您要做的是在aside
中添加自定义类,例如
register_sidebar( array(
'name' => __( 'Main Sidebar', 'twentytwelve' ),
'id' => 'sidebar-1',
'description' => __( 'Appears on posts and pages except the optional Front Page template, which has its own widgets', 'twentytwelve' ),
'before_widget' => '<aside id="%1$s" class="widget %2$s my_custom_class_here">',
'after_widget' => '</aside>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
答案 1 :(得分:0)
您可以使用以下内容过滤整个文本并进行字符串替换或添加:
add_filter( 'widget_text', 'widget_so_25825107', 10, 2 );
function widget_so_25825107( $text, $instance ) {
$new_text = "manipulate $text here";
return $new_text
}
答案 2 :(得分:0)
这是将自定义类添加到“小部件文本”字段的示例。寻找some-other-class
并将其替换为您自己的类。
add_filter( 'dynamic_sidebar_params', [ new Sidebar_Filterer, 'filter' ], 10, 1 );
class Sidebar_Filterer {
/**
* @filter dynamic_sidebar_params 10 1
*
* @param $param
*
* @return mixed
*/
public function filter( $params ) {
if ( ! is_array( $params ) || empty( $params ) ) {
return $params;
}
foreach ( $params as &$param ) {
if ( is_array( $param ) ) {
$param = $this->filter_text_widget( $param );
}
}
return $params;
}
private function filter_text_widget( array $param ): array {
if ( ! array_key_exists( 'widget_name', $param ) ) {
return $param;
}
if ( $param['widget_name'] != 'Text' ) {
return $param;
}
if ( ! array_key_exists( 'before_widget', $param ) ) {
return $param;
}
if ( strpos( $param['before_widget'], 'widget_text' ) === false ) {
return $param;
}
$param['before_widget'] = str_replace( 'widget_text', 'widget_text some-other-class', $param['before_widget'] );
return $param;
}
}