WPML
apply_filters( 'wpml_copy_post_to_language', int $post_id, string $target_language, bool $mark_as_duplicate )
Tipo
filter
Versione di WPML
4.0.0

Descrizione

Questo hook di filtro permette agli sviluppatori di copiare un articolo in una lingua specificata con WPML. Duplica l’articolo nella lingua di destinazione e offre l’opzione di contrassegnarlo come duplicato o come traduzione.

Argomenti

$post_id
(int) (Obbligatorio) L’ID dell’articolo da copiare.
$target_language
(string) (Obbligatorio) Il codice della lingua di destinazione in cui verrà copiato l’articolo.
$mark_as_duplicate
(bool) (Obbligatorio) Se impostato su true, l’articolo duplicato verrà contrassegnato come duplicato dell’articolo originale. Se false, verrà trattato come un articolo tradotto.

Esempio di utilizzo

Nell’esempio seguente, utilizziamo il filtro per copiare un articolo con ID 1 in francese e contrassegnarlo come duplicato dell’articolo originale.

Esempio
$duplicate_post_id = apply_filters( 'wpml_copy_post_to_language', 1, 'fr', true );

Nell’esempio avanzato riportato di seguito, mostriamo come duplicare automaticamente un determinato articolo in tutte le altre lingue attive sul tuo sito WPML, escludendo la lingua originale dell’articolo.

Esempio avanzato
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

Tutti i 10 hook della categoria Inserimento di contenuti →