apply_filters( 'wpml_active_languages', mixed $empty_value, array|string $args )
- Loại
- filter
- Danh mục
- Thông tin ngôn ngữ toàn trang web
- Phiên bản WPML
- 3.2
Miêu tả
Lọc danh sách các ngôn ngữ được bật (hoạt động) cho một trang web. Bộ lọc này thường được sử dụng để tạo các bộ chuyển đổi ngôn ngữ tùy chỉnh.
Bộ lọc này chỉ có thể hoạt động khi đối tượng $wp_query toàn cục đã được khởi tạo. Điều này có nghĩa là nó nên được gọi sau khi hành động wp diễn ra.
WPML trả về các ngôn ngữ đang hoạt động (được bật) của một trang web dưới dạng một mảng với thông tin tương ứng cho mỗi ngôn ngữ. Ví dụ: đối với một trang web WordPress chạy tiếng Anh, tiếng Pháp và tiếng Ý, hook sẽ trả về như sau:
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 ) )
Bộ lọc wpml_active_languages cung cấp một cách để thực hiện những việc như sắp xếp lại mảng ngôn ngữ. Hoặc một điều gì đó phức tạp hơn, chẳng hạn như chuyển hướng các ngôn ngữ bị thiếu đến một URL tùy chỉnh.
Đối số
- $empty_value
- (mixed) (Bắt buộc) Đây thường là giá trị mà bộ lọc sẽ sửa đổi. Chúng ta không lọc bất kỳ thứ gì ở đây nên hãy đặt giá trị này thành NULL. Điều này để hàm bộ lọc thực sự nhận được danh sách đối số đầy đủ
- $args
- (array|string) (Tùy chọn) Các đối số để lọc đầu ra ngôn ngữ
- skip_missing(bool) Cách xử lý các ngôn ngữ không có bản dịch.
1để bỏ qua ngôn ngữ hoặc0để liên kết đến trang chủ của ngôn ngữ đối với các bản dịch bị thiếu. - link_empty_to(string) Hoạt động kết hợp với skip_missing = 0 và cho phép sử dụng các liên kết tùy chỉnh cho các ngôn ngữ không có bản dịch cho phần tử hiện tại.
{%lang}có thể được sử dụng làm trình giữ chỗ cho mã ngôn ngữ. Trống theo mặc định. - orderby(string) Chấp nhận
id|code|nameMặc định là custom. Thứ tự tùy chỉnh có thể được xác định trong trang quản trị WordPress theo WPML » Ngôn ngữ » Tùy chọn bộ chuyển đổi ngôn ngữ - order(string) Chấp nhận
asc|desc
- skip_missing(bool) Cách xử lý các ngôn ngữ không có bản dịch.
Ví dụ sử dụng
Các đối số của bộ lọc có thể được truyền cho nó dưới dạng string như được hiển thị trong ví dụ đầu tiên bên dưới. Chúng cũng có thể được truyền dưới dạng array như bạn có thể thấy trong ví dụ thứ hai ở phần sau.
Trong ví dụ bên dưới, chúng tôi hiển thị một bộ chuyển đổi ngôn ngữ chỉ có cờ. Tuy nhiên, có một sự khác biệt nhỏ so với bộ chuyển đổi ngôn ngữ chỉ có cờ mà bạn có thể cấu hình từ “Cài đặt ngôn ngữ WPML” của bạn trong trang quản trị.
Sự khác biệt ở đây là ngôn ngữ hiện tại sẽ không được bọc trong một thẻ neo. Chỉ các ngôn ngữ thay thế của trang mới có một liên kết. Hãy cùng xem.
Ví dụ
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> ';
}
}
}
Trong ví dụ tiếp theo mà bạn thấy bên dưới, chúng tôi chuyển hướng các ngôn ngữ bị thiếu đến một trang tùy chỉnh, nơi chúng tôi hiển thị một biểu mẫu liên hệ để mọi người thông báo cho quản trị viên trang web về nội dung chưa được dịch.
Chúng tôi cũng viết hoa tên ngôn ngữ của ngôn ngữ đang hoạt động, tức là ngôn ngữ chúng ta đang xem, bằng cách sử dụng hàm
strtoupper của PHP.
Ví dụ thứ hai
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>';
}
}
}
Các hook liên quan
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