web-dev-qa-db-fra.com

Ordre défini par l'utilisateur sur get_categories?

Vous trouverez ci-dessous un code de base pour appeler des catégories spécifiques dans notre boucle de publication de page d'accueil. Cela fonctionne bien, sauf que mon client souhaite que les catégories soient affichées dans un ordre particulier. Je sais qu'il existe d'autres articles à ce sujet sur Internet, mais je n'en ai pas vu qui réponde à la demande de mon client.

Puis-je prendre la variable $ categories, créée dans le code ci-dessous, et simplement appeler ces objets dans un nouveau tableau?

Dans ce cas, les objets ont tous un numéro devant eux, comme:

[0] => values
[1] => values
[2] => values
....

lorsque la sortie est vidée.

Puis-je prendre cette sortie et simplement les appeler dans l'ordre que je veux? (ex: 1,3,4,2,5,0)

Code actuel:

`

    wp_reset_postdata();        
    /* top stories end */           

     $args = array(

        'child_of'                 => 0,
        'parent'                   => '',
        'hide_empty'               => 1,
        'hierarchical'             => 1,
        'orderby'                  => 'id',
        'order'                    => 'ASC',
        'include'                  => '12,13,14,15,16,1',
    ); 

     $categories = get_categories( $args );
 ?>

<?php
    echo '<div class="home-all-cat">';
     foreach( $categories as $cat)
     {
        $slug = $cat->slug ;
        echo '<div class="home-cat-item" >'; 
        echo '<span class="cat-title">'.$cat->name.'</span><span class="cat-archive-link"><a target="_blank" href="'.get_category_link( $cat->cat_ID ).'" title="'.$cat->name.'">Show all '.$cat->name.'</a></span>';
        echo do_shortcode('[blog number_posts="6" cat_slug="'.$slug.'" exclude_cats="1" title="" thumbnail="" excerpt="" excerpt_words="20" meta_all="no" meta_author="" meta_categories="" meta_comments="" meta_date="" meta_link="" paging="" scrolling="" strip_html="" blog_grid_columns="" layout="medium"][/blog]');
        echo '</div>';

     }
     echo '<div class="clear">';
     echo '</div>';
 ?>

`

1
Garrett

Je pense que la manière la plus saine et la plus simple de procéder consiste à supprimer la première valeur du tableau renvoyé, puis à l'ajouter à la fin du tableau renvoyé avant votre boucle foreach.

Pour que cela fonctionne, vous devrez trier vos catégories par ID car vous devez prendre la catégorie ID 1 et l'ajouter à l'arrière. Quelque chose comme ça va marcher

<?php
$args = array(
    'hierarchical'             => 1,
    'orderby'                  => 'id',
    'order'                    => 'ASC',
    'include'                  => '13,21,41,1',
); 

$categories = get_categories( $args );

$v = $categories[0];
    unset($categories[0]);
    $categories[0] = $v;


foreach( $categories as $cat) {
    echo $cat->slug ;
}
?>
1
Pieter Goosen