WPML
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

모든 콘텐츠 삽입 훅 10개 →