ワードプレス様々な方法で記事(投稿)を並べ替えるPHPコードをご紹介します。

ワードプレスの投稿を修正日が新しい順に並べ替える

この場合下記のようなコードになります。

function my_sort_post($query)
{
    if (!is_admin() && $query->is_main_query()) {
        if (is_post_type_archive('カスタム投稿タイプのスラグ') && is_tax('カテゴリーのスラグ')) {
            $query->set('orderby', 'modified'); 
            $query->set('order', 'DESC'); 
        }
    }
}
add_action('pre_get_posts', 'my_sort_post');

pre_get_postsアクションで投稿を取得する直前に並べ替えのプログラムを割り込ませることができます。

if (is_post_type_archive(‘カスタム投稿タイプのスラグ’) && is_tax(‘カテゴリーのスラグ’)) { の部分は特定のカスタム投稿タイプや、カテゴリーのみ並べ替える為の条件を設定します。

$query->set(‘orderby’, ‘modified’); の部分が修正日で並び替えという意味になります。

$query->set(‘order’, ‘DESC’); の部分が新しい順(日時が大きい降順)にするという意味になります。

古い投稿順に並べ替える

この場合$query->set の2行が下記のようになります

$query->set('orderby',  'publish_date'); 
$query->set('order', 'ASC'); 

タイトル順並べ替える

日本語の場合はうまくいきませんが、タイトルがアルファベットや数字から始まる場合は有効です

$query->set('orderby', 'title'); 
$query->set('order', 'ASC'); 

コメント数順で並べ替える

$query->set('orderby', 'comment_count');
$query->set('order', 'DESC'); 

ランダムに並べ替える

$query->set('orderby', 'rand');

投稿者順で並べ替える

$query->set('orderby', 'author');
$query->set('order', 'ASC'); 

カスタムフィールドの番号で並べ替える

$query->set('meta_key', 'カスタムフィールドのメタキー');
$query->set('orderby', 'meta_value_num');
$query->set('order', 'ASC'); 

ご参考になりましたら幸いです。

WordPress ワードプレスのテーマやプラグインの作成・カスタマイズ、PHPコーディングのご依頼ご相談はWPドクターまでお気軽にお送りください