WPML
apply_filters( 'wpml_copy_post_to_language', int $post_id, string $target_language, bool $mark_as_duplicate )
Type
filter
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

$post_id
(int) (Requis) L’ID de l’article à copier.
$target_language
(string) (Requis) Le code de langue de la langue cible vers laquelle l’article sera copié.
$mark_as_duplicate
(bool) (Requis) Si défini sur true, l’article dupliqué sera marqué comme un duplicata de l’article d’origine. Si défini sur false, il sera traité comme un article traduit.

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
            );
        }
    }
}

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

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