如何将widget_title过滤器仅应用于特定侧边栏中的WordPress小工具?

5

我需要仅将widget_title过滤器应用于特定侧边栏中的小部件。 如果小部件来自“页脚”,则我想应用:

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

to it.

Thanks.


相关链接:https://presscustomizr.com/snippet/dynamically-changing-the-widget-title-depending-on-the-context/ - undefined
3个回答

3

由于您想使用硬编码的侧边栏名称,我假设您正在创建一个主题并控制打印侧边栏的代码?如果是这样,您可以首先添加过滤器,然后再将其删除,就像这样:

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

这样,周围的侧边栏就不会受到影响。


1
如果您只想删除小部件标题,而不需要创建自定义函数,可以通过将"__return_false"作为过滤器参数传递来完成此操作。
add_filter('widget_title', '__return_false');
dynamic_sidebar('footer');
remove_filter('widget_title', '__return_false');

查看 http://codex.wordpress.org/Function_Reference/_return_false


0

我更喜欢Calle的答案,但如果您没有那些条件,这个也可以工作:

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
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接