我正在为我的一个朋友使用多种语言的网站。因此,我使用插件Polylang。 “我使用的主题称为“宽敞”。
我目前面临的问题是,我无法为不同的语言添加不同的徽标以及不同的标题文本/背景图片。
我在Google上搜索了一下,找到了可能的解决方案,但没有使它起作用。
function pojo_polylang_get_multilang_logo( $value ) {
if ( function_exists( 'pll_current_language' ) ) {
$logos = array(
'en' => 'logo_en.jpg',
'fr' => 'logo_fr.jpg',
'de' => 'logo_de.jpg',
'es' => 'logo_esp.jpg',
);
$default_logo = $logos['en'];
$current_lang = pll_current_language();
$assets_url = get_stylesheet_directory_uri() . '/images/';
if ( isset( $logos[ $current_lang ] ) )
$value = $assets_url . $logos[ $current_lang ];
else
$value = $assets_url . $default_logo;
}
return $value;
}
add_filter( 'theme_mod_image_logo', 'pojo_polylang_get_multilang_logo' );
据我了解,此函数首先将预设的徽标文件名存储在数组中,然后检查当前语言,并根据当前语言,add_filter()函数设置当前徽标。
我尝试将其复制到functions.php文件中,但没有成功。 我的想法是,由于第一个参数'theme_mod_image_logo',它不起作用。我还用谷歌搜索了这个php函数,以更好地理解它并知道将什么参数传递给该函数。有人可以向我解释谁对php持坚定态度,我需要传递什么参数,或者您是否对我有更好的解决方案?
万一这适用于徽标,我还可以将此功能应用于标题图片,对吗?只需更改数组中的文件名并传递正确的参数?
已经非常感谢,非常感谢您的帮助! 我现在需要离开大约一两个小时,并且在这段时间内无法回复!
编辑:我对“重复”问题也很感兴趣。它没有帮助我,因为我的理解还不够
答案 0 :(得分:1)
我认为最好的方法是插入主题所使用的“ get_custom_logo”:
add_filter( 'get_custom_logo', 'my_polylang_logo' );
function my_polylang_logo() {
if ( function_exists( 'pll_current_language' ) ) {
$logos = array(
'en' => 'logo_en.jpg',
'fr' => 'logo_fr.jpg',
'de' => 'logo_de.jpg',
'es' => 'logo_esp.jpg'
);
$current_lang = pll_current_language();
$img_path = get_stylesheet_directory_uri() . '/images/';
if ( isset( $logos[ $current_lang ] ) ) {
$logo_url = $img_path . $logos[$current_lang];
} else {
$logo_url = $img_path . $logos['en'];
}
$home_url = home_url();
$html = sprintf( '<a href="%1$s" rel="home" itemprop="url"><img src="%2$s"></a>', esc_url( $home_url ), $logo_url);
}
return $html;
}
(未经测试)