てくてくあるく

WordPress の テーマ とか プラグイン に ついて 勉強しています

今日 カスタム投稿タイプ で news を 作ってたら デフォルト の 並び順 が 公開日順 じゃなかった …
というわけで 並び順 を 変えてみる


$query の 中身を 調べてみた


とりあえず 現状 どのようになってるか 調べてみた

add_action( 'pre_get_posts', function( $query ) {
  if( $query->is_admin && $query->is_main_query() ) {
    if ( isset ( $_GET['query'] ) ) {
      var_dump( $query );
    }
  }
} );

~/edit.php?post_type=news~/edit.php?post_type=news&query って 追加して query を 表示してやると “orderby” が “memu_oeder title” に なってた


並び順を 投稿日順にする


ってなわけで 並び順を 変えたいのだが
標準でついている ソート機能を 殺さないようにしたい

浅はかな考えだけど ソートするとき ~/edit.php?post_type=news&orderby=title&order=asc みたいになるので
$_GET[‘orderby’] が あるかどうか 調べて なければ 上書きしてしまうことにしました

add_action( 'pre_get_posts', function( $query ) {
  if( $query->is_admin && $query->is_main_query() ) {
    if ( ! isset( $_GET['orderby'] ) ) {
      if( $query->is_post_type_archive( 'news' ) ) {
        $query->query_vars['order'] = 'DESC';
        $query->query_vars['orderby'] = 'date';
      }
    }
  }
} );

これで 公開日順 に 並びました


あと やたらめったら 「の」 で つなげる 癖なんとかしないといけないの!!

Related Article

今更だけど Vagrantで 開発環境 の ベースを 作ってみた ( 2 )

詳細へ »

Docker で 開発環境 の ベースを 作ってみた (4)

詳細へ »

WordPress の 管理画面 の メニュー に有る 投稿 の ラベル を 変更する方法

詳細へ »