问题是:所有已发布内容的语言都显示在主导航栏中的语言切换器中。由于我只有几个瑞典语页面,用户直接指向它们,我想从主导航中删除瑞典语翻译的链接。
解决方案:在搜索了论坛并阅读了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' );
非常感谢您的帮助!
您的$languages
变量设置不正确,还有一个拼写错误(缺少"(。你应该这样做:
$languages = pll_the_languages( array( 'raw'=> 1 ) );
但在这里,您试图调用过滤器pll_the_languages
中的pll_the_languages()
函数,该函数由上一个函数应用。在文档中,您可以看到过滤器将向挂钩函数trim_language_switcher()
传递两个参数。要删除瑞典语链接,您必须解析$output
参数并在返回之前删除链接。