WPML
do_action( 'wpml_set_element_language_details', array $args )
Typ
action
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 FALSE gesetzt, 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. NULL ist für Originalelemente reserviert, d. h. Elemente, die keine Übersetzung eines anderen sind. Standardmäßig NULL, 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 );
	}
}

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

Alle 10 Einfügen von Inhalten-Hooks →