サポート » 使い方全般 » カスタム投稿のデフォルトの記事並び順を変えたい

  • 解決済 yuki

    (@yuki84yuki)


    管理画面のカスタム投稿一覧で、日付書式のカスタムフィールドを項目として表示出来るように追加しました。
    このカスタムフィールドでソートする機能も付けましたが、可能であれば最初からカスタムフィールドの値でソートされた状態で一覧を表示したいのですが、どのようにすればよいでしょうか?
    (現在はデフォルトの更新日時でソートされている状態です)

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック投稿者 yuki

    (@yuki84yuki)

    ありがとうざいます。

    >//クエリがあるかどうか調べて、なかったら(無限ループになるので)
    という記述がありましたが、カスタム投稿一覧では”wp-admin/edit.php?post_type=スラッグ”というようにクエリが付与されるので、無限ループになってしまうようです。

    すいません、yuki84yukiさん。

    検証はしてなかったのですが、とりあえず試してみました。
    アドレスが、リダイレクトされませんでした。

    それで、投稿一覧にカラムを追加して降順、昇順を付けてみたのですが、
    ちゃんと並び変わりませんでした。

    お役に立てず申し訳ありません。

    ioxrxogiさんが提示してくださった参考記事のほうで
    nobitaさんがチラッと書いていらっしゃいますけど、
    pre_get_posts を使ってできますよ。

    以下をfunctions.phpに追記してみてください。
    他に書いているコードとの関係でNGなこともあるかもしれませんけど。

    
    // 管理画面での表示リスト順変更
    add_action( 'pre_get_posts', 'custom_post_sort' );
    function custom_post_sort( $query ) {
    	if ( ! $query->is_main_query() ) 
    		return;
    
    	elseif ( is_admin()
    	 && ( isset( $query->query_vars['post_type'] ) && $query->query_vars['post_type'] == '【カスタム投稿タイプ名】' ) ) {
    		$query->set( 'meta_key', '【カスタムフィールド名】' );
        	$query->set( 'orderby', 'meta_value_num' );
        	$query->set( 'order', 'DESC' ); // 降順
    	}
    
    }
    

    Pineapplenさん、試してみました。

    わたしの環境ではちゃんと動きました。
    あとは、yuki84yukiさんの環境で動くかどうかですね。

    トピック投稿者 yuki

    (@yuki84yuki)

    – $query->set( ‘orderby’, ‘meta_value_num’ );
    + $query->set( ‘orderby’, ‘【カスタムフィールド名】’ );

    として試して上手くいきました。
    ioxrxogi さん、Pineapplen さん、ありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「カスタム投稿のデフォルトの記事並び順を変えたい」には新たに返信することはできません。