WPML
apply_filters( 'wpml_copy_post_to_language', int $post_id, string $target_language, bool $mark_as_duplicate )
Typ
filter
WPML-Version
4.0.0

Beschreibung

Dieser Filter-Hook ermöglicht es Entwicklern, einen Beitrag mit WPML in eine bestimmte Sprache zu kopieren. Er dupliziert den Beitrag in die Zielsprache und bietet die Option, ihn als Duplikat oder als Übersetzung zu markieren.

Argumente

$post_id
(int) (Erforderlich) Die ID des zu kopierenden Beitrags.
$target_language
(string) (Erforderlich) Der Sprachcode der Zielsprache, in die der Beitrag kopiert wird.
$mark_as_duplicate
(bool) (Erforderlich) Wenn auf true gesetzt, wird der duplizierte Beitrag als Duplikat des ursprünglichen Beitrags markiert. Wenn false, wird er als übersetzter Beitrag behandelt.

Anwendungsbeispiel

Im folgenden Beispiel verwenden wir den Filter, um einen Beitrag mit der ID 1 ins Französische zu kopieren und ihn als Duplikat des ursprünglichen Beitrags zu markieren.

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

Im erweiterten Beispiel unten zeigen wir, wie Sie einen bestimmten Beitrag automatisch in alle anderen aktiven Sprachen auf Ihrer WPML-Website duplizieren, ausgenommen die Originalsprache des Beitrags.

Erweitertes Beispiel
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

Alle 10 Einfügen von Inhalten-Hooks →