do_action( 'wpml_set_element_language_details', array $args )
- סוג
- action
- קטגוריה
- הכנסת תוכן
- גרסת WPML
- 3.2.7
תיאור
הוק הפעולה מאפשר להגדיר או לעדכן את פרטי השפה של אלמנט. מלבד השימוש הישיר והמובן מאליו שלו, ההוק עשוי להיות שימושי כאשר יש צורך לקשר בין שני אלמנטים כך שאחד מהם הוא “תרגום של” השני. עיין בסעיף “דוגמה לשימוש בהוק” להלן כדי לראות דוגמה לכך.
ארגומנטים
- $args
- (מערך) (נדרש) מערך של ארגומנטים לשימוש.
- 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) ומוציאה הודעה ברמת המשתמש (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