为什么我在register\\u侧栏的“before\\u title”和“after\\u title”设置中指定的标记会应用于默认文本WordPress小部件,而不是我们的自定义小部件,而两者都在同一侧栏中,并且在小部件设置中都有标题?
例如,当我设置
register_sidebar(
array(
\'name\' => $name,
\'id\' => $id,
\'before_widget\' => \'<li id="%1$s" class="widget %2$s">\',
\'after_widget\' => \'</li>\',
\'before_title\' => \'<h2 class="widgettitle">XXXXX\',
\'after_title\' => \'</h2>\',
)
);
XXXX出现在文本小部件的标题中,但不出现在任何自定义小部件中。
在自定义小部件的小部件方法中,我们做了如下工作
$title = $instance[\'title\'];
if ( $title ) {
echo \'<h2><span class="text">\' . esc_html( $title ) . \'</span></h2>\';
}
这种呈现标题的方式是否会覆盖您在register\\u侧栏中的任何设置?
最合适的回答,由SO网友:s_ha_dum 整理而成
如果这是你所有的“标题”代码,那么你不是echo
ing公司$before_title
和$after_title
. 看看default text widget, 您引用的,是否:
399 function widget( $args, $instance ) {
400 extract($args);
401 $title = apply_filters( \'widget_title\', empty( $instance[\'title\'] ) ? \'\' : $instance[\'title\'], $instance, $this->id_base );
402 $text = apply_filters( \'widget_text\', empty( $instance[\'text\'] ) ? \'\' : $instance[\'text\'], $instance );
403 echo $before_widget;
404 if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
405 <div class="textwidget"><?php echo !empty( $instance[\'filter\'] ) ? wpautop( $text ) : $text; ?></div>
406 <?php
407 echo $after_widget;
408 }
请看第404行。我在代码中看不到“before”和“after”。