apply_filters( 'wpml_copy_post_to_language', int $post_id, string $target_language, bool $mark_as_duplicate )
- Type
- filter
- Catégorie
- Insertion de contenu
- Version de WPML
- 4.0.0
Description
Ce hook de filtre permet aux développeurs de copier un article dans une langue spécifiée avec WPML. Il duplique l’article dans la langue cible et offre l’option de le marquer comme duplicata ou comme traduction.
Arguments
Exemple d’utilisation
Dans l’exemple ci-dessous, nous utilisons le filtre pour copier un article avec l’ID 1 en français et le marquer comme un duplicata de l’article d’origine.
Exemple
$duplicate_post_id = apply_filters( 'wpml_copy_post_to_language', 1, 'fr', true );
Dans l’exemple avancé que vous voyez ci-dessous, nous montrons comment dupliquer automatiquement un article donné vers toutes les autres langues actives sur votre site WPML, à l’exclusion de la langue d’origine de l’article.
Exemple avancé
function myplugin_duplicate_copy_post_to_secondary_languages( $post_id, $mark_as_duplicate = false ) {
// Retrieve the post's element type, trid, and existing translations
$element_type = apply_filters( 'wpml_element_type', get_post_type( $post_id ) );
$trid = apply_filters( 'wpml_element_trid', null, $post_id, $element_type );
$translations = (array) apply_filters( 'wpml_get_element_translations', [], $trid, $element_type );
if ( ! $translations ) {
// Handle error or invalid values accordingly
return;
}
// Retrieve the active languages
$wpml_languages = (array) apply_filters('wpml_active_languages', [], 'orderby=id&order=desc');
foreach ( $wpml_languages as $language ) {
// Duplicate the post if no translation exists for the given language
if ( ! isset( $translations[ $language['language_code'] ] ) ) {
apply_filters(
'wpml_copy_post_to_language',
$post_id,
$language['language_code'],
$mark_as_duplicate
);
}
}
}
Hooks associés
wpml_set_element_language_details, wpml_make_post_duplicates, wpml_admin_make_post_duplicates, 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