array_rand funktioniert nicht richtig?

Ich möchte auf jeder Seite einen anderen Inhalt anzeigen. Um dies zu erreichen, habe ich die PHP array_rand() -function verwendet.

Ich habe Posts gelesen und Inhalt in einem Wert gespeichert, indem ich den folgenden Code verwendet habe. Wenn ich den Wert vor array_rand() , zeigt es den ersten Post-Inhalt, aber in array_rand() wenn ich die zufällige functionalität ausgibt, funktioniert aber eine zufällige Zahl zeigt. Ich glaube, es ist Post-Count. Die angezeigte Mindestanzahl ist 0 und die maximale Anzahl ist 2, es gibt 3 Beiträge.

Überprüfen Sie dies hier und der Code, den ich verwendet habe, ist.

  '-1', 'order'=> 'ASC', 'orderby'=>'menu_order', 'paged' => $paged, 'post_type' => 'Didyouknows' ); $loop = new WP_Query( $args ); $posts = $loop->get_posts(); foreach($posts as $post){ //print_r($loop);exit; //echo $loop->['ID']; $rval[]= $post->post_content; //print_r($rval);exit; //echo $loop[post_content]; //print_r($rval);exit; $rand = array_rand($rval); //echo $rval[$rand[0]]; //echo $rand; } ?> 

Wo gehe ich falsch?

Solutions Collecting From Web of "array_rand funktioniert nicht richtig?"

Einen einzelnen zufälligen Post zu erhalten wäre viel effizienter als alle Posts zu bekommen und dann einen zufälligen Post aus der Anfrage zu ziehen. Hier ist eine aktualisierte WP_Query- Instanz mit 'orderby' => rand :

 $args = array( 'orderby' => 'rand', 'posts_per_page' => '1', 'paged' => $paged, 'post_type' => 'Didyouknows', // Post type names should never use capital letters, btw ); $loop = new WP_Query( $args ); if ( $loop->have_posts() ) { while ( $loop->have_posts() ) { $loop->the_post(); ?> 

< ?php the_content(); ?>

< ?php } } wp_reset_postdata();

In Ihrem ursprünglichen Code sehen Sie die Werte von 0, 1 und 2, die die möglichen Schlüssel für Elemente in Ihrem $rval Array darstellen. Sie sollten $rand = array_rand($rval); aus der foreach Schleife und etwas tun wie:

 

< ?php echo $rval[ $rand ]; ?>

Die erste Lösung mit WP_Query und 'orderby' => 'rand' ist jedoch vorzuziehen.