¿Aplicar el filtro widget_title solo a los widgets de WordPress desde una determinada barra lateral?

1 minuto de lectura

Avatar de usuario de Vitalie
vitalia

Necesito aplicar el filtro widget_title solo a los widgets de una determinada barra lateral. Si el widget es de “pie de página”, quiero aplicar:

function widget_title_empty($output="") {
    if ($output == '') {
        return ' ';
    }
    return $output;
}
add_filter('widget_title', 'widget_title_empty');

lo.

Gracias.

Dado que desea utilizar un nombre de barra lateral codificado, supongo que tal vez está creando un tema y tiene control sobre el código que imprime la barra lateral. Si es así, primero puede agregar el filtro y luego eliminarlo nuevamente, así:

add_filter('widget_title', 'widget_title_empty');
dynamic_sidebar('footer');
remove_filter('widget_title', 'widget_title_empty');

De esta manera, las barras laterales circundantes no se verán afectadas.

Si desea eliminar solo el título del widget, puede hacerlo sin crear una función personalizada pasando "__return_false" como argumento al filtro:

add_filter('widget_title', '__return_false');
dynamic_sidebar('footer');
remove_filter('widget_title', '__return_false');

Ver http://codex.wordpress.org/Function_Reference/_return_false

Me gusta más la respuesta de Calle, pero esto funcionará si no tienes esas condiciones:

class Example {

    protected $lastWidget = false;

    public function __construct() {
        add_filter('dynamic_sidebar_params', array($this, 'filterSidebarParams'));
    }

    /**
    * record what sidebar widget is being processed
    * @param array $widgetParams
    * @return array
    */
    public function filterSidebarParams($widgetParams) {
        $this->lastWidget = $widgetParams;

        return $widgetParams;
    }

    /**
    * check to see if last widget recorded was in sidebar
    * @param string $sidebarName
    * @return bool
    */
    public function isLastSidebar($sidebarName) {
        return $this->lastWidget && $this->lastWidget[0]['id'] == $sidebarName;
    }

}

$example = new Example();

// in your widget's code
if ($example->isLastSidebar('footer-widget-area')) {
    // you're in
}

¿Ha sido útil esta solución?