do_action( 'wpml_set_element_language_details', array $args )
- Loại
- action
- Danh mục
- Chèn nội dung
- Phiên bản WPML
- 3.2.7
Miêu tả
Action hook cho phép thiết lập hoặc cập nhật thông tin ngôn ngữ của một phần tử. Ngoài cách sử dụng ngầm định đơn giản, hook này có thể hữu ích khi cần kết nối hai phần tử, trong đó một phần tử là “Bản dịch của” phần tử kia. Tham khảo phần “Ví dụ sử dụng hook” bên dưới để xem ví dụ về điều này.
Đối số
- $args
- (mảng) (Bắt buộc) Một mảng các đối số sẽ được sử dụng.
- element_id(bool) Sử dụng term_taxonomy_id cho các phân loại, post_id cho bài viết
- element_type(string) Loại của một phần tử. Có thể là một loại bài viết: post_post, post_page, post_attachment, post_nav_menu_item, post_{custom post key} hoặc phân loại: tax_category, tax_post_tag, tax_nav_menu, tax_{custom taxonomy key}. Mặc định là
post_postnếu không được thiết lập. - trid(int) trid mà phần tử sẽ được gán vào. Nếu được thiết lập thành
FALSE, nó sẽ tạo một trid mới cho phần tử, khiến mọi mối quan hệ bản dịch tiềm năng đến/từ phần tử đó biến mất. - language_code(string) Mã ngôn ngữ cho phần tử
- source_language_code(string) Mã ngôn ngữ nguồn cho phần tử.
NULLđược dành riêng cho các phần tử gốc, tức là các phần tử không phải là bản dịch của một phần tử khác. Mặc định làNULLkhi không được thiết lập. - check_duplicates(bool) Mặc định là
TRUE.. Thuộc tính này sẽ kiểm tra xem một phần tử khác có loại khác nhưng cùng ID đã tồn tại hay chưa và đưa ra một thông báo cấp người dùng (E_USER_NOTICE) với thông điệp “Element ID already exists with a different type”
Ví dụ sử dụng
Trong ví dụ bên dưới, chúng tôi sử dụng hàm
my_insert_posts() để chèn hai bài viết từ giao diện người dùng. Một bài viết gốc và một bản dịch.
Hàm này được gọi trong element_connect_on_insert(). Đây là hàm chính của chúng tôi sẽ kết nối hai bài viết lại với nhau. Lưu ý việc sử dụng hai hook hữu ích khác của WPML ở bên trong. Bộ lọc wpml_element_type để lọc loại phần tử thành một giá trị mà WPML sẽ hiểu và bộ lọc wpml_element_language_details để truy xuất trid gốc và mã ngôn ngữ. Tất cả những điều này được hook vào wp_footer để các bộ lọc và hành động của chúng ta sẽ kích hoạt khi footer được tải trên giao diện người dùng.
Ví dụ
add_action('wp_footer', 'element_connect_on_insert');
function my_insert_posts() {
$output = array();
// Create original post object
$my_original_post = array(
'post_title' => 'My original post',
'post_content' => 'This is my original post.',
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(1)
);
// Create translation post object
$my_translated_post = array(
'post_title' => 'My translated post',
'post_content' => 'This is my translated post.',
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(2) // NOTE: this is the translated category id!
);
// Insert the 2 posts into the database
$original_post_id = wp_insert_post( $my_original_post );
$translated_post_id = wp_insert_post( $my_translated_post );
return $output = array(
'original' => $original_post_id,
'translation' => $translated_post_id
);
}
function element_connect_on_insert() {
$inserted_post_ids = my_insert_posts();
if ( $inserted_post_ids) {
// https://wpml.org/wpml-hook/wpml_element_type/
$wpml_element_type = apply_filters( 'wpml_element_type', 'post' );
// get the language info of the original post
// https://wpml.org/wpml-hook/wpml_element_language_details/
$get_language_args = array('element_id' => $inserted_post_ids['original'], 'element_type' => 'post' );
$original_post_language_info = apply_filters( 'wpml_element_language_details', null, $get_language_args );
$set_language_args = array(
'element_id' => $inserted_post_ids['translation'],
'element_type' => $wpml_element_type,
'trid' => $original_post_language_info->trid,
'language_code' => 'de',
'source_language_code' => $original_post_language_info->language_code
);
do_action( 'wpml_set_element_language_details', $set_language_args );
}
}
Các hook liên quan
wpml_make_post_duplicates, wpml_admin_make_post_duplicates, wpml_copy_post_to_language, wpml_delete_package, wpml_import_get_trid_from_imported_translations, wpml_register_string, wpml_register_single_string, wpml_show_package_language_ui, wpml_delete_package_action