Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WordPress Change logo image when I click to a different language

I have a multilingual website. Is there a way I can change the logo.png to a different .png after I switch to "India"? I am using polylang plugin at this moment. I tried this solution but it did not work - https://support.pojo.me/docs/polylang-change-logo-every-language/.

Does any one know how to fix this issue?

my code

function pojo_polylang_get_multilang_logo( $value ) {
    if ( function_exists( 'pll_current_language' ) ) {
        $logos = array(
            'en' => 'logo-en.png',
            'in' => 'logo-in.png',
        );
        $default_logo = $logos['en'];
        $current_lang = pll_current_language();
        $assets_url = get_stylesheet_directory_uri() . '/assets/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' );
like image 685
core114 Avatar asked Feb 24 '18 07:02

core114


2 Answers

We have done almost the same on a blog that contains 14 categories, and each category had to display its own logo.

In our case, we used custom php code, that checks in the url and overrides the logo display in the theme accordingly, while fetching the logo from the logo path from the db.

In your case, it should be easier since the language variable is easily accessible, so all you need to do in your theme's header.php is a if statement around the logo while fetching the logo image from the database (preferably from the options table) depending on the language.

//fetch the current language ( you can use https://polylang.pro/doc/function-reference/)

$current_language = pll_current_language();

//while fetching the logo for the current language, it's best if you add a fallback to the default language in case the option for the current language is not set

$logo_image = get_option("logo_".$current_language,"logo_".$pll_default_language());

?> <img class="logo" src="<?php echo $logo_image; ?>"

Hope this is what you're looking for.

like image 113
nitrex Avatar answered Nov 14 '22 22:11

nitrex


in your code you have set the $default_logo = $logos['en']; and your $current_lang value is also 'en' so when you change the language your $current_lang value need to change as per the selected language's short code otherwise your $default_logo and $value will be the same..

like image 32
Darsh khakhkhar Avatar answered Nov 14 '22 22:11

Darsh khakhkhar