web-dev-qa-db-fra.com

Tri des messages | Ordre alphabétique

Supposons que j'ai environ 2700 postes (en supposant que 2600 postes commencent par des lettres et 100 postes commençant par des chiffres. De plus, il y a 100 postes pour chaque lettre et chaque chiffre. Comme A, B, C, ... avoir 100 articles chacun.)

Je souhaite créer une page pour répertorier les messages en fonction de la première lettre de leur titre.

www.website.com/post-lists-Numbers/ affiche la liste des publications commençant par #.
www.website.com/post-lists-A/ affiche la liste des messages commençant par A.
www.website.com/post-lists-B/ affiche la liste des messages commençant par B.
.
.
.
www.website.com/post-lists-Z/ affiche la liste des messages commençant par Z.

Je sais que pour une solution rapide à cela, je peux utiliser ce plugin "Pagination Alphabétique"

Mais je veux apprendre quelque chose de nouveau et pouvoir effacer les bases et pouvoir modifier les codes personnalisés.

De plus, je souhaite paginer tous les messages en les divisant en 50 messages de chaque lettre dans la page "lettre".

1
Edogawa Kudo

Avez-vous lu ce fil? Afficher tous les articles commençant par une lettre donnée?

Ce ne serait pas simple à faire avec WP_Query et c'est dommage, car cela aiderait à préserver la pagination.

// Rules
$args = ['post_type'=>'post','orderby'=>'name'];

// The Query
$query1 = new WP_Query( $args );

// The Loop
while ( $query1->have_posts() ) {
    $query1->the_post();
    echo '<li>' . get_the_title() . '</li>';
}

Vous pouvez utiliser wpdb

global $wpdb;
$results = $wpdb->get_results( "SELECT ID FROM wp_posts WHERE post_title LIKE 'B%';", ARRAY_A );

& ensuite utiliser WP_Query

// Rules
$args = ['post_type'=>'post','post__in'=>$results];

// The Query
$query1 = new WP_Query( $args );

// The Loop
while ( $query1->have_posts() ) {
    $query1->the_post();
    echo '<li>' . get_the_title() . '</li>';
}

pre_get_posts() est un autre bon outil à utiliser pour faire ce genre de chose.

3
admcfajn