TL;DR
よく使う WordPress の if(条件分岐 / Conditional Tag)。使用頻度が高いものを書いてます。
基本
条件成立時、上の条件でない時、条件が成立しない時の条件が複数あるパターン。条件を増やすときは elseif を増やし、条件が一つだけのときは、elseif と else を省略する。
<?php if() : ?>
// 条件成立時
<?php elseif () :?>
// 上の条件でない時
<?php else : ?>
// どの条件も成立しない時
<?php endif; ?>
メインページ
<?php if ( is_home() || is_front_page() ) : ?>
// ホームの時。管理画面でホーム表示を固定ページにしたときも適用される
<?php else : ?>
// ホームでない時
<?php endif; ?>
ブログとカスタムポストの投稿ページを分岐させる
サイドバーで、ブログやカスタムポスト(ニュースなど)の表示を分岐させたいとき。
<?php if(is_singular( 'post' )) : ?>
// single.php 表示
<?php elseif (is_singular( 'news' )) :?>
// single-news.php 表示
<?php else : ?>
<?php endif; ?>
個別投稿(シングル)ページ
<?php if( is_single()) : ?>
<?php else : ?>
<?php endif; ?>
固定ページ
以下の例はコンタクト(contact)とアクセス(access)のスラッグ名で固定ページを分岐。
<?php if(is_page('contact')) : ?>
contactページの時、出力
<?php elseif (is_page('access')) :?>
accessページの時、出力
<?php else : ?>
その他
<?php endif; ?>
固定ページの子ページか判別
if ( is_page() && $post->post_parent > 0 ) {
echo "これは子ページです";
}
2 ページ目以降
is_page()は固定ページか判定、is_paged()は 2 ページ目以降か判定。
<?php if( is_paged()) : ?>
<?php else : ?>
<?php endif; ?>
ページテンプレート
template というディレクトリに作成したカスタムテンプレート contact.php を判別。ディレクトリを含めて書く。ページテンプレート内部はページ上部に「Template Name: contact」と記載されてある。
<?php if( is_page_template(‘template/contact.php')) : ?>
<?php else : ?>
<?php endif; ?>
モバイル
<?php if ( wp_is_mobile() ) : ?>
// mobile
<?php else: ?>
// pc
<?php endif; ?>
IE 判別
グローバル変数名(global ...)で呼び出した後に分岐させます。
<?php
global $is_IE;
if ( $is_IE ) {
// IE
}
?>
Chrome 判別
<?php
global $is_chrome;
if ( $is_chrome ) {
// Chrome
}
?>
Safari 判別
<?php
global $is_safari;
if ( $is_safari ) {
// Safari
}
?>
iPhone の Safari 判別
<?php
global $is_iphone;
if ( $is_iphone ) {
// iphone safari
}
?>
カテゴリページ
<?php if( is_category()) : ?>
<?php else : ?>
<?php endif; ?>
タグページ
<?php if( is_tag()) : ?>
<?php else : ?>
<?php endif; ?>
作成者「taro」のページ
<?php if( is_author(’taro')) : ?>
<?php else : ?>
<?php endif; ?>
検索結果
<?php if( is_search()) : ?>
<?php else : ?>
<?php endif; ?>
Not Found
<?php if( is_404()) : ?>
<?php else : ?>
<?php endif; ?>
functions.php での条件分岐
add_action( 'loop_start', 'add_to_single_posts' );
function add_to_single_posts() {
if ( is_single('post') ) {
echo'xxxx';
}
}
よく使う論理演算子
複数(条件1 or 条件2)
<?php if ( 条件1 || 条件2 ) : ?>
<?php endif; ?>
複数(条件1 and 条件2)
<?php if ( 条件1 && 条件2 ) : ?>
<?php endif; ?>
複数(条件1 等しい 条件2)
<?php if ( 条件1 == 条件2 ) : ?>
<?php endif; ?>
複数(条件1 等しくない 条件2)
<?php if ( 条件1 !== 条件2 ) : ?>
<?php endif; ?>
複数(条件1ではない)
<?php if ( !条件1 ) : ?>
<?php endif; ?>
以上、WordPress の条件分岐でした。