条件分岐して表示する方法を教えて下さい。


トップページ(home.php)に通常投稿とカスタム投稿を合わせた記事一覧を表示しております。
その際に、記事のスラッグとカテゴリー名を以下のコードで取得したいと思っております。

(1)通常投稿
<?php

$cat = get_the_category(); //カスタムフィールドでアイコンに表示させる
$disp_cat = get_field('disp_cat'); // カスタムフィールド
foreach($cat as $c) {
if ($c->category_nicename == $disp_cat) {
echo '<span class="cate-icon ' . $c->category_nicename . '">' . $c->cat_name . '</span>';
}
}

?>

(2)カスタム投稿
<span class="cate-icon <?php echo esc_html(get_post_type_object(get_post_type())->name); ?>"><?php echo esc_html(get_post_type_object(get_post_type())->label ); ?></span>


記事が通常投稿の時は(1)を表示し、カスタム投稿の場合は(2)を表示する条件分岐のコードを教えてくださいませ。

よろしくお願いいたします。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2016/07/04 00:17:01
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント300pt

get_post_type() で投稿タイプが取得できるので、それで分岐させる感じになると思います。

<?php
    // 記事のループ
    while (have_posts()):
        the_post();
        ...

        if (get_post_type() == 'post'):     // 通常投稿
            $cat = get_the_category(); //カスタムフィールドでアイコンに表示させる
            $disp_cat = get_field('disp_cat'); // カスタムフィールド
            foreach($cat as $c) {
                if ($c->category_nicename == $disp_cat) {
                    echo '<span class="cate-icon ' . $c->category_nicename . '">' . $c->cat_name . '</span>';
                }
            }
        else:                               // その他(きっと、カスタム投稿)
?>
<span class="cate-icon <?php echo esc_html(get_post_type_object(get_post_type())->name); ?>"><?php echo esc_html(get_post_type_object(get_post_type())->label ); ?></span>
<?php
        endif;
        ...
    endwhile;
?>
 

カスタム投稿の分岐は else じゃなくて、elseif で、そのカスタム投稿のタイプを指定して判定した方が良いと思います。

<?php
    ...
    //  else:                                       // その他(きっと、カスタム投稿)
        elseif (get_post_type() == 'custom_foo'):   // きっちり、カスタムタイプを指定して判定

カスタム投稿の種類がたくさんあると面倒ですけれど。

【参考】
関数リファレンス/get post type - WordPress Codex 日本語版

id:kamefactory

ご連絡が遅くなり申し訳ありません!
希望通りに出来ました!
本当にありがとうございます。

またよろしくお願いします。

2016/07/04 00:17:35

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません