サポート » 使い方全般 » タームをクラス名に使いたい(固定ページのカスタム投稿一覧内)

  • 解決済 amanojak

    (@ringoxxxognir)


    試行錯誤するもまったく解決できず、教えていただけたら幸いです。
    (お恥ずかしながらコピペばかりで構築している未熟者です)

    ◆やりたいこと
    固定ページに表示しているカスタム投稿一覧において、 各記事の所属するタームスラッグをクラス名として使いたい。

    ◆設定
    カスタム投稿タイプ(post_type):aaa_post
    カスタム分類(taxonomy):aaa_post_cat
      ∟ターム(term):aaa_1,aaa_2,aaa_3

    ◆固定ページ内の記述

    <ul>
      <?php
        $args = array();
        $args['post_type'] = 'aaa_post';
        $the_query = new WP_Query($args);
        while ( $the_query->have_posts() ) : $the_query->the_post();
      ?>
      <li class="【ここに所属するタームのスラッグを表示したい】"><p><?php the_title(); ?></p></li>
      <?php endwhile; ?>
    </ul>

    ◆備考
    タームごとにデザイン分けをしたく、その投稿が所属するタームスラッグを出力したいです。
    しかしカスタム投稿一覧の出力は実現できても、そのタームの取得および出力方法がわかりません…
    「get_the_term」等の例がネット上には出てくるので入れてみても、何かが違うようで出力結果がエラーになってしまいます。
    (Notice:Undefined variable: post in〜となってしまう)

    途方にくれていて、お知恵をお貸しいただけると嬉しいです。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • <?php $term=get_the_terms($post->ID,'aaa_post_cat');if(!empty($term)){$term_slug=$term[0]->slug;echo$term_slug;}?>

    • この返信は1 ヶ月、 4 週間前に  manbo さんが編集しました。

    manbo様

    ありがとうございます!
    ご提示いただいたコードにて、無事にタームスラッグが表示されました。

    ただデバッグモードをオフにしないと下記のとおりエラーも一緒に吐き出されてしまうのですが、
    これを解消するのは難しいでしょうか…?

    ◆デバッグモード false

    <li class="Notice:Undefined variable: post in 固定ページ.php on line 000.
    Notice:  Trying to get property of non-object in 固定ページ.php on line 000 【タームスラッグ】"><p><?php the_title(); ?></p></li>

    ※000は、教えていただいたコードを記述した行に該当します

    ◆デバッグモード true
    <li class="【タームスラッグ】"><p><?php the_title(); ?></p></li>

    サイト公開時はオフにするのでいいのですが、構築時オンにしている場合には上記エラーのため、
    せっかく出力されたスラッグがクラス名として機能しなくなってしまうのです;

    デバッグさえ気にしなければクリアなのですが、もしこのエラーも回避できる方法がありましたら教えていただけると嬉しいです。
    おねだりばかりで本当に申し訳ありません…;

    すみません、trueとfalseの出力結果を逆に載せてしまいました;
    エラーが出るのはデバッグtrue時です。

    こちらの環境ではデバッグモードで何も出ませんが、これだとどうですか?
    一列だと何かあっても分かりにくいので改行した方が無難ですかね。

    <?php
    $term = get_the_terms($post->ID,'aaa_post_cat');
    if (isset($term[0])) {
    $term_slug = $term[0]->slug;
    echo $term_slug;
    }
    ?>
    

    @$term[0]->slug;で逃げるのも手段のひとつ・・・かも。

    manbo様、本当にありがとうございました!
    最初の記述のまま、エラーを出さずに実装できました。

    固定ページは固定ページなのですが、
    直接ページテンプレートに記述をしていなかったのが災いしていたようです。

    (今回のコード部分はパーツテンプレートにしていて、
    固定ページの投稿画面にてphpファイルを呼ぶ仕様にしていました)

    大変失礼しました;
    おかげさまで先に進むことができます!本当にお世話になりました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • このトピックに返信するにはログインが必要です。