WPML
do_action( 'wpml_set_element_language_details', array $args )
النوع
action
إصدار WPML
3.2.7

الوصف

يتيح خطّاف الإجراء تعيين أو تحديث معلومات لغة العنصر. إلى جانب استخدامه الضمني المباشر، قد يكون الخطّاف مفيداً عندما تحتاج إلى ربط عنصرين بحيث يكون أحدهما «ترجمة» للآخر. راجع قسم «مثال على استخدام الخطّاف» أدناه للحصول على مثال على ذلك.

الوسطاء

$args
(مصفوفة) (مطلوب) مصفوفة من الوسائط لاستخدامها.
  • element_id(منطقي) استخدم term_taxonomy_id للتصنيفات، و post_id للمقالات
  • element_type(سلسلة نصية) نوع العنصر. يمكن أن يكون نوع منشور: 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(عدد صحيح) الـ trid الذي سيتم تعيين العنصر إليه. إذا تم تعيينه إلى FALSE، فسينشئ trid جديداً للعنصر مما يتسبب في اختفاء أي علاقات ترجمة محتملة منه أو إليه.
  • language_code(سلسلة نصية) رمز اللغة للعنصر
  • source_language_code(سلسلة نصية) رمز اللغة المصدر للعنصر. NULL محجوز للعناصر الأصلية، أي العناصر التي ليست ترجمة لعنصر آخر. قيمته الافتراضية هي NULL عند عدم تعيينه.
  • check_duplicates(منطقي) قيمته الافتراضية هي TRUE.. ما يفعله هذا هو التحقق مما إذا كان هناك عنصر آخر من نوع مختلف يحمل المعرف نفسه موجوداً بالفعل، ويُخرج إشعاراً على مستوى المستخدم (E_USER_NOTICE) بالرسالة «Element ID already exists with a different type»

مثال على الاستخدام

في المثال أدناه، نستخدم الدالة my_insert_posts() لإدراج مقالتين من الواجهة الأمامية. إحداهما أصلية والأخرى ترجمة. يتم استدعاء هذه الدالة في element_connect_on_insert(). هذه هي دالتنا الرئيسية التي ستربط المقالتين معاً. لاحظ استخدام خطّافي WPML مفيدين آخرين بالداخل. مرشِّح wpml_element_type لتصفية نوع العنصر إلى قيمة سيفهمها WPML ومرشِّح wpml_element_language_details لاسترداد الـ trid الأصلي ورمز اللغة. يرتبط كل هذا بالخطّاف 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 →