Distributor: Erweiterung um Post-Meta-Zuordnungen zu unterstützen...

Erstellt am 8. Juli 2020  ·  3Kommentare  ·  Quelle: 10up/distributor

Hallo,

In den Vorbehalten gibt es einen Hinweis zu Post-Meta-Assoziationen, in denen angegeben wird, dass diese bei Übertragungen nicht "mitgebracht" werden. Da ich ein Netzwerk von Websites mit komplexen relationalen Metadaten entwickle (mit ACF), habe ich zwei Fragen:

  • Der Hinweis verweist auf "Push"-Überweisungen. Gilt das auch für "Pull"-Anfragen?
  • Gibt es ein Beispiel für die vorgeschlagene "Case-by-Case"-Erweiterung des Plugins? Ich würde es gerne ausprobieren, weiß aber nicht wo ich anfangen soll!

Danke im Voraus!

Reporter Feedback question

Hilfreichster Kommentar

Hallo @john-lynch-cp, wir haben einige interne Diskussionen zu diesem Thema, aber wir haben noch keine endgültige Richtung.

Der gespeicherte Metawert ist die ID des zugehörigen Objekts, die sich zwischen der ursprünglichen und der entfernten Site unterscheidet. Sie können dieses Problem lösen, indem Sie die Objekt-ID (den Metawert) durch die richtige auf der Remote-Site ersetzen:

  • Für Post: Wir haben dt_connection_map Meta, die verwendet werden können, um die Remote-Post-ID abzurufen.
  • Für Benutzer und Begriff können Sie Slug verwenden, um den richtigen Begriff auf der Remote-Site zu finden.

Sie können die Post-Meta vorbereiten (Post-ID ändern, Term-Slug hinzufügen, Benutzer-Login hinzufügen), indem Sie sich an dt_push_post_args und dt_subscription_post_args .

Um den richtigen Metawert auf der Remote-Site zu aktualisieren, haken Sie dt_process_distributor_attributes und dt_process_subscription_attributes .

Für Ihre Fragen:

Der Hinweis verweist auf "Push"-Überweisungen. Gilt das auch für "Pull"-Anfragen?

Die kurze Antwort ist nein, Push und Pull sind unterschiedlich. Obwohl es möglich ist, das gleiche Ergebnis von Push mit Pull zu erzielen, sind einige zusätzliche Schritte erforderlich, um die Post-Meta vorzubereiten. Für push , da Sie die ursprüngliche Site sind, können Sie vor dem Pushen zusätzliche Metadaten vorbereiten. Aber Sie können nicht dasselbe mit pull tun. Der Distributor verwendet den Endpunkt "Posts" , um die Post-Daten für pull , siehe dies .

Gibt es ein Beispiel für die vorgeschlagene "Case-by-Case"-Erweiterung des Plugins? Ich würde es gerne ausprobieren, weiß aber nicht wo ich anfangen soll!

Sie haben beispielsweise ein Taxonomiefeld (mit ACF) mit dem Namen test_meta , das project_category Taxonomie

add_action( 'dt_push_post_args', 'prepare_meta', 10, 2 );

function prepare_meta( $post_body, $post ) {
    $term_id = get_post_meta( $post->ID, 'test_meta', true );
    if( $term_id ) {
        $term = get_term_by( 'id', $term_id, 'project_category');
        $post_body['project_category_slug'] = $term->slug;
    }

    return $post_body;
}

add_action( 'dt_process_distributor_attributes', 'set_meta', 10, 2 );

function set_meta( $post, $request ) {
    $term = get_term_by( 'slug', $request['project_category_slug'], 'project_category' );
    if ( ! $term ) {
        return;
    }
    update_post_meta( $post->ID, 'test_meta', $term->term_id );
}

Übrigens, es gibt ein Add-On von Novembit, das dem obigen Beispiel ähnelt, aber komplizierter ist: https://github.com/NovemBit/distributor-acf-addon. Beachten Sie, dass dieses Addon nicht mit der aktuellen Version von Distributor kompatibel ist.

Ich hoffe das hilft!

Alle 3 Kommentare

Hallo @john-lynch-cp, wir haben einige interne Diskussionen zu diesem Thema, aber wir haben noch keine endgültige Richtung.

Der gespeicherte Metawert ist die ID des zugehörigen Objekts, die sich zwischen der ursprünglichen und der entfernten Site unterscheidet. Sie können dieses Problem lösen, indem Sie die Objekt-ID (den Metawert) durch die richtige auf der Remote-Site ersetzen:

  • Für Post: Wir haben dt_connection_map Meta, die verwendet werden können, um die Remote-Post-ID abzurufen.
  • Für Benutzer und Begriff können Sie Slug verwenden, um den richtigen Begriff auf der Remote-Site zu finden.

Sie können die Post-Meta vorbereiten (Post-ID ändern, Term-Slug hinzufügen, Benutzer-Login hinzufügen), indem Sie sich an dt_push_post_args und dt_subscription_post_args .

Um den richtigen Metawert auf der Remote-Site zu aktualisieren, haken Sie dt_process_distributor_attributes und dt_process_subscription_attributes .

Für Ihre Fragen:

Der Hinweis verweist auf "Push"-Überweisungen. Gilt das auch für "Pull"-Anfragen?

Die kurze Antwort ist nein, Push und Pull sind unterschiedlich. Obwohl es möglich ist, das gleiche Ergebnis von Push mit Pull zu erzielen, sind einige zusätzliche Schritte erforderlich, um die Post-Meta vorzubereiten. Für push , da Sie die ursprüngliche Site sind, können Sie vor dem Pushen zusätzliche Metadaten vorbereiten. Aber Sie können nicht dasselbe mit pull tun. Der Distributor verwendet den Endpunkt "Posts" , um die Post-Daten für pull , siehe dies .

Gibt es ein Beispiel für die vorgeschlagene "Case-by-Case"-Erweiterung des Plugins? Ich würde es gerne ausprobieren, weiß aber nicht wo ich anfangen soll!

Sie haben beispielsweise ein Taxonomiefeld (mit ACF) mit dem Namen test_meta , das project_category Taxonomie

add_action( 'dt_push_post_args', 'prepare_meta', 10, 2 );

function prepare_meta( $post_body, $post ) {
    $term_id = get_post_meta( $post->ID, 'test_meta', true );
    if( $term_id ) {
        $term = get_term_by( 'id', $term_id, 'project_category');
        $post_body['project_category_slug'] = $term->slug;
    }

    return $post_body;
}

add_action( 'dt_process_distributor_attributes', 'set_meta', 10, 2 );

function set_meta( $post, $request ) {
    $term = get_term_by( 'slug', $request['project_category_slug'], 'project_category' );
    if ( ! $term ) {
        return;
    }
    update_post_meta( $post->ID, 'test_meta', $term->term_id );
}

Übrigens, es gibt ein Add-On von Novembit, das dem obigen Beispiel ähnelt, aber komplizierter ist: https://github.com/NovemBit/distributor-acf-addon. Beachten Sie, dass dieses Addon nicht mit der aktuellen Version von Distributor kompatibel ist.

Ich hoffe das hilft!

@john-lynch-cp löst die obige Antwort Ihre Fragen so, dass wir dieses Problem abschließen können, oder haben Sie weitere Fragen?

Vielen Dank für die Nachverfolgung. Ich freue mich, dass Sie dies jetzt abschließen. Ich denke, wir suchen nach einem anderen CMS, da die Vertriebsherausforderung mit einem anderen Ansatz sinnvoller sein könnte.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen