投稿タイプでの条件分岐で切り分けした時のものを書いた備忘録的な記事です
この記事の目次
投稿タイプの切り分け
下記の条件分け表示したいhogehogeを条件によって表示する
今回は「投稿タイプが※※である場合に表示」という条件とする
<?php
echo '<p>hogehoge</p>';
echo '<p>条件分け表示したいhogehoge</p>';
?>
関数で条件分岐する場合
関数を使用して、カスタム投稿hoge01の場合に表示する場合
<?php
echo '<p>hogehoge</p>';
if( is_singular('hoge01') ) {
echo '<p>条件分け表示したいhogehoge</p>';
}
?>
カスタム投稿hoge01またはhoge02の時に表示させる場合
<?php
echo '<p>hogehoge</p>';
if( is_singular('hoge01') || is_singular('hoge02') ) {
echo '<p>hoge01またはhoge02の時に表示します</p>';
}
?>
arrayでhoge01とhoge02を指定します
<?php
echo '<p>hogehoge</p>';
if( is_singular( array('hoge01', 'hoge02') ) ) {
echo '<p>hoge01とhoge02の時に表示します</p>';
}
?>
hoge01, hoge02以外を表示する場合(左記以外とデフォルト投稿)
<?php
echo '<p>hogehoge</p>';
if( !is_singular( array('hoge01', 'hoge02') ) ) {
echo '<p>hoge01とhoge02の時以外の場合表示します</p>';
}
?>
hoge01, hoge02以外(デフォルト投稿も含まない)を表示する場合
<?php
echo '<p>hogehoge</p>';
if( !is_singular( array('hoge01', 'hoge02') ) || !is_single() ) {
echo '<p>hoge01とhoge02とデフォルト投稿の時以外の場合表示します</p>';
}
?>
オブジェクトを取得して条件分岐する場合
カスタム投稿hoge01の場合に表示する場合、演算子を使ってあらわす
<?php
//そのページのWPオブジェクトを取得
$wp_obj = get_queried_object();
//そのページの投稿タイプを取得
$post_type = $wp_obj->post_type;
echo '<p>hogehoge</p>';
if( $post_type == 'hoge01' ) {
echo '<p>条件分け表示したいhogehoge</p>';
}
?>
in_array関数
ここでは$post_typeにhoge01とhoge02があるかどうかチェックし、ある場合はif文の中を実行します
そこでin_array関数を使用する
in_array(mixed $needle
, array $haystack
, bool $strict
= false
): bool
<?php
//そのページのWPオブジェクトを取得
$wp_obj = get_queried_object();
//そのページの投稿タイプを取得
$post_type = $wp_obj->post_type;
echo '<p>hogehoge</p>';
if( in_array( $post_type, array('hoge01', 'hoge02') ) ) {
echo '<p>hoge01かhoge02がある場合に表示したいhogehoge</p>';
}
?>
これを応用すれば逆に「hoge01以外に※※を表示させたい」と言ったことも可能
<?php
//そのページのWPオブジェクトを取得
$wp_obj = get_queried_object();
//そのページの投稿タイプを取得
$post_type = $wp_obj->post_type;
echo '<p>hogehoge</p>';
if( in_array( $post_type, array('hoge01', 'hoge02') ) ) {
echo '<p>hoge01, hoge02の時に表示させる</p>';
} else {
//hoge01, hoge02以外(デフォルト投稿も含む)
echo '<p>hoge01, hoge02以外の時だけ表示させたい</p>';
}
?>
hoge01, hoge02以外(デフォルト投稿は含まない)を表示する場合
<?php
//そのページのWPオブジェクトを取得
$wp_obj = get_queried_object();
//そのページの投稿タイプを取得
$post_type = $wp_obj->post_type;
echo '<p>hogehoge</p>';
if( in_array( $post_type, array('hoge01', 'hoge02', 'post') ) ) {
echo '<p>hoge01, hoge02, post(デフォルト投稿)の時に表示させる</p>';
} else {
//hoge01, hoge02, デフォルト投稿以外
echo '<p>hoge01, hoge02, デフォルト投稿以外の時だけ表示させたい</p>';
}
?>
こういった条件分岐は都度挙動を確かめながら記述を行っていくのが良いです