WPML
do_action( 'wpml_set_element_language_details', array $args )
Type
action
Version de WPML
3.2.7

Description

Le hook d’action permet de définir ou de mettre à jour les informations de langue d’un élément. Outre son utilisation directe, le hook peut s’avérer utile lorsque vous devez relier deux éléments, l’un étant la « Traduction de » l’autre. Reportez-vous à la section « Exemple d’utilisation du hook » ci-dessous pour en voir un exemple.

Arguments

$args
(array) (Requis) Un tableau d’arguments à utiliser.
  • element_id(bool) Utilisez term_taxonomy_id pour les taxonomies, post_id pour les articles
  • element_type(string) Le type d’un élément. Peut être un type de publication : post_post, post_page, post_attachment, post_nav_menu_item, post_{custom post key} ou une taxonomie : tax_category, tax_post_tag, tax_nav_menu, tax_{custom taxonomy key}. Prend la valeur post_post par défaut s’il n’est pas défini.
  • trid(int) Le trid auquel l’élément doit être assigné. S’il est défini sur FALSE, cela créera un nouveau trid pour l’élément, ce qui fera disparaître toute relation de traduction potentielle vers ou depuis celui-ci.
  • language_code(string) Le code de langue de l’élément
  • source_language_code(string) Le code de la langue source de l’élément. NULL est réservé aux éléments d’origine, c’est-à-dire aux éléments qui ne sont pas la traduction d’un autre. Prend la valeur NULL par défaut lorsqu’il n’est pas défini.
  • check_duplicates(bool) Prend la valeur TRUE. par défaut. Cela vérifie si un autre élément d’un type différent avec le même ID existe déjà et affiche une notification de niveau utilisateur (E_USER_NOTICE) avec le message « Element ID already exists with a different type »

Exemple d’utilisation

Dans l’exemple ci-dessous, nous utilisons la fonction my_insert_posts() pour insérer deux articles depuis l’interface publique. Un d’origine et une traduction. Cette fonction est appelée dans element_connect_on_insert(). Il s’agit de notre fonction principale qui reliera les deux articles ensemble. Notez l’utilisation de deux autres hooks WPML utiles à l’intérieur. Le filtre wpml_element_type pour filtrer le type d’élément vers une valeur que WPML comprendra et le filtre wpml_element_language_details pour récupérer le trid et le code de langue d’origine. Tout cela est accroché à wp_footer afin que nos filtres et actions se déclenchent lors du chargement du pied de page sur l’interface publique. Exemple
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

Les 10 hooks de la catégorie Insertion de contenu →