僕が作っているテーマの投稿毎の設定項目で、
「投稿ページ作成画面では出すけど固定ページ作成画面では出さない」
といった制御をするためにやったことのメモです
管理画面で「投稿」「固定ページ」を判断する
投稿テンプレート内で「投稿」なのか、「固定ページ」なのかを判断するためにはis_single
、is_page
などを使いますが、管理画面ではそうはいきません
管理画面内で分岐に使えそうなグローバル変数はいくつかあるのですが、今回は$post_type
を使ってみたいと思います
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_single
とis_page
の結果も出してみましたが、どちらもfalse
のままですね
$post_type
は投稿の場合はpost
、固定ページの場合はpage
がセットされていました
この方法を使えば、投稿と固定ページで設定が1個だけ違うmeta_boxなどを作る時にサクッと出来てよろしいのではないでしょうか
ではまた。