WordPressの管理画面内でのみ動くコードを追加したいとき

プログラミング

functions.phpなどに追加の機能を記述する時に、管理画面内でのみ(もしくは管理画面は除いて)コードが動くようにしたいときがあると思います。

そういうときには、

if ( is_admin() ) {
  // 管理画面でのみ動く
}

if ( !is_admin() ) {
  // 管理画面以外でのみ動く
}

を使用すればいいです。

 

この記事では、上記のコードを用いて「管理画面と管理画面外(訪問者が見るページ)で投稿の表示順を変更」する際のコードを例として紹介します。

管理画面の内外で投稿の表示順を変更する方法

コード例としては以下のとおりです。

このコードを使用すれば、訪問者向けのページでは更新した記事を上の方に持ってきて更新した記事を見てもらいやすくする一方で、管理画面内では投稿順に表示することで、記事を更新するたびに投稿の表示順がコロコロ変わって記事を探しにくくなるのを防ぐことができます。

function change_main_loop_sort_order_demo( $query ) {
  if ( $query->is_main_query() ) {
    if ( is_admin() ) {
      // 管理画面でのみ動く
      $query->set( 'orderby', 'date' );
    } else {
      // 管理画面以外でのみ動く
      $query->set( 'orderby', 'modified' );
    }  
  }
}
add_action( 'pre_get_posts', 'change_main_loop_sort_order_demo' );

順序の基準を変更する主なパラメータは次の通りです。

author著者で並び替える
titleタイトル順に並び変える
date投稿日時の新しい順(DESC)、
または古い順(ASC)に並び変える
modified更新日時の新しい順(DESC)、
または古い順(ASC)に並び変える
randランダムで並び替える
comment_countコメントの数が多い順・少ない順で並び替える
引用元:メインループにおける投稿の並び順を、タイトル・更新日・ランダムなど自由自在に変更する|The WordPress Press

(参考記事)WordPressインデックス(アーカイブ)ページの表示順を更新日順にするカスタマイズ方法|寝ログ

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