T铆tulo del widget en la clase de etiqueta before_widget

El usuario @dalenberg pregunt贸 en mi sugerencia anterior sobre el widget si podemos agregar el t铆tulo en el widget como un todo. De hecho, podemos, pero es un poco complicado que el consejo anterior. Aqu铆 est谩 el 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;
}
}

Expliquemos: widget_display_callbackes el 煤ltimo filtro que se utilizar谩 antes de llamar a la widget()funci贸n. Pero como no podemos alterar la $argsmatriz, necesitamos ejecutar el widget()m茅todo dentro de nuestra funci贸n.

$new_class = 'class="' . sanitize_title( $instance['title'] ) . ' ';
$args
['before_widget'] = str_replace('class="', $new_class, $args['before_widget']);

Primero, comprobamos si tenemos un t铆tulo. Si es verdadero, realizamos un para agregar el t铆tulo en el par谩metro generado por la funci贸n.str_replace()before_titleregister_sidebar()

$widget_class->widget( $args, $instance );
return false;

Ahora, llamamos a la funci贸n usando nuestro alterado . La devoluci贸n evitar谩 que WordPress vuelva a ejecutar la funci贸n, por lo que no obtendremos widgets duplicados.widget()$argsfalsewidget()