WPML
apply_filters( 'wpml_active_languages', mixed $empty_value, array|string $args )
유형
filter
WPML 버전
3.2

설명

사이트에 활성화된 언어 목록을 필터링합니다. 이 필터는 주로 사용자 정의 언어 전환기를 만드는 데 사용됩니다.

이 필터는 전역 $wp_query 객체가 인스턴스화되었을 때만 작동합니다. 즉, wp 작업이 실행된 후에 호출되어야 합니다.

WPML은 사이트의 활성화된 언어를 각 언어에 대한 관련 정보가 포함된 배열로 반환합니다. 예를 들어 영어, 프랑스어 및 이탈리아어로 운영되는 WordPress 사이트의 경우 훅은 다음을 반환합니다.

Array

(

 [en] => Array

  (

   [id] => 1

   [active] => 1

   [default_locale] => en_US

   [native_name] => English

   [missing] => 0

   [translated_name] => English

   [language_code] => en

   [country_flag_url] => http://yourdomain/wpmlpath/res/flags/en.png

   [url] => http://yourdomain/about

  )



 [fr] => Array

  (

   [id] => 4

   [active] => 0

   [default_locale] => fr_FR

   [native_name] => Français

   [missing] => 0

   [translated_name] => French

   [language_code] => fr

   [country_flag_url] => http://yourdomain/wpmlpath/res/flags/fr.png

   [url] => http://yourdomain/fr/a-propos

  )



 [it] => Array

  (

   [id] => 27

   [active] => 0

   [default_locale] => it_IT

   [native_name] => Italiano

   [missing] => 0

   [translated_name] => Italian

   [language_code] => it

   [country_flag_url] => http://yourdomain/wpmlpath/res/flags/it.png

   [url] => http://yourdomain/it/circa

  )

)

wpml_active_languages 필터는 언어 배열의 순서를 변경하는 등의 작업을 수행할 수 있는 방법을 제공합니다. 또는 누락된 언어를 사용자 정의 URL로 리디렉션하는 것과 같이 더 복잡한 작업을 수행할 수도 있습니다.

인수

$empty_value
(mixed) (필수) 일반적으로 필터가 수정할 값입니다. 여기서는 아무것도 필터링하지 않으므로 이 값을 NULL로 설정하세요. 이는 필터 함수가 전체 인수 목록을 실제로 받도록 하기 위함입니다.
$args
(array|string) (선택 사항) 언어 출력을 필터링하기 위한 인수입니다.
  • skip_missing(bool) 번역이 없는 언어를 처리하는 방법입니다. 언어를 건너뛰려면 1을(를) 지정하고, 누락된 번역에 대해 해당 언어의 홈페이지로 연결하려면 0을(를) 지정하세요.
  • link_empty_to(string) skip_missing = 0과 함께 작동하며, 현재 요소에 대한 번역이 없는 언어에 사용자 정의 링크를 사용할 수 있습니다. 언어 코드의 자리 표시자로 {%lang}을(를) 사용할 수 있습니다. 기본값은 비어 있습니다.
  • orderby(string) id|code|name을(를) 허용합니다. 기본값은 custom입니다. 사용자 정의 순서는 WordPress 관리 화면의 WPML » 언어 » 언어 전환기 옵션에서 정의할 수 있습니다.
  • order(string) asc|desc을(를) 허용합니다.

사용 예시

모든 출력을 이스케이프 처리해야 합니다. 모범 사례에 대해 자세히 알아보려면 데이터 정제/이스케이프에 대한 페이지를 참조하세요.

필터의 인수는 아래 첫 번째 예와 같이 string으로 전달할 수 있습니다. 또한 아래의 두 번째 예에서 볼 수 있듯이 array로 전달할 수도 있습니다.

아래 예에서는 국기만 있는 언어 전환기를 표시합니다. 하지만 관리 화면의 “WPML 언어 설정”에서 구성할 수 있는 국기 전용 언어 전환기와는 약간의 차이가 있습니다.

여기서 차이점은 현재 언어가 앵커 태그 안에 래핑되지 않는다는 것입니다. 페이지의 대체 언어에만 링크가 있습니다. 한 번 살펴보세요.

function my_flag_only_language_switcher() {
    $languages = apply_filters( 'wpml_active_languages', NULL, 'orderby=id&order=desc' );

    if ( !empty( $languages ) ) {
        foreach( $languages as $l ) {
            if ( !$l['active'] ) echo ' <a href="' . esc_url( $l['url'] ) . '">';
            echo '<img src="' . esc_url ( $l['country_flag_url'] ) . '" height="12" alt="' . esc_attr( $l['language_code'] ) . '" width="18" />';
            if ( !$l['active'] ) echo '</a> ';
        }
    }
}

아래에 표시된 다음 예에서는 누락된 언어를 사용자 정의 페이지로 리디렉션하여, 사용자가 번역되지 않은 콘텐츠를 사이트 관리자에게 알릴 수 있는 문의 양식을 표시합니다.
또한 PHP의 strtoupper 함수를 사용하여 활성 언어, 즉 현재 보고 있는 언어 이름의 첫 글자를 대문자로 표시합니다.
두 번째 예
function my_custom_language_switcher() {
    $languages = apply_filters( 'wpml_active_languages', NULL, array( 'skip_missing' => 0, 'link_empty_to' => 'http://domain.com/missing-translation-contact-form' ) );

    if( !empty( $languages ) ) {
        foreach( $languages as $language ){
			$native_name = $language['active'] ? strtoupper( $language['native_name'] ) : $language['native_name'];

            if( !$language['active'] ) echo '<a href="' . esc_url( $language['url'] ) . '">';
            echo esc_html( $native_name ) . ' ';
            if( !$language['active'] ) echo '</a>';
        }
    }
}

wpml_decode_custom_field, wpml_footer_language_selector, wpml_add_language_form_field, wpml_ls_exclude_in_menu, wpml_is_rtl, wpml_alternate_hreflang, wpml_head_langs, wpml_must_translate_canonical_url, wpml_browser_redirect_language_params, wpml_encode_custom_field

모든 사이트 전체 언어 정보 훅 29개 →