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  
    )
);  

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'                  
            );

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.


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.


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.