Wie legen Sie eine übergeordnete Beitrags-ID für Anhänge im Code fest?

Ich habe eine importierte WordPress-Site mit ein paar Problemen geerbt. Ich habe eine Liste von Attachment-IDs und Post-IDs, aber ich muss sie im Code erneut verbinden.

Ich habe eine Liste aller Attachemnt wie folgt:

$attachments = get_posts( array('post_type' => 'attachment','posts_per_page' => -1)); foreach ( $attachments as $key=>$attachment ) { } 

Ich habe auch eine CSV von Anhangs-IDs, und welchen Beitrag sie beziehen sich auf. Jetzt sind alle Attachment-Eltern-Post-IDs “0”, was ich tun muss, ist jeden zu aktualisieren, so dass es Parnet-Post-ID ist die zugehörige ID in

Was ist der Schlüssel WordPress-function in dieser Schleife eine Attachemnts Parnet Post ID gesetzt? Stellen Sie dann sicher, dass das Update auch für alle Metadaten übernommen wird.

Ich möchte etwas wie …. set_attachemnt_parent_id ($ attachment-> ID, $ myIdFromArchives);

Danke für Ihre Hilfe!

Bearbeiten – Ich habe versucht, eine direkte Aktualisierung der database-ID, aber das funktioniert nicht.

Solutions Collecting From Web of "Wie legen Sie eine übergeordnete Beitrags-ID für Anhänge im Code fest?"

In WordPress – Anhänge sind ihre eigenen Post-Typ, was bedeutet, dass Sie nur den Beitrag mit wp_update_post() aktualisieren wp_update_post() :

 $media_post = wp_update_post( array( 'ID' => $attachment_id, 'post_parent' => $post_parent_id, ), true ); if( is_wp_error( $media_post ) ) { error_log( print_r( $media_post, 1 ) ); } 

Im obigen Beispiel würden Sie sowohl die Anhangs-ID als auch die wp_update_post() ID, die der Anhang “übergeordnet” ist, an die wp_update_post() -function übergeben, aber wir möchten auch sicherstellen, dass wir den WP_Error hinzufügen, wenn er aus irgendeinem Grund nicht aktualisiert werden kann das error_log, damit wir debuggen können, was schief gelaufen ist.

Sie können auch eine zusätzliche Überprüfung vor der function wp_update_post() , um sicherzustellen, dass die angegebene Anhangs-ID tatsächlich eine Anlage ist. Dies ist nur ein weiterer Check, also aktualisieren wir nicht versehentlich Dinge, die wir nicht benötigen:

 if( 'attachment' === get_post_type( $attachment_id ) ) { // Update Post Code }