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을(를) 허용합니다.
- skip_missing(bool) 번역이 없는 언어를 처리하는 방법입니다. 언어를 건너뛰려면
사용 예시
필터의 인수는 아래 첫 번째 예와 같이 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