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 | コメントの数が多い順・少ない順で並び替える |