WPの条件分岐
目次
基礎
1. 条件分岐(if文)
2. 条件分岐(is_関数)
3. 条件分岐(親子ページ)
4. 条件分岐(current)現在地の時
オリジナルの関数作る
1. 特定の親ページと、その子ページにのみ条件
2. 現在のページとパスが一致すればクラスを出力
3. 現在の投稿タイプと一致すればクラスを出力
基礎
1. 条件分岐(if文)
// 基本
<?php if(条件1): ?>
条件1に当てはまる場合
<?php elseif(条件2): ?>
条件2に当てはまる場合
<?php else: ?>
条件1にも条件2にも当てはまらない場合
<?php endif; ?>
// 条件1もしくは(or)条件2
<?php if(条件1 || 条件2): ?>
条件1もしくは条件2に当てはまる場合
<?php endif; ?>
// 条件1かつ(and)条件2
<?php if(条件1 && 条件2): ?>
条件1と条件2、両方に当てはまる場合
<?php endif; ?>
// 条件1と条件2が等しい
<?php if(条件1 == 条件2): ?>
条件1と条件2が等しい場合
<?php endif; ?>
// 条件1と条件2が等しくない
<?php if(条件1 !== 条件2): ?>
条件1と条件2が等しくない場合
<?php endif; ?>
// 条件1ではない
<?php if(!条件1): ?>
条件1ではない場合
<?php endif; ?>
2. 条件分岐(is_関数)
固定ページ 特定の親ページと、その子ページ
表示したいテンプレート | 記述方法 |
---|---|
トップページ | <?php if ( is_front_page() || is_home() ) : ?>
|
固定ページ | <?php if ( is_page() ) : ?>
|
投稿ページ | <?php if ( is_single() ) : ?>
|
カスタム投稿タイプ | <?php if ( is_singular() ) : ?>
|
アーカイブページ | <?php if ( is_arhive() ) : ?>
|
タクソノミー | <?php if(is_tax("タクソノミー名")): ?>
|
投稿ページ | <?php if ( is_single() ) : ?>
|
カテゴリーページ | <?php if ( is_category() ) : ?>
|
タグページ | <?php if ( is_tag() ) : ?>
|
検索結果ページ | <?php if ( is_search() ) : ?>
|
404ページ | <?php if ( is_404() ) : ?>
|
作成者ページ | <?php if ( is_author() ) : ?>
|
モバイル | <?php if ( wp_is_mobile() ) : ?>
|
3. 条件分岐(親子ページ)
// functions.php
function is_parent_slug() {
global $post;
if ($post->post_parent) {
$post_data = get_post($post->post_parent);
return $post_data->post_name;
}
}
// 条件を追加するテンプレートファイル
<?php if(条件1 || 条件2): ?>
<?php
if (is_page('親ページのスラッグ') || is_parent_slug() === '親ページのスラッグ'){
//ここに条件を追加する
}?>
4. 条件分岐(current)現在地の時
headerなどで、現在表示してるページの時は、背景色や文字の色が変わったりする事を、currentという。
// header.php
<li class="xxxx__listItem
<?php // カスタム投稿タイプ 配下ページ
if ( get_post_type()=='aaaaa'):
echo ' is-current';
endif;
?>">
<a href="<?php echo home_url(); ?>/aaaaa/">Aのページ</a>
</li>
<li class="xxxx__listItem
<?php // bbbbb 固定ページ
if ( is_page ( array('bbbbb') ) ) :
echo ' is-current';
endif;
?>">
<a href="<?php echo home_url(); ?>/bbbbb/">Bのページ</a>
</li>
オリジナルの関数作る
1. 特定の親ページと、その子ページにのみ条件
current(現在地)の条件分岐としてよく使います。
// fuctions.php
function is_parent_slug() {
global $post;
if ($post->post_parent) {
$post_data = get_post($post->post_parent);
return $post_data->post_name;
}
}
// 条件を追加するテンプレートファイル
<?php
if(is_page('sampleA') || is_parent_slug() === 'sampleA'){
// sampleAのページの時の条件を書く
}
?>
2. 現在のページとパスが一致すればクラスを出力
// fuctions.php
function the_current_page_class($path){
global $post;
if($page = get_page_by_path($path)){
if($page->ID == $post->ID){
echo 'is-current';
}
}
}
// 条件を追加するテンプレートファイル
<li class="xxxx__xxxx <?php the_current_page_class('slugname'); ?>"><a class="xxxxx__xxxxxxx" href="<?php echo home_url(); ?>/slugname/">ページA</a></li>
3. 現在の投稿タイプと一致すればクラスを出力
// fuctions.php
function the_current_post_type_class($post_type){
if(get_post_type() == $post_type){
echo 'is-current';
}
}
// 条件を追加するテンプレートファイル
<li class="xxxx__xxxx <?php the_current_post_type_class('slugname'); ?>"><a class="xxxxx__xxxxxxx" href="<?php echo home_url(); ?>/slugname/">ページA</a></li>