使用REGISTER_边栏将小部件选项插入标记

时间:2014-08-05 作者:Ila

我在我的主题中的所有小部件中添加了一个自定义字段,称为“自定义标题”。我已成功将每个小部件的字段保存到数据库中,如下所示:

 s:12:"custom-title";s:17:"HELLO TEST ANCHOR"
我想用它在before\\u widget参数上为每个小部件的标记添加一个数据属性“custom title”。我希望最终分数如下所示:

<div id="widget-id" class="widget classes" data-custom-title="HELLO TEST ANCHOR">
我想用register_sidebar() 因此,它适用于保存了自定义标题的所有小部件。

以下是传递给register\\u提要栏的当前参数:

      // Register Sidebar
      register_sidebar(
          Array(
              \'id\' => $sidebar_id,
              \'name\' => $arr_sidebar[0],
              \'description\' => $arr_sidebar[1],
              \'before_widget\' => \'<div id="%1$s" class="widget %2$s" data-custom-title="">\',
              \'after_widget\' => \'</div>\',
              \'before_title\' => \'<h2>\',
              \'after_title\' => \'</h2>\'
          )
      );
是否可以将我的自定义标题插入此标记中的正确位置?

1 个回复
SO网友:Chinmoy Kumar Paul

首先,您将替换此行<div id="%1$s" class="widget %2$s" data-custom-title=""> 具有<div id="%1$s" class="widget %2$s" data-custom-title="DCT">

现在在函数中添加过滤器。php文件。

add_filter( \'widget_display_callback\', \'add_custom_data_to_before_widget\', 10, 3 );
function add_custom_data_to_before_widget( $instance, $widget_class, $args ) {
    if ( ! empty( $instance[\'title\'] ) && ! empty( $instance[\'custom-title\'] )) {
        $args[\'before_widget\'] = str_replace(\'DCT\', sanitize_text_field ( $instance[\'custom-title\'] ), $args[\'before_widget\']);
        $widget_class->widget( $args, $instance );
        return false;
    }
}
希望这对你有帮助。

结束

相关推荐

if is within sidebar

我有几个侧边栏(一个页面上不止一个),我想根据它们位于哪个侧边栏,为小部件设置不同的图像大小。我试过了if( ! dynamic_sidebar(\'my-sidebar\') ) : 以及if ( is_active_sidebar( \'left-sidebar\' ) ) : 但这似乎只是检查侧栏是否存在(它们确实存在)。如何获取:”if widget is located in sidebar A, give me this size, elseif widget is