web-dev-qa-db-fra.com

Associer une image existante à un article

J'essaie d'associer une image existante de la médiathèque à un message (c'est un type de message personnalisé). Si j'utilise wp_insert_attachment, je reçois un duplicata dans la médiathèque, je reçois donc l'image id et je l'utilise comme attach_id.

$attach_id = intval( $file['id'] );
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
$result = wp_update_attachment_metadata( $attach_id,  $attach_data );

Cela ne fonctionne pas et le $result est faux.

Je suis sûr qu'il me manque quelque chose de simple. Quelqu'un peut-il m'éclairer?

2
Lee

Vous pouvez modifier une image de bibliothèque multimédia existante à l'aide de wp_insert_attachment en définissant la clé ID dans le tableau de paramètres.

$attachment = array(
    'ID' => $existing_library_attachment_id,
    'post_parent' => $custom_post_id
);
wp_insert_attachment( $attachment );

Ceci mettra à jour la pièce jointe avec l'ID $existing_library_attachment_id pour avoir une valeur post_parent de $custom_post_id. Cependant, la seule chose que cela affectera est le permalien du poste de fixation. À moins que vous ne fassiez quelque chose de plus pour modifier votre publication personnalisée, vous ne verrez aucune modification sur cette publication.

Voici certaines choses que vous pouvez faire pour joindre l’image à votre message:

  1. Pour faire de l'image la "photo sélectionnée" de votre message, utilisez la fonction set_post_thumbnail :

    set_post_thumbnail( $custom_post_id, $existing_library_attachment_id );
    
  2. Pour afficher la photo dans la zone de contenu de votre publication, vous devez modifier le contenu de la publication (avec wp_update_post , par exemple). Pour ajouter une image individuelle à votre message, vous pouvez ajouter une balise <img> (en utilisant éventuellement la fonction get_image_tag ). Si vous souhaitez ajouter une galerie, utilisez le shortcode [gallery] .

1
Ben Miller

J'ai décidé de l'afficher séparément et non comme un commentaire, car il sera perdu. J'ai essayé la solution de Ben mais celle-ci modifie les autres champs de données de la pièce jointe. J'ai fini par utiliser ceci.

            $attachment = array(
                'ID' => $att_id,
                'post_parent' => $custom_post_id,
            );

            $res = wp_update_post($attachment);
2

Cela peut être quelque chose que vous voulez faire via l'interface graphique plutôt que par programme. Le plugin suivant fera ce que Ben Miller a suggéré en définissant le post_parent sur l'ID de publication personnalisé.

Le plugin Unattach et Reattach Media Attachments fonctionne vraiment bien et intègre une action en bloc.

0
Brian Fegter