web-dev-qa-db-ja.com

投稿の並べ替えアルファベット順

約2700の投稿があるとしましょう(2600の投稿が文字で始まり、100の投稿が数字で始まると仮定します。また、A、B、C、...のように100の投稿があります)。

タイトルの最初の文字に従って投稿を一覧表示するページを作成します。

www.website.com/post-lists-Numbers/は、#で始まる投稿のリストを示します。
www.website.com/post-lists-A/Aで始まる投稿のリストを示します。
www.website.com/post-lists-B/Bで始まる投稿のリストを示します。
.
.
.
www.website.com/post-lists-Z/Zで始まる投稿のリストを示します。

これに対する素早い解決策として、このプラグインを使用できることを知っています "アルファベットのページ付け"

しかし、私は何か新しいことを学び、基本をクリアしてカスタムコードを修正できるようにしたいです。

さらに、私はすべての投稿をページ付けして、 "letter"ページの各文字の50投稿に分割したいと思います。

1
Edogawa Kudo

このスレッドを読んだことがありますか? 与えられた文字で始まるすべての投稿を表示しますか?

これは WP_Query を使用して簡単に行うことはできませんし、それがページネーションを維持するのに役立つので残念です。

// 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>';
}

あなたは wpdbを使うことができます

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

そして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()はこの種のことをするときに使うべきもう一つの良いものです。

3
admcfajn