WordPress 管理画面内のカスタム投稿タイプの並び順を日付の降順ソートに変更する

プラグインや独自にカスタム投稿タイプを追加してWordPressサイトを運営していて管理画面内のカスタム投稿タイプの投稿一覧の並び順がタイトル順になっていて困ったことはありませんか?

ソート条件を変更したいカスタム投稿タイプごとに以下のサンプルのように functions.php 等に追加することでタイトル順から日付の降順ソートなど指定した順に変更することが可能です。

管理画面内のカスタム投稿タイプの並び順を日付の降順ソートに変更する

対象のカスタム投稿タイプの数が1つか2つの場合

/**
 * 管理画面内のカスタム投稿タイプの並び順を日付の降順ソートに変更する
 * 対象のカスタム投稿タイプの数が1つか2つの場合
 */
function ag_custom_post_type_order($wp_query) {
  if( is_admin() ) {
    $post_type = $wp_query->query['post_type'];
    if($post_type == 'news') {
        $wp_query->set('orderby','date'); //ソートの基準を設定:日付の場合は date
        $wp_query->set('order','DESC');   //ASC Or DESC で昇順・降順を設定
    }
  }
}
add_filter('pre_get_posts', 'ag_custom_post_type_order');

対象のカスタム投稿タイプの数が3つ以上ある場合

上記のサンプルとの違いは、取得した $post_type の判定に switch文を使っているところです。if文でも問題ありませんが、多くのカスタム投稿タイプがあると行が長くなってしまうこともありますので、私はスッキリかけるswitch文を好んで利用しております。

/**
 * 管理画面内のカスタム投稿タイプの並び順を日付の降順ソートに変更する
 * 対象のカスタム投稿タイプの数が3つ以上ある場合
 */
function ag_custom_post_type_order($wp_query) {
    if( is_admin() ) {
        $post_type = $wp_query->query['post_type'];
        switch ($post_type) {
            case 'staff':
            case 'news':
            case 'event':
                $wp_query->set('orderby','date'); //ソートの基準を設定:日付の場合は date
                $wp_query->set('order','DESC');   //ASC Or DESC で昇順・降順を設定
                break;
        }
    }
}
add_filter('pre_get_posts', 'ag_custom_post_type_order');

動作環境情報

エックスサーバー(x10)
PHP 7.3.16
MySQL 5.7
WordPress 5.4.2

コメント

タイトルとURLをコピーしました