WPの条件分岐

WPの条件分岐

基礎

1. 条件分岐(if文)

参考サイト: 【WordPress】これだけは覚えておきたい条件分岐タグ10個+5個


// 基本
<?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_関数)

固定ページ 特定の親ページと、その子ページ

参考サイト:
【WordPress】これだけは覚えておきたい条件分岐タグ10個+5個

表示したいテンプレート 記述方法
トップページ <?php if ( is_front_page() || is_home() ) : ?>
固定ページ <?php if ( is_page() ) : ?>
// slug名を指定する場合
<?php if ( is_page('xxxxx') ) : ?>
// 複数の場合
<?php if ( is_page(array('xxxxx' , 'aaaaa')) ) : ?>
投稿ページ <?php if ( is_single() ) : ?>
カスタム投稿タイプ <?php if ( is_singular() ) : ?>
// slug名を指定する場合
<?php if ( is_singular('xxxx') ) : ?>
// 複数の場合
<?php if ( is_singular( array('xxxxx','aaaaa') ) ) : ?>
アーカイブページ <?php if ( is_arhive() ) : ?>
カスタム投稿タイプのアーカイブページ
<?php if ( is_post_type_archive() ) : ?>
// slug名を指定する場合
<?php if ( is_post_type_archive('xxxxx') ) : ?>
// 複数の場合
<?php if ( is_post_type_archive( array('xxxxx','aaaaa') ) ) : ?>
タクソノミー <?php if(is_tax("タクソノミー名")): ?>
// タームによって条件分岐させる場合
<?php if(is_tax("タクソノミー名", "ターム名")): ?>
投稿ページ <?php if ( is_single() ) : ?>
カテゴリーページ <?php if ( is_category() ) : ?>
// 特定のカテゴリーページ(スラッグ)
<?php if ( is_category('sports') ) : ?>
タグページ <?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>


SNSシェア

WP TECH WordPress技術専門 Tips

コーポレートサイトへ

WP TECH WordPress技術専門 Tips

採用サイトへ