Каким образом разметка, которую я указываю в настройках «before_title» и «after_title» для register_sidebar, применяется к виджету 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_sidebar?
Если это все ваш код «title», вы не $before_title
и $after_title
. Посмотрите, как текстовый виджет по умолчанию , на который вы ссылаетесь, делает это:
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. Я не вижу «раньше» и «после» в вашем коде.