do_action( 'wpml_set_element_language_details', array $args )
- Typ
- action
- Kategorie
- Einfügen von Inhalten
- WPML-Version
- 3.2.7
Beschreibung
Der Action-Hook ermöglicht es, die Sprachinformationen eines Elements festzulegen oder zu aktualisieren. Abgesehen von seiner naheliegenden Verwendung kann sich der Hook als nützlich erweisen, wenn man zwei Elemente verbinden muss, wobei das eine als „Übersetzung von“ dem anderen fungiert. Ein Beispiel hierfür finden Sie weiter unten im Abschnitt „Beispiel für die Verwendung des Hooks“.
Argumente
- $args
- (array) (Erforderlich) Ein Array der zu verwendenden Argumente.
- element_id(bool) Verwenden Sie term_taxonomy_id für Taxonomien, post_id für Beiträge
- element_type(string) Der Typ eines Elements. Kann ein Beitragstyp sein: post_post, post_page, post_attachment, post_nav_menu_item, post_{benutzerdefinierter Beitrags-Key} oder eine Taxonomie: tax_category, tax_post_tag, tax_nav_menu, tax_{benutzerdefinierter Taxonomie-Key}. Standardmäßig
post_post, falls nicht festgelegt. - trid(int) Die trid, der das Element zugewiesen werden soll. Wenn auf
FALSEgesetzt, wird eine neue trid für das Element erstellt, wodurch alle potenziellen Übersetzungsbeziehungen zu/von diesem Element verschwinden. - language_code(string) Der Sprachcode für das Element
- source_language_code(string) Der Ausgangssprachcode für das Element.
NULList für Originalelemente reserviert, d. h. Elemente, die keine Übersetzung eines anderen sind. StandardmäßigNULL, wenn nicht festgelegt. - check_duplicates(bool) Standardmäßig
TRUE.. Dadurch wird geprüft, ob bereits ein anderes Element eines anderen Typs mit derselben ID existiert, und es wird eine Notiz auf Benutzerebene (E_USER_NOTICE) mit der Meldung „Element ID already exists with a different type“ ausgegeben.
Anwendungsbeispiel
Im folgenden Beispiel verwenden wir die Funktion
my_insert_posts(), um zwei Beiträge über das Frontend einzufügen. Ein Original und eine Übersetzung.
Diese Funktion wird in element_connect_on_insert() aufgerufen. Dies ist unsere Hauptfunktion, die die beiden Beiträge miteinander verbindet. Beachten Sie die Verwendung von zwei weiteren nützlichen WPML-Hooks darin. Der Filter wpml_element_type zum Filtern des Elementtyps auf einen Wert, den WPML versteht, und der Filter wpml_element_language_details zum Abrufen der ursprünglichen trid und des Sprachcodes. All dies wird in wp_footer eingehängt, sodass unsere Filter und Aktionen ausgelöst werden, wenn der Footer im Frontend geladen wird.
Beispiel
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 );
}
}
Verwandte Hooks
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