当一种语言发布了内容时,如何从Polylang语言切换器中删除语言链接



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

解决方案:在搜索了论坛并阅读了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参数并在返回之前删除链接。

最新更新