Barra lateral dinámica de WordPress sin título

3 minutos de lectura

Me gustaría tirar en una barra lateral dinámica. Tengo 1 elemento de texto en la barra lateral del widget, pero NO quiero extraer el título del widget (solo el cuerpo). ¿Alguien puede mostrarme dónde está tirando WordPress en el Título?

Por ejemplo, en este momento tengo…

// In my page template...
<div id='advert-header'>        
   <?php dynamic_sidebar( 'Header Advert' ); ?>
</div>

// In functions.php...
function twentyten_widgets_init() {
    register_sidebar( array(
        'name' => __( 'Header Advert', 'twentyten' ),
        'id' => 'primary-widget-area',
        'description' => __( 'The primary widget area', 'twentyten' ),
        'before_widget' => '',
        'after_widget' => '',
        'before_title' => '',
        'after_title' => '',
    ) );
// etc.
}

El widget siempre tiene un filtro aplicado en el nombre del título ‘widget_title’, utilícelo.

add_filter('widget_title','my_widget_title'); 
function my_widget_title($t)
{

    return null;
}

Gracias

-Agitar

  • Esta es la respuesta correcta, veamos si no podemos modificar la respuesta aceptada…

    – jajaja

    22 de febrero de 2014 a las 22:51

  • No estoy seguro si algo cambió con las versiones posteriores de WordPress, pero puse este código en functions.php y el campo de título aún se muestra en el widget del tablero. ¿O se supone que este código debe hacer otra cosa?

    – J82

    7 julio 2014 a las 23:13

  • @J82 Acabo de probar este código con una versión de WordPress 4.9.8 y funcionó perfectamente como se esperaba.

    – Александр Фишер

    3 de diciembre de 2018 a las 13:26

avatar de usuario
el alfa

Puedes probar esto (en functions.php dentro de register_sidebar)

'before_title' => '<span class="hidden">',
'after_title' => '</span>',

y css

.hidden{display:none;}

También puedes probar este.

  • Hmmm, no puedo encontrar ese código en mi instalación de WordPress.org. ¿Tal vez es un archivo central?

    – SparrwHawk

    24 de febrero de 2012 a las 10:19

  • Si es un archivo central, preferiría no tocarlo, pero gracias por la sugerencia. Por el momento, la conclusión es usar su sugerencia span class=’hidden’, solo me preguntaba si había una forma más semántica de controlarla.

    – SparrwHawk

    24 de febrero de 2012 a las 10:33


  • Esta es una solución sucia, está ocultando el título, no eliminándolo. se deben aplicar filtros para obtener un código html limpio como resultado.

    – Nello Ollen

    18 de enero de 2014 a las 16:37

  • @NelloOllen, tienes razón porque tengo la mente sucia 🙂

    – El Alfa

    18/01/2014 a las 17:25

  • Yo uso un método similar, aunque prefiero usar comentarios HTML en lugar de CSS para ocultar el título: 'before_title' => '<!--', 'after_title' => '-->'. Esto tiene la ventaja de ser transparente para los motores de búsqueda. En otras palabras, el texto del título no será contado por Google, et. Alabama.

    – njbair

    13/09/2014 a las 17:58


Esos títulos pueden ser útiles para el usuario de CMS, por lo que en su register_sidebar, puedes poner algo. como hice en el código a continuación (funciona en WordPress 5.0.3). Ahora el título de los widgets está en el comentario html, me parece bien

  register_sidebar( array(
    'name'          => esc_html__( 'Contact page widgets', 'xxx' ),
    'id'            => 'sidebar-3',
    'description'   => esc_html__( 'Add widgets here to appear on contact page.', 'xxx' ),
    'before_widget' => '<div id="%1$s" class="widget %2$s">',
    'after_widget'  => '</div>',
    'before_title'  => '<!-- ',
    'after_title'   => ' -->',
) );

O puede hacerlo aún más simple haciendo esto en funciones:

'before_title' => '<span style="display: none;">',
'after_title' => '</span>',

¿Hay un campo de título para el widget que está utilizando? Podrías probar simplemente poniendo &nbsp; ahí, para que tengas un espacio para el título. Sin embargo, no es la solución más elegante.

avatar de usuario
jose joe

no podrías simplemente hacer display: none; en el css para widget-title?

avatar de usuario
Tanmay Patel

Por favor, ponga este código en el archivo functions.php.

add_filter( 'widget_title', 'remove_widget_title' );
function remove_widget_title( $widget_title ) {
    return $widget_title == '&nbsp;' ? '' : $widget_title;
}

¿Ha sido útil esta solución?