do_action( 'wpml_set_element_language_details', array $args )
- Type
- action
- Catégorie
- Insertion de contenu
- 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_postpar 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.
NULLest réservé aux éléments d’origine, c’est-à-dire aux éléments qui ne sont pas la traduction d’un autre. Prend la valeurNULLpar 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 );
}
}
Hooks associés
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