it-swarm.com.de

Wie kann ich eine übergeordnete Beitrags-ID für Anhänge im Code festlegen?

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

Ich habe eine Liste aller Anhänge wie folgt:

  $attachments = get_posts( array('post_type' => 'attachment','posts_per_page' => -1));

  foreach ( $attachments as $key=>$attachment ) {
  }

Ich habe auch eine CSV-Datei mit Anhangs-IDs und den dazugehörigen Beiträgen. Jetzt sind alle Post-IDs der Attahment-Eltern '0', was ich tun muss, ist, jedes zu aktualisieren, damit es die zugehörige ID in der Parnet-Post-ID ist

Was ist die wichtigste WordPress-Funktion in dieser Schleife? Stellen Sie dann sicher, dass das Update auch auf alle Metadaten übertragen wird.

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

Danke für Ihre Hilfe!

Bearbeiten - Ich habe versucht, die Datenbank-ID direkt zu aktualisieren, aber das funktioniert nicht.

2
Sean H

In WordPress - Anhänge sind ihr eigener Beitragstyp was bedeutet, dass Sie den Beitrag nur mit wp_update_post() aktualisieren müssen:

$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 Beitrags-ID übergeben, die als Anhang "übergeordnet" für die Funktion "wp_update_post()" fungieren. Wir möchten jedoch auch sicherstellen, dass, falls sie aus irgendeinem Grund nicht aktualisiert werden kann, der WP_Error hinzugefügt wird zum error_log damit wir debuggen können, was schief gelaufen ist.

Sie können auch eine zusätzliche Überprüfung vor der Funktion wp_update_post() durchführen, um sicherzustellen, dass die angegebene Anhangs-ID tatsächlich ein Anhang ist. Dies ist nur eine weitere Überprüfung, damit wir nicht versehentlich Dinge aktualisieren, die wir nicht benötigen:

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