Cassé? WP_Query et «pièce jointe» comme type de message

18

J'ai une galerie attachée à une page. Sur cette page, j'exécute la requête suivante:

$events_gallery = new WP_Query( // Start a new query for our videos
array(
    'post_parent' => $post->ID, // Get data from the current post
    'post_type' => 'attachment', // Only bring back attachments
    'post_mime_type' => 'image', // Only bring back attachments that are images
    'posts_per_page' => '3', // Show us the first three results
    'status' => 'inherit', // Inherit the status of the parent post 
    'orderby' => 'rand', // Order the attachments randomly  
    )
);

J'ai expérimenté plusieurs façons et, pour une raison quelconque, je ne peux pas obtenir de pièces jointes à retourner. Suis-je en train de manquer quelque chose d'évident ici?

Mise à jour*

Merci à Wok de m'avoir pointé dans la bonne direction.

Il s'avère que j'utilisais "status" au lieu de "post_status". Le codex avait utilisé "statut" comme exemple dans son explication contextuelle du type de poste "pièce jointe". J'ai mis à jour le codex pour référencer "post_status" à la place. Le code correct est le suivant:

$events_gallery = new WP_Query( // Start a new query for our videos
array(
    'post_parent' => $post->ID, // Get data from the current post
    'post_type' => 'attachment', // Only bring back attachments
    'post_mime_type' => 'image', // Only bring back attachments that are images
    'posts_per_page' => '3', // Show us the first three results
    'post_status' => 'inherit', // Attachments default to "inherit", rather than published. Use "inherit" or "any".
    'orderby' => 'rand', // Order the attachments randomly  
    )
);  
Jonathan Wold
la source
Je me demande quelle est la différence entre post_status mis à 'null' vs 'inherit' '
Wok
Tu m'as sauvé beaucoup de douleur avec 'post_status' => 'inherit' Merci!
Pat

Réponses:

14

Ce sont les paramètres de requête que j'utilise ... fonctionne pour moi lorsque je passe en revue les résultats

array(
                'post_parent' => $post->ID,
                'post_status' => 'inherit',
                'post_type'=> 'attachment',
                'post_mime_type' => 'image/jpeg,image/gif,image/jpg,image/png'                  
            );
Wok
la source
13

Ajoutez $args, c'est important.

'post_status' => 'any'

Ne pas: 'post_status' => null

Ceci est important parce que les pièces jointes ne sont pas post_status, la valeur par défaut post_status, published, trouveront pas de pièces jointes.

Pham
la source
Veuillez faire un effort pour expliquer la réponse, plutôt que de simplement poster une ou deux lignes de code.
s_ha_dum
Oui, comment ça marche? Je n'ai pas pu faire apparaître ma pièce jointe dans ma page d'archive tant que je ne l'ai pas ajoutée.
Claire
0

En regardant la requête qu'il génère, il semble que ce soit un bug de toutes sortes. 'status' => 'inherit' est interprété comme le statut du parent, lorsque l'entrée dans la base de données pour la pièce jointe est littéralement 'inherit'.

Une alternative consiste à utiliser get_children à la place de WP_Query.

Milo
la source
0

J'ai pu afficher toutes les images qui sont des pièces jointes à un message en utilisant ce code.

<?php
$args = array( 'post_type' => 'attachment', 'orderby' => 'menu_order', 'order' => 'ASC', 'post_mime_type' => 'image' ,'post_status' => null, 'post_parent' => $post->ID );
$attachments = get_posts($args);
    if ($attachments) {
    foreach ( $attachments as $attachment ) { ?>
      <img src="<?php echo wp_get_attachment_url( $attachment->ID , false ); ?>" />
<?php   }
    } ?>

Et pour faire écho à l'URL de l'image originale en taille réelle, vous pouvez lier cette image à

<?php echo wp_get_attachment_url( $attachment->ID , false ); ?>

J'espère que c'est une approche de ce que vous essayez de faire.

Chad Von Lind
la source
La pagination fonctionne-t-elle avec cela? Et pouvez-vous montrer le reste de votre code de sortie? Je suis en train de recoder une galerie de thèmes pour paginer les pièces jointes qui se trouvent sur la page. Merci!
Si je télécharge 4 images dans un message et que j'ajoute cela dans la div principale entrée de contenu dans single.php, cela crachera simplement 4 balises d'image. Le src = de chacun mènera à la grande taille d'image originale. La pagination ne fonctionne pas avec cela, car elle crache toutes les images jointes au message.
Chad Von Lind