ワードプレスでよく使う条件分岐

ref

基本

<?php if( is_front_page() ): ?>
<?php if( is_home() ): ?>
<?php if( is_single() ): ?>
<?php if( is_single( array( 'apple', 'orange' ) ) ): ?>
<?php if( is_page()  ): ?>
<?php if( is_page( array( 42, 'about', 'contact' ) ) ): ?>
<?php if( is_singular( array( 'foo', 'bar', 'baz' ) ) ): ?>

<?php if( is_category() // カテゴリーのアーカイブページが表示されている場合 ): ?>
<?php if( is_category( array( 9, 'apple', 'orange' ) ) ): ?>
<?php if( in_category('5') // 現在の投稿がカテゴリーID 5に属する場合 ): ?>
<?php if( is_tag() // タグのアーカイブページが表示されている場合 ): ?>
<?php if( has_tag( 'hoge' ) // 'mild' というタグのある投稿が表示されている場合 ): ?>
<?php if( is_archive() ): ?>
<?php if( is_search() ): ?>

<?php if( has_excerpt() ): ?>
<?php if( has_post_thumbnail( $post_id ) ): ?>

<?php if( is_tax() // タクソノミーのアーカイブページ ): ?>
<?php if( has_term() ): ?>
<?php if( term_exists( $term, $taxonomy, $parent ) ): ?>
<?php if( taxonomy_exists( $taxonomy ) ): ?>

<?php if( is_user_logged_in() ): ?>
<?php if( is_author() ): ?>
<?php if( is_date() ): ?>
<?php if( is_404() ): ?>
<?php if( is_paged() ): ?>
<?php else: ?>
<?php endif; ?>

カスタムフィールド

空白でないフィールドを表示

<?php if(post_custom('field_name')): ?>
    <?php echo (post_custom('field_name')); ?>
<?php endif; ?>

フィールド値で判定

<?php if( get_field('field_name') == "hoge"): ?>
<?php endif; ?>

その他

投稿ステータス

<?php if( get_post_status( $post->ID ) == 'draft'): ?>
<?php endif; ?>

ログイン状態

<?php if( is_user_logged_in() ) : ?>
<?php endif; ?>

ユーザー権限別

<?php if(current_user_can('administrator')): ?>
    // administrator
    // editor
    // author
    // contributor
    // subscriber
<?php endif; ?>

分割ページの1ページ目だけ

<?php if ( !is_paged() ) : ?>
<?php endif; ?>

固定ページの親ページと子ページをスラッグで判定

  • 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( is_parent_slug() === 'hoge'): ?>

URLに含まれる文字列で判定

<?php $url = $_SERVER['REQUEST_URI']; ?>
<?php if(strstr($url,'hoge')): ?>
<?php endif; ?>