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:
Danke im Voraus!
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:
dt_connection_map
Meta, die verwendet werden können, um die Remote-Post-ID abzurufen.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.
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:
dt_connection_map
Meta, die verwendet werden können, um die Remote-Post-ID abzurufen.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
unddt_subscription_post_args
.Um den richtigen Metawert auf der Remote-Site zu aktualisieren, haken Sie
dt_process_distributor_attributes
unddt_process_subscription_attributes
.Für Ihre Fragen:
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 mitpull
tun. Der Distributor verwendet den Endpunkt "Posts" , um die Post-Daten fürpull
, siehe dies .Sie haben beispielsweise ein Taxonomiefeld (mit ACF) mit dem Namen
test_meta
, dasproject_category
TaxonomieÜ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!