web-dev-qa-db-fra.com

Liste des articles classés par ordre alphabétique sur archive.php

J'ai un tas de catégories avec des sous-catégories et des sous-sous-catégories que je veux lister sur mon archive.php. Les titres des sous-catégories sont répertoriés sur la page d’archive de la catégorie parente.

Il suffit de lister les titres liés des catégories et/ou des publications, rien de plus. Tout fonctionne parfaitement, mais à la dernière étape, je voudrais commander les messages réels par ordre alphabétique.

J'ai donc ce code dans mon archive.php

<?php
if (is_category()) {
    $this_category = get_category($cat);
}

$this_category = wp_list_categories('orderby=name&depth=1&show_count=0&title_li=&use_desc_for_title=1&child_of='.$this_category->cat_ID."&echo=0");

if ($this_category && $catlvl !=0) { ?> 
    <ul class="cat_options">
<?php 
if ($catlvl !=3){
    if ($catlvl == 1){
        // Do stuff
    }
    if ($catlvl == 2){
        // Do stuff
    }
} else {
    // Do stuff
    $wpex_count = 0;
    while ( have_posts() ) : the_post();
        $wpex_count++;

        // Get entry title ?>
        <li>
        <a href="<?php wpex_permalink(); ?>" title="<?php wpex_esc_title(); ?>" rel="bookmark"><?php the_title(); ?></a>
        </li> <?php                            

        // Reset counter to clear floats
        if ( wpex_blog_entry_columns() == $wpex_count ) {
            $wpex_count=0;
        }

    endwhile;
}
?>
</ul>
<?php }

Comment puis-je faire pour qu'il liste les messages par ordre alphabétique sur la dernière étape? Sur les pages où figurent les catégories, elles sont classées par ordre alphabétique.

Puis-je utiliser

$args = array( 'posts_per_page' => -1, 'orderby'=> 'title', 'order' => 'ASC' );

de https://codex.wordpress.org/Alphabetizing_Posts ici d'une manière ou d'une autre? Comment? Ou dois-je obtenir mes publications d'une autre manière?

Seules les publications de la catégorie actuelle doivent être répertoriées. Lorsque j'utilise la méthode dans le lien ci-dessus, il liste TOUTES les publications dans TOUTES les catégories.

1
Shmiiiii

Je vous suggère d'utiliser le crochet d'action pre_get_posts fourni par WordPress.

Ensuite, dans votre functions.php , ajoutez le code suivant ci-dessous:

function custom_pre_get_posts($query) {
    // validate
    if(!is_admin() && $query->is_main_query()) {

        if(is_archive()) {
            $query->set('orderby', 'title'); // order posts by title
            $query->set('order', 'ASC'); // and in ascending order
        }
    }
}
add_action('pre_get_posts', 'custom_pre_get_posts');

Vous pouvez en apprendre plus sur pre_get_posts dans ici

0
Den Isahac