トップページ(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)を表示する条件分岐のコードを教えてくださいませ。
よろしくお願いいたします。
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 日本語版