programing

WordPress다른 언어로 클릭할 때 로고 이미지 변경

lastmoon 2023. 7. 6. 22:31
반응형

WordPress다른 언어로 클릭할 때 로고 이미지 변경

저는 다국어 웹사이트를 가지고 있습니다.제가 그것을 바꿀 수 있는 방법이 있나요?logo.png.png"인도"로 바꾼 후에?저는 지금 폴리랑 플러그인을 사용하고 있습니다.이 솔루션을 사용해 보았지만 작동하지 않았습니다. - https://support.pojo.me/docs/polylang-change-logo-every-language/ .

이 문제를 해결하는 방법을 아는 사람이 있습니까?

나의 규칙

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' );

우리는 14개의 카테고리를 포함하는 블로그에서 거의 동일한 작업을 수행했으며 각 카테고리는 자체 로고를 표시해야 했습니다.

우리의 경우, 우리는 db에서 로고 경로에서 로고를 가져오는 동안 url을 체크인하고 그에 따라 테마의 로고 표시를 재정의하는 사용자 지정 php 코드를 사용했습니다.

이 경우 언어 변수에 쉽게 액세스할 수 있으므로 테마의 머리글에서 수행해야 하는 모든 작업이 쉬워집니다.php는 언어에 따라 데이터베이스(가능하면 옵션 테이블에서)에서 로고 이미지를 가져오는 동안 로고 주위의 if 문입니다.

//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; ?>"

이것이 당신이 찾고 있는 것이기를 바랍니다.

당신의 코드에서 당신은 설정했습니다.$default_logo = $logos['en'];그리고 당신의$current_lang값도 'en'이므로 언어를 변경할 때 선택한 언어의 짧은 코드에 따라 $current_value 값을 변경해야 합니다. 그렇지 않으면 $default_value와 $value가 동일합니다.

LOGO라는 문자열을 쉽게 등록하고 모든 링크(또는 이름)를 넣을 수 있습니다!

1단계: 아래 코드를 함수에 추가합니다.php

pll_register_string("LOGO","example.com/path/to/images/logo.png"); // this url for default language

2단계: 이제wp-admin " 역래에 " 서"에 "의 " 번역Languages모든 언어로 "LOGO" 필드를 사용할 수 있습니다.

preview

3단계: 로고 URL(모든 언어)을 보려면 다음 코드를 사용하십시오.

<?php pll_e("LOGO"); ?>

참고: 이 필드에 로고 이름만 입력하려면 코드는 다음과 같습니다.

<?php 
$assets_url = get_stylesheet_directory_uri() . '/assets/images/';
echo $assets_url; pll_e("LOGO"); ?>

당신의 페이지가 SEO 프렌들리이고 당신이 경우<html lang=''>다른 언어의 경우 jQuery를 통해 클라이언트 측의 로고를 변경할 수 있습니다.

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' );

에서 보면$assets_url$return $value 문if 문이 됩니다.

        $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

로는 if 에 if 문이 없으면 제가본바는로가 되어 있지 가 보입니다.{}아마도 당신이 그것을 다음과 같이 바꾼다면 그것이 작동할 것인가요?

        $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

이렇게 하면 캐시가 무효화되고 결과적으로 성능에 영향을 미치기 때문에 PHP에서는 권장하지 않습니다.대신 JavaScript, JQuery를 사용하여 언어 속성에 따라 로고를 변경해야 합니다.

편집: WPML은 실제로 WPML String Translations 확장을 설치하여 이를 허용하는 것 같습니다.

언급URL : https://stackoverflow.com/questions/48960489/wordpress-change-logo-image-when-i-click-to-a-different-language

반응형