WordPress网站,add_filter()可以根据语言更改徽标

时间:2018-11-06 16:07:16

标签: php wordpress

我正在为我的一个朋友使用多种语言的网站。因此,我使用插件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持坚定态度,我需要传递什么参数,或者您是否对我有更好的解决方案?

万一这适用于徽标,我还可以将此功能应用于标题图片,对吗?只需更改数组中的文件名并传递正确的参数?

已经非常感谢,非常感谢您的帮助! 我现在需要离开大约一两个小时,并且在这段时间内无法回复!

编辑:我对“重复”问题也很感兴趣。它没有帮助我,因为我的理解还不够

1 个答案:

答案 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;   
}

(未经测试)

相关问题