web-dev-qa-db-fra.com

Comment accéder à une position spécifique dans wp_query?

Contexte:

J'essaie d'afficher des images dans un diaporama et je souhaite sélectionner ces images au hasard sur le support du site Web. L'image a un champ personnalisé afin d'être sélectionné pour être le diaporama.

J'ai pu comprendre tout cela, et j'ai utilisé un wp_query pour trouver toutes les images avec le champ personnalisé qui dit que cela pourrait être utilisé dans le diaporama.

Question:

Maintenant, mon problème est de savoir comment faire pour passer en boucle dans la requête afin d’obtenir le numéro de message que je veux.

Code:

$args = array(
   'post_type' => 'attachment',
   'meta_key' => 'on_front_page',
   'meta_value' => '1'
);
$wp_query = new WP_Query($args);
$total_images = (int) $wp_query->found_posts;
if ($total_image >= 6) {
    for ($i = 0; $i < 6; $i++) {
        Rand(0, $total_images);
    }
} 
elseif ($total_image >= 6) {
    for ($i = 0; $i < $total_image; $i++) {
       Rand(0, $total_images);
   }
 }
1
benj rei

Je pense qu'au lieu d'utiliser PHP Rand, mieux vaut limiter (si nécessaire) à l'aide de posts_per_page, puis obtenir un ensemble aléatoire à l'aide de orderby => 'Rand'.

Liste complète des paramètres de commande

Donc, si je modifiais votre requête, elle ressemblerait à ceci:

$args = array(
   'post_type'  => 'attachment',
   'meta_key'   => 'on_front_page',
   'meta_value' => '1'
   'orderby'    => 'Rand'
   'posts_per_page' => 6
);

$slides = new WP_Query($args);
$total_images = (int) $slides->found_posts;

if( $slides->have_posts() ) {
    while( $slides->have_posts() ) {
        echo $post->ID;  // The Attachment ID
    }
}
3
Howdy_McGee