J'ai des problèmes avec une requête. Je souhaite obtenir les images attachées à un message individuel du type location .
Ma requête est interrompue car toutes les images du site entier sont générées:
$image_query = new WP_Query(
array(
'post_type' => 'attachment',
'post_status' => 'inherit',
'post_mime_type' => 'image',
'posts_per_page' => -1,
'post_parent' => $rental->post->ID,
'order' => 'DESC'
)
);
if( $image_query->have_posts() ){
while( $image_query->have_posts() ) {
$image_query->the_post();
$imgurl = wp_get_attachment_url( get_the_ID() );
echo '<div class="item">';
echo '<img src="'.$imgurl.'">';
echo '</div>';
}
wp_reset_postdata();
}
Des idées sur la façon dont je peux ajuster cela pour obtenir uniquement les images jointes au message actuel?
Votre problème est le paramètre post_parent
; s'il est défini sur 0 ou une valeur falsey telle que null, votre requête renverra tous les messages de niveau supérieur.
Il suffit donc de s’assurer que $ rental-> post-> ID a une valeur ou d’utiliser une approche différente, telle que la fonction get_the_ID()
.
Je ne peux pas vraiment vous en dire plus, car vous n'avez pas inclus la partie où vous avez défini $rental
$image_query = new WP_Query(
array(
'post_type' => 'attachment',
'post_status' => 'inherit',
'posts_per_page' => -1,
'post_parent' => get_the_ID(), // your issue here lays
)
);
Et consultez la documentation pour plus de détails: https://developer.wordpress.org/reference/classes/wp_query/#post-page-parameters
Oui, ça a aidé. J'ai remarqué que la fonction fonctionnait parfaitement sur un poste standard. En gros, j'ai fini par déplacer la fonction dans functions.php:
function get_rental_carousel_images($rental_id) {
// loosely based on http://martyspellerberg.com/2011/11/outputting-the-wordpress-attachments-gallery/
global $rental;
$images = get_children( array(
'post_parent' => $rental_id,
'post_status' => 'inherit',
'post_type' => 'attachment',
'post_mime_type' => 'image',
'order' => 'ASC',
'orderby' => 'menu_order ID'
) );
if ($images) :
foreach ($images as $attachment_id => $image) :
$img_url = wp_get_attachment_url( $image->ID );
?>
<img src="<?php echo $img_url; ?>" />
<?php endforeach; ?>
<?php endif;
puis la sortie des images dans mon modèle comme ceci:
<?php get_rental_carousel_images( get_the_ID() ); ?>