O usuário @dalenberg perguntou na minha dica anterior do widget se podemos adicionar o título ao widget como um todo. Na verdade, podemos, mas é um pouco complicado do que a dica anterior. Aqui está o código completo:
add_filter( 'widget_display_callback', 'add_widget_title_to_before_widget', 10, 3 );
function add_widget_title_to_before_widget( $instance, $widget_class, $args ) {
if ( ! empty( $instance['title'] ) ) {
$new_class = 'class="' . sanitize_title( $instance['title'] ) . ' ';
$args['before_widget'] = str_replace('class="', $new_class, $args['before_widget']);
$widget_class->widget( $args, $instance );
return false;
}
}
Vamos explicar: widget_display_callback
é o último filtro a ser usado antes de chamar a widget()
função. Mas como não podemos alterar o $args
array, precisamos executar o widget()
método dentro de nossa função.
$new_class = 'class="' . sanitize_title( $instance['title'] ) . ' ';
$args['before_widget'] = str_replace('class="', $new_class, $args['before_widget']);
Primeiro, verificamos se temos um título. Se verdadeiro, executamos um para adicionar o título ao parâmetro gerado pela função.str_replace()
before_title
register_sidebar()
$widget_class->widget( $args, $instance );
return false;
Agora, chamamos a função usando nosso alterado . Retornar impedirá o WordPress de executar a função novamente, portanto, não obteremos widgets duplicados.widget()
$args
false
widget()