サポート » 使い方全般 » WP_Queryで複数のカスタムタクソノミーを出力する方法について

  • 解決済 yuki

    (@yuki84yuki)


    下記は、カスタム投稿”hoge”の記事を取得し、
    ・タイトル
    ・階層を持たないカスタムタクソノミー”hoge_tag”
    ・本文
    を出力するコードです。

    $the_query = new WP_Query( 'post_type' => 'hoge' );
    if ( $the_query->have_posts() ) :
      while ( $the_query->have_posts() ) : $the_query->the_post();
    
       echo get_the_title();
    
       if ($terms = get_the_terms($post->ID, 'hoge_tag')) {
          foreach ( $terms as $term ) {
            echo '['.esc_html($term->name).']';
          }
        }
    
        echo do_shortcode(get_the_content());
    
      endwhile;
    endif;
    wp_reset_postdata();

    問題無く出力は出来るのですが、デバッグモードを有効にするとNoticeが出ていることに気がつきました。

    Notice: Undefined variable: post in … on line XXX
    Notice: Trying to get property ‘ID’ of non-object in … on line XXX

    これは get_the_terms の $post->ID を指しているようです。

    この問題を解決するには具体的にどのような変更を行えば良いでしょうか?
    宜しくお願い致します。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • こんにちは

    $post が関数内のローカル変数となっているためかと思われます。

    global $post;

    を追記していただき、$post がグローバル変数として扱われるようにしてください。

    詳細は、PHP マニュアルの「変数のスコープ」を参照してください。
    http://php.net/manual/ja/language.variables.scope.php

    トピック投稿者 yuki

    (@yuki84yuki)

    回答頂いた方法で解決出来ました。
    ありがとうございました。

    トピック投稿者 yuki

    (@yuki84yuki)

    解決済みとします

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「WP_Queryで複数のカスタムタクソノミーを出力する方法について」には新たに返信することはできません。