サポート » テーマ » 投稿(post)とカスタム投稿をあわせた記事一覧でのカスタム分類の表示

  • 解決済 ryoji.nakashima

    (@ryojinakashima)


    frontpage.php に一般的な投稿(post)とカスタム投稿をあわせた記事一覧を作成しています。

    一覧自体は表示できています。投稿(post)のほうはカテゴリーを取得して表示できているのですが、カスタム投稿のカスタム分類の表示の仕方が解決できません。

    <?php
    $toplist = array(
    ‘post_type’ => array(‘post’,’secondtrip’),
    ‘showposts’ => 10,
    ‘orderby’ => date,
    );
    ?>
    <?php query_posts($toplist); ?>
    <?php if (have_posts()):while(have_posts()):the_post(); ?>
    <div class=”overviewBox clearfix”>
    <div class=”thumnailImg”><?php the_post_thumbnail(); ?></div>
    <div class=”articleInfo”>
    <div class=”postHeader clearfix”>
    <div class=”postDate”><?php echo get_post_time(‘Y.m.d D’); ?></div>
    <div class=”postLabel”><?php echo esc_html(get_post_type_object(get_post_type())->labels->name); ?></div>
    </div>
    <h2 class=”articleTitle”>“><?php the_title() ?></h2>
    <h3 class=”articleCat”><?php the_category(‘ ‘); ?></h3>
    <p><?php echo mb_substr(get_the_excerpt(), 0, 30); ?></p>
    </div>
    </div>
    <?php endwhile; endif; ?>
    <?php wp_reset_postdata(); wp_reset_query(); ?>

    <h3 class=”articleCat”><?php the_category(‘ ‘); ?></h3>で投稿(post)のカテゴリーは取得できるのですが、カスタム分類はどうやって取得すればいいのでしょうか。
    また投稿とカスタム投稿で分岐させる必要がありますでしょうか。<?php the_category(‘ ‘); ?>に続けてカスタム分類を取得するコードを書けば、どちらかが空になり分岐させる必要がないように考えています。

    カスタム分類を表示させる方法をご教授いただければ助かります。

    どうぞよろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • こんにちは。未検証ですがthe_termsという関数は試してみましたか?

    <?php the_terms( $post->ID, '(タクソノミー名)'); ?>

    タクソノミー名さえ指定すれば、記事が属するターム名をリンク付きで表示できるはずです。

    なお、本題とは離れますが、
    「frontpage.php」というファイル名では自動的にフロントページで読み込んでくれないことはないですか? 「front-page.php」が正しいネーミングです。

    条件分岐の必要性についてはちょっとわかりません。より詳しい方のフォローを待ちましょう。

    トピック投稿者 ryoji.nakashima

    (@ryojinakashima)

    ご返答ありがとうございます。

    ファイル名ですが「front-page.php」を使用しています。すみません、ハイフンを書きそびれて投稿してしまいました。

    本題について
    <?php the_terms( $post->ID, ‘(タクソノミー名)’); ?> も試したのですが、カスタム投稿が複数ある記事の一覧表示のため、タクソノミー名を直接指定することができないのです。
    現在の記事(一覧ですので、タイトル名などがループしている状態)のタクソノミー名を取得しようと試みてますが、なかなかうまくいきません。

    ネットで調べて色々なコードを試してみたのですが、PHPなどの知識が乏しいので改良すればうまくいくかもしれないのもわからない状態です。

    今日はwordpressの逆引き辞典を手に入れたので、また色々調べて見ます。

    ありがとうございました。

    あるカスタム投稿タイプに対してあるカスタムタクソノミーが対応しているのなら、ここで条件分岐を利用すればいいでしょう。

    コードは端的な例で、かつ未検証ですが、

    <?php
    if( 'post-type-a' == get_post_type() ):
    the_terms( $post->ID, 'taxonomy-a');
    elseif( 'post-type-b' == get_post_type() ):
    the_terms( $post->ID, 'taxonomy-b');
    endif;
    ?>

    といったように、投稿タイプに応じて読ませるタクソノミーを分岐すればよいと思います。

    トピック投稿者 ryoji.nakashima

    (@ryojinakashima)

    Fukazawa Kojiro さん

    ご回答ありがとうございます。
    更新し忘れたのですが、自己解決しました。

    確かに条件分岐させれば簡単だったかもしれません。
    でも個人的なんですが、カスタム投稿が増えても汎用的に使えるものを作ろうと考えてました。
    でもコードを見ると、条件分岐のほうが感嘆だったかもしれません。

    以下自己解決したコードです。

    <?php $taxonomy = get_post_type_object(get_post_type())->name; ?>
    <?php $taxes = get_object_taxonomies( $taxonomy ); ?>
    <?php $genres = get_the_terms($post->ID, $taxes[0]);
    $genrenames = array();
    foreach( $genres as $genre ){
    array_push( $genrenames, $genre->name );
    }
    echo join(‘ ‘,$genrenames);?>

    PHPに慣れていなくて汚いコードかもしれませんが、何とか複数のカスタム投稿の一覧でも記事単体のページでもtermが表示(リンク無し)されるようにできました。

    汎用性のある形で実現できたなら、それが一番ですね!
    おつかれさまでした!

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「投稿(post)とカスタム投稿をあわせた記事一覧でのカスタム分類の表示」には新たに返信することはできません。