web-dev-qa-db-fra.com

Comment définir un identifiant de poste parent dans le code?

J'ai hérité d'un site WordPress importé avec quelques problèmes. J'ai une liste d'identifiants d'attachement et de post mais je dois les reconnecter dans le code.

J'ai une liste de tous les attachemnt comme ceci:

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

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

J'ai également un csv d'ID d'attachement et à quel message ils se rapportent. Maintenant, tous les identifiants de poste d'attachement parent sont "0", ce que je dois faire est de mettre à jour chacun d'eux pour qu'il soit parnet post id est l'identifiant associé dans

Quelle est la fonction wordpress clé dans cette boucle définir un identifiant de poste parnet attachemnts? Et assurez-vous ensuite que la mise à jour est propagée à toutes les métadonnées.

Je veux quelque chose comme .... set_attachemnt_parent_id ($ attachment-> ID, $ myIdFromArchives);

Merci de votre aide!

Edit - J'ai essayé d'effectuer une mise à jour directe de l'ID de la base de données mais cela ne fonctionne pas.

2
Sean H

Dans WordPress - Les pièces jointes sont leur propre post-type ce qui signifie qu'il vous suffit de mettre à jour le post à l'aide de 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 ) );
}

Dans ce qui précède, vous passerez à la fois l’ID de pièce jointe et l’ID de publication qui seront la pièce jointe "parent" à la fonction wp_update_post(), mais nous voulons aussi nous assurer que si, pour une raison quelconque, il ne peut pas être mis à jour, nous ajoutons le WP_Error au error_log afin que nous puissions déboguer ce qui a mal tourné.

Vous pouvez également effectuer une vérification supplémentaire avant la fonction wp_update_post() pour vous assurer que l'identifiant de pièce jointe donné est bien une pièce jointe. Ceci est juste une autre vérification afin que nous ne mettions pas accidentellement à jour des choses dont nous n'avons pas besoin:

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