0

问题:所有已发布内容的语言都显示在位于主导航栏中的语言切换器中。由于我只有几个瑞典语页面,并且用户被直接定向到它们,我想从主导航中删除指向瑞典语翻译的链接。

解决方案:在 Stack Overflow 上搜索论坛和阅读帖子后,似乎最好的方法(如果我理解正确的话)是在主题 functions.php 文件中创建一个函数,并在切换器中添加一个过滤器来删除如果找到瑞典语。这也是任何明智的话都会受到赞赏的地方;如何去创建一个合适的过滤器?

这就是我到目前为止所拥有的。但是,当我尝试时,我的网站崩溃了。

function trim_language_switcher() {
    $del_val = 'sv'; // Value to be deleted 
    if(function_exists('pll_the_languages')) { 
        $languages = pll_the_languages(array('raw'=>) // Get raw data as array  
        if (($key = array_search($del_val, $languages)) !== false) { // Get key for value
            unset($languages[$key]);
        }
        return $languages; 
    }
}
add_filter( 'pll_the_languages', 'trim_language_switcher' );

任何帮助是极大的赞赏!

4

1 回答 1

0

您的$languages变量设置不正确,并且还有一个错字(缺少“)”)。你应该这样做:

$languages = pll_the_languages( array( 'raw'=> 1 ) );

但是在这里,您尝试调用前一个函数应用pll_the_languages()的过滤器内的pll_the_languages函数。在文档中,您可以看到过滤器会将两个参数传递给您的挂钩函数trim_language_switcher()。要删除瑞典链接,您必须解析$output参数并在返回之前删除链接。

于 2022-02-08T15:52:47.543 回答