¿Orden aleatorio en WordPress Loop?

4 minutos de lectura

Estoy usando el código de bucle básico en un archivo de taxonomía (artistas) y me preguntaba cómo puede configurar el bucle para mostrar publicaciones en orden aleatorio (‘orderby’ => ‘rand’) parece que no funciona cuando agregar la matriz? ¡Cualquier ayuda sería genial!

        <?php
                // Start the Loop.
                while ( have_posts() ) : the_post();

                    /*
                     * Include the post format-specific template for the content. If you want to
                     * use this in a child theme, then include a file called called content-___.php
                     * (where ___ is the post format) and that will be used instead.
                     */
                    array ( 'orderby' => 'RAND' );
                    get_template_part( 'content', get_post_format() );

                endwhile;
                // Previous/next page navigation.
                twentyfourteen_paging_nav();

            else :
                // If no content, include the "No posts found" template.
                get_template_part( 'content', 'none' );

            endif;
        ?>

avatar de usuario
Ravi Patel

 <?php  

$query = new WP_Query( array ( 'orderby' => 'rand', 'posts_per_page' => '-1' ) );

        if( $query->have_posts() ):
                // Start the Loop.
                while ( $query->have_posts() ) : $query->the_post();

                    /*
                     * Include the post format-specific template for the content. If you want to
                     * use this in a child theme, then include a file called called content-___.php
                     * (where ___ is the post format) and that will be used instead.
                     */

                    get_template_part( 'content', get_post_format() );

                endwhile;
                // Previous/next page navigation.
                twentyfourteen_paging_nav();

            else :
                // If no content, include the "No posts found" template.
                get_template_part( 'content', 'none' );

            endif;
        ?>

más info para consulta

  • deberías estar haciendo while ( $query->have_posts() ) : $query->the_post(); cuando se trata de costumbre wP_Query objeto.

    – Rikesh

    14 de marzo de 2014 a las 5:52

  • ¡Solución simple y limpia! Tenga en cuenta que el bucle se puede encontrar en diferentes archivos (por ejemplo, index.php, home.php, template-centered.php, etc.)

    – BurninLeo

    23 de junio de 2017 a las 8:25


  • Perfecto. ¡Gracias!

    – tonyedwardspz

    26 sep 2020 a las 17:32

query_posts(array( ‘showposts’ => 6, ‘orderby’ => ‘rand’, ‘category_name’ => ‘News’ //Puede insertar cualquier nombre de categoría));

Buena pregunta primero!

Puede hacerlo con la función de uso simple de PHP.
http://www.php.net/manual/en/function.shuffle.php

Siga el siguiente paso:

  1. Lo primero es obtener todas las publicaciones con consulta.
  2. Sabes que wordpress proporcionará el resultado en formato de matriz. Por lo tanto, no intente codificar más, es demasiado complicado.
  3. Ahora tiene una variedad de resultados, así que solo use la función aleatoria de PHP.
    http://www.php.net/manual/en/function.shuffle.php

Por favor, pregúnteme después de la implementación si tiene alguna consulta.

Gracias !

  • Eso no se aplica a lo que pide OP.

    – Rikesh

    14 de marzo de 2014 a las 5:51

avatar de usuario
contemporáneo

Prueba esto:

<?php

$args = array(
    'orderby' => 'rand'
);
$query = new WP_Query($args);

if (have_posts()) {     

    while ( $query->have_posts() ) : $query->the_post();

        get_template_part( 'content', get_post_format() );

    endwhile;
    // Previous/next page navigation.
    twentyfourteen_paging_nav();

else :
    // If no content, include the "No posts found" template.
    get_template_part( 'content', 'none' );

endif;

?>

Tienes dos formas de hacerlo. La primera forma no es la mejor, pero puede ser más fácil de entender para usted:

Usando WP_Query

<?php

$args = array(
    'orderby' => 'random'
    );

$query = new WP_Query( $args );

if( $query->have_posts() ):
    // Start the Loop.
    while ( $query->have_posts() ) : $query->the_post();

        get_template_part( 'content', get_post_format() );

    endwhile;
    // Previous/next page navigation.
    twentyfourteen_paging_nav();

else :
    // If no content, include the "No posts found" template.
    get_template_part( 'content', 'none' );

endif;

Aquí, usaremos un personalizado WP_Query objeto y orderby para obtener publicaciones aleatorias.


Usando pre_get_posts

La mejor manera de hacerlo es usando el pre_get_post acción para modificar la salida de la página automáticamente. Sin embargo, es posible que necesite algo más de codificación.

  • Si desea que todas sus publicaciones en cada categoría sean aleatorias, puede agregar una función pre_get_post a functions.php de la siguiente manera: add_action (‘pre_get_posts’, ‘randomise’); function randomise($consulta) { $consulta->set(‘orderby’, ‘rand’); }

    –Toby Beresford

    2 de noviembre de 2017 a las 11:35

  • Si desea que todas sus publicaciones en cada categoría sean aleatorias, puede agregar una función pre_get_post a functions.php de la siguiente manera: add_action (‘pre_get_posts’, ‘randomise’); function randomise($consulta) { $consulta->set(‘orderby’, ‘rand’); }

    –Toby Beresford

    2 de noviembre de 2017 a las 11:35

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad