【WordPress】管理画面のページが投稿ページか固定ページか判断する方法

【WordPress】管理画面のページが投稿ページか固定ページか判断する方法

2018.3.7

僕が作っているテーマの投稿毎の設定項目で、

「投稿ページ作成画面では出すけど固定ページ作成画面では出さない」

といった制御をするためにやったことのメモです

管理画面で「投稿」「固定ページ」を判断する

投稿テンプレート内で「投稿」なのか、「固定ページ」なのかを判断するためにはis_singleis_pageなどを使いますが、管理画面ではそうはいきません

管理画面内で分岐に使えそうなグローバル変数はいくつかあるのですが、今回は$post_typeを使ってみたいと思います

https://wpdocs.osdn.jp/%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E5%A4%89%E6%95%B0#Admin_Globals
function example() {
    global $post_type;
    if ( 'post' === $post_type ) {
        //投稿ページの時のなにか
    }
    if ( 'page' === $post_type ) {
        //固定ページの時のなにか
    }
}

使い方は至ってシンプル。

global $post_type;でグローバル変数を参照して、あとは投稿タイプかどうかIF文で分岐させてあげればOKです

変数の中身を確認する

試しに変数の中身を確認してみます

function notices_post_type() {
    global $post_type; ?>
    <div class="updated">
        <p>is_single : <?php var_dump( is_single() ); ?></p>
        <p>is_page   : <?php var_dump( is_page() ); ?></p>
        <p>post_type : <?php echo $post_type; ?></p>
    </div>
    <?php
}
add_action( 'admin_notices', 'notices_post_type' );

ページ上部に案内表示を出すようなコードをfunctions.phpに書いてみます

管理画面の投稿編集ページ
管理画面の固定ページ編集画面

試しにis_singleis_pageの結果も出してみましたが、どちらもfalseのままですね

$post_typeは投稿の場合はpost、固定ページの場合はpageがセットされていました

この方法を使えば、投稿と固定ページで設定が1個だけ違うmeta_boxなどを作る時にサクッと出来てよろしいのではないでしょうか

ではまた。