do_action( 'wpml_set_element_language_details', array $args )
- 유형
- action
- 카테고리
- 콘텐츠 삽입
- WPML 버전
- 3.2.7
설명
액션 훅을 사용하면 요소의 언어 정보를 설정하거나 업데이트할 수 있습니다. 직관적인 기본 용도 외에도, 한 요소를 다른 요소의 ‘번역’으로 설정하여 두 요소를 연결해야 할 때 이 훅이 유용할 수 있습니다. 이에 대한 예시는 아래의 “훅 사용 예시” 섹션을 참조하세요.
인수
- $args
- (array) (필수) 사용할 인수의 배열입니다.
- element_id(bool) 택소노미에는 term_taxonomy_id를 사용하고, 글에는 post_id를 사용합니다.
- element_type(string) 요소의 유형입니다. 글 유형(post_post, post_page, post_attachment, post_nav_menu_item, post_{custom post key}) 또는 택소노미(tax_category, tax_post_tag, tax_nav_menu, tax_{custom taxonomy key})가 될 수 있습니다. 설정하지 않으면
post_post(으)로 기본 설정됩니다. - trid(int) 요소가 할당될 trid입니다.
FALSE(으)로 설정하면 요소에 대한 새 trid를 생성하여 해당 요소와 관련된 모든 잠재적인 번역 관계가 사라집니다. - language_code(string) 요소의 언어 코드입니다.
- source_language_code(string) 요소의 원본 언어 코드입니다.
NULL은(는) 원본 요소, 즉 다른 요소의 번역이 아닌 요소를 위해 예약되어 있습니다. 설정하지 않으면NULL(으)로 기본 설정됩니다. - check_duplicates(bool) 기본값은
TRUE.입니다. 동일한 ID를 가진 다른 유형의 요소가 이미 존재하는지 확인하고 “다른 유형의 요소 ID가 이미 존재합니다”라는 메시지와 함께 사용자 수준 알림(E_USER_NOTICE)을 출력합니다.
사용 예시
아래 예에서는
my_insert_posts() 함수를 사용하여 프런트엔드에서 두 개의 글을 삽입합니다. 하나는 원본이고 다른 하나는 번역입니다.
이 함수는 element_connect_on_insert()에서 호출됩니다. 이것은 두 글을 함께 연결하는 기본 함수입니다. 내부에 사용된 두 가지 다른 유용한 WPML 훅에 유의하세요. 요소 유형을 WPML이 이해할 수 있는 값으로 필터링하는 wpml_element_type 필터와 원본 trid 및 언어 코드를 검색하는 wpml_element_language_details 필터입니다. 이 모든 것이 wp_footer에 연결되므로 프런트엔드에 바닥글이 로드될 때 필터와 작업이 실행됩니다.
예
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 );
}
}
관련 훅
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