WordPress - 将类添加到窗口小部件文本

时间:2014-09-13 16:11:56

标签: wordpress

在"文本小部件"中添加文本输入的方法是什么?并且文本输入中的数据将添加到小部件类,如

<aside id="text-2" class="widget widget_text custom_class_here">
...
</aside>

我的方式是取消注册窗口小部件文本并重新创建它。但我认为会有更好的方法。如何做到这一点,谢谢

3 个答案:

答案 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;
    }
}