Bonjour à tous!

J'aurais besoin d'un petit coup de main pour l'affichage d'éléments sur la home page d'un site wordpress.

La page d'accueil du site présente tous les articles du blog classés par catégorie.

Je souhaiterais que tous les articles soient classés par date de publication à l'exception de la catégorie "À découvrir" ( catégorie: decouvrir ) où j'aimerai que le tri soit aléatoire.

Voici le code complet de ma page:

<?php get_header(); ?>

    <div class="container">

        <div id="content">

            <?php
                $categories = get_categories( array(
                    'orderby' => 'slug',
                    'order'   => 'ASC'
                ) );
            ?>

            <div class="col-md-12">
                <h1 id="h1home">Visitez <strong>St-Cyprien,</strong><br> certainement le meilleur quartier de Toulouse.</h1>
                <h2 id="pres_home">Qu’ils soient commerçants ou habitants, à Saint-Cyprien, il n’y a que des voisins.<br/>
Ce quartier populaire a l’âme d’un faubourg et l’étoffe d’un village. Loin des guerres de clochers, il y règne comme une ambiance de marché. On y vit ou on y vient, on y sort ou on y dort car l’attractivité de Saint-Cyprien n’a d’égal que sa simplicité.<br/>
En d’autres termes, et sans prétention ni chauvinisme, il s’agit certainement du meilleur quartier de Toulouse.</h2>
            </div>

            <?php if(get_theme_mod( 'sp_featured_slider' ) == true) : ?>
                <?php get_template_part('inc/featured/featured'); ?>
            <?php endif; ?>

            <div id="main" <?php if(get_theme_mod('sp_sidebar_homepage') == true) : ?>class="fullwidth"<?php endif; ?>>

                <ul class="sp-grid">
                        <?php

                            $tab_num = array(
                                0 => array(
                                    'num' => 3,
                                    'template' => 'grid-trois'
                                ),
                                1 => array(
                                    'num' => 4,
                                    'template' => 'grid-quatre'
                                ),
                                2 => array(
                                    'num' => 6,
                                    'template' => 'grid-six'
                                )
                            );

                            $i = 0;

                            foreach( $categories as $category ) {

                                if( ($category->count) >= 2 && $category->slug !== 'boutiques'){

                                 $category_link = sprintf(
                                    '<a href="%1$s" alt="%2$s" class="link_tous">%3$s</a>',
                                    esc_url( get_category_link( $category->term_id ) ),
                                    esc_attr( sprintf( __( 'View all posts in %s', 'textdomain' ), $category->name ) ),
                                    esc_html( 'Voir tous' )
                                );
                        ?>

                        <div class="col-md-12">
                            <h2 class="cat-name"><?php echo $category->name ?></h2>
                            <?php echo sprintf( esc_html__( '%s', 'Voir tous' ), $category_link ); ?>
                        </div>
                            <ul class="sp-grid">

                                <?php
                                $query = new WP_Query( array( 'posts_per_page' => $tab_num[$i][num], 'category_name' => $category->slug ) );
                                if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();

                                    get_template_part('content', $tab_num[$i][template]);

                                endwhile;
                                endif;
                                ?>
                            </ul>

                        <?php

                                if($i < 2){
                                    $i++;
                                }else{
                                    $i = 0;
                                }
                            }
                        }
                        ?>

                <!-- <div class="col-md-12"><h2>Actus</h2></div>
                <?php
                $query = new WP_Query( array( 'posts_per_page' => 3, 'category_name' => 'actus' ) );
                if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();

                    get_template_part('content', 'grid-trois');

                endwhile;
                endif;
                ?>

                <div class="col-md-12"><h2>À découvrir</h2></div>
                <?php
                $query = new WP_Query( array( 'posts_per_page' => 4, 'category_name' => 'decouvrir' ) );
                if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();

                    get_template_part('content', 'grid-quatre');

                endwhile;
                endif;
                ?> -->

                <!-- C'est bientôt -->
                    <!-- <div class="col-md-12"><h2>C'est bientôt</h2></div>
                    <?php
                    $query = new WP_Query( array( 'posts_per_page' => 3, 'category_name' => 'bientot' ) );
                    if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();

                        get_template_part('content', 'grid-trois');

                    endwhile;
                    endif;
                    ?> -->

                <!-- Patrimoine -->
                    <!-- <div class="col-md-12"><h2>Patrimoine</h2></div>
                    <ul class="sp-grid">
                        <?php
                        $query = new WP_Query( array( 'posts_per_page' => 6, 'category_name' => 'patrimoine' ) );
                        if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();
                            $i = 1;
                            get_template_part('content', 'grid-six');

                        endwhile;
                        endif;
                        ?>
                    </ul> -->
                <!-- FIN Patrimoine -->

                <!-- Restau -->
                    <!-- <div class="col-md-12"><h2>Restaurants</h2></div>
                    <?php
                    $query = new WP_Query( array( 'posts_per_page' => 3, 'category_name' => 'restos' ) );
                    if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();

                        get_template_part('content', 'grid-trois');

                    endwhile;
                    endif;
                    ?> -->
                <!-- Fin restau -->

                <!-- Sorties -->
                <!--     <div class="col-md-12"><h2>Sorties</h2></div>
                    <ul class="sp-grid">
                        <?php
                        $query = new WP_Query( array( 'posts_per_page' => 4, 'category_name' => 'sorties' ) );
                        if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();

                            get_template_part('content', 'grid-quatre');

                        endwhile;
                        endif;
                        ?>
                    </ul> -->
                <!-- Fin Sorties -->

                <?php if(get_theme_mod( 'sp_promo' ) == true) : ?>
                            <?php get_template_part('inc/promo/promo'); ?>
                        <?php endif; ?>

                <?php if(get_theme_mod('sp_home_layout') == 'grid' || get_theme_mod('sp_home_layout') == 'full_grid') : ?></ul><?php endif; ?>

                    <!-- <?php solopine_pagination(); ?> -->

            </div>

<?php if(get_theme_mod('sp_sidebar_homepage')) : else : ?><?php get_sidebar(); ?><?php endif; ?>

<?php get_footer(); ?>

J'ai essayé d'utiliser un 'orderby' => 'rand' à la ligne 37 et 104 mais cela n'a rien fait... J'ai également tenté à la ligne 70 mais cela affiche aléatoirement le tous les articles et non uniquement ceux d'une seule catégorie...

Si vous avez 5 minutes pour y jeter un coup d'oeil et me donner votre avis ou une solution à mon problème je vous en serai très reconnaissant.

Un grand merci par avance pour votre aide!

1 réponse


Tu rajoute un Order by Random pour ta category.

$query = new WP_Query( array( 'posts_per_page' => 3, 'category_name' => 'decouvrir ', 'orderby' => 'rand ' ) );