web-dev-qa-db-fra.com

Création d'une metabox pour télécharger plusieurs images, en ignorant l'image sélectionnée

Ma question est fondamentalement identique à cette autre question ici , mais ma question est toujours légèrement différente. J'ai essentiellement un type de message personnalisé appelé "Packages" chaque paquet peut avoir un diaporama avec ses propres images.

Je comprends que les images sont téléchargées par le biais de l’éditeur de contenu multimédia (conformément à la réponse choisie aux questions associées), mais est-il possible d’obtenir uniquement une liste des images jointes au message qui NE SONT PAS l’image sélectionnée?

D'après ce que je comprends, la réponse à l'autre question obtiendrait toutes les images, y compris l'image présentée. Wordpress traite-t-il les images présentées différemment en arrière-plan afin que je puisse les exclure?

3

De manière générale, je choisirais de rechercher les pièces jointes au message, mais de ne pas joindre la pièce jointe qui est la vignette du message. WP fournit un moyen simple de trouver l'ID de vignette de publication avec get_post_thumbnail_id ( Réf. Codex ). Pour modifier le code de l'autre message, j'ajouterais le paramètre suivant au tableau $args afin d'empêcher l'interrogation de la pièce jointe miniature:

'post__not_in' => array(
    get_post_thumbnail_id($post->ID)
)

Le paramètre post__not_in "Spécifiera la publication à ne PAS récupérer." ( Réf. Codex )

Pour assembler le tout, le code ressemblerait à ceci:

$args = array(
    'post_type' => 'attachment',
    'numberposts' => null,
    'post_status' => null,
    'post_parent' => $post->ID,
    'post__not_in' => array(
        get_post_thumbnail_id($post->ID)
    )
);
$attachments = get_posts($args);
if ($attachments) {
    foreach ($attachments as $attachment) {
        echo apply_filters('the_title', $attachment->post_title);
        the_attachment_link($attachment->ID, false);
    }
}

Afin d'affiner davantage vos requêtes, je vous recommande fortement d'explorer la classe WP_Query ( Référence du Codex ). Son pouvoir n'a d'égal que sa facilité d'utilisation.

5
tollmanz

Vous pouvez utiliser le code de cette autre question et filtrer l’image sélectionnée en consultant l’ID de vignette de publication.

foreach ($attachments as $attachment)
{
    // Skip the post thumbnail
    if ($attachment->id == get_post_thumbnail_id())
        continue;
}

Codex: get_post_thumbnail_id()

2
Geert