サポート » 使い方全般 » カスタム投稿タイプを指定したループ中にカスタムタクソノミー名を表示

  • 解決済 oops38

    (@oops38)


    WordPress 3.5.2で

    <?php query_posts( 'post_status=publish&post_type=hoge&posts_per_page=5' ); ?>
    <?php if (have_posts()) : ?>
    <?php while ( have_posts() ) : the_post(); ?>

    としたカスタム投稿タイプを指定したループ中に
    記事のカスタムタクソノミー名を表示しようとしたところうまくいきませんでした。

    <?php single_term_title( ); ?>
    <?php
    $term = get_the_terms($post->ID, 'test');
    echo esc_html($term->name);
    ?>

    を使用して出力をしようとしましたが、どちらもできませんでした。

    通常のカテゴリーを使用して

    <?php
    $cat = get_the_category();
    $cat = $cat[0];
    echo $cat->cat_name;
    ?>

    では出力することができました。
    カスタムタクソノミーもっとうまく使えたら便利なのですが、どなたかご教授下さい。
    よろしくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    $term = get_the_terms($post->ID, 'test');

    で、カスタム分類(タクソノミー)は取得できているハズです。
    ためしに

    $term = get_the_terms($post->ID, 'test');
    var_dump( $term );

    として、変数 $term がどうなっているか確認してみましょう。

    で、get_the_terms と get_the_category って、関数名が似てますよね。
    では、その後の出力処理も、ほぼ同じになるとは思いませんか?

    トピック投稿者 oops38

    (@oops38)

    ご指摘ありがとうございます。

    $term = get_the_terms($post->ID, 'test');
    var_dump( $term );

    と試してみたところ、

    object(WP_Error)#2530 (2) {
      ["errors"]=>
      array(1) {
        ["invalid_taxonomy"]=>
        array(1) {
          [0]=>
          string(42) "不正なタクソノミー分類です。"
        }
      }
      ["error_data"]=>
      array(0) {
      }
    }

    とエラーが出てました。

    カスタムタクソノミーは今までループの条件に使用してちゃんと機能していたのですが、
    今回名前を出すのは初めてで色々参考にしたのですが、うまくいきませんでした。

    トピック投稿者 oops38

    (@oops38)

    色々と検索して探していたら、
    とあるところに掲載されていたものからヒントを得て自己解決いたしました。
    参考記事

    	$args = array('fields'=>'all');
    	$terms = wp_get_post_terms( $post->ID, 'exnewscat', $args);
    

    として$argsに配列で値を渡して

    	echo esc_html($terms[0]->slug);
    

    などで出すことができました。

    	echo esc_html($terms[0]->name);
    

    でタクソノミー名がでます
    また

    	$args = array('fields'=>'names');
    	$terms = wp_get_post_terms( $post->ID, 'exnewscat', $args);
    

    とすると

    	echo esc_html($terms[0]);
    

    でタクソノミー名がでます

    WordPress私的マニュアルさんにも参考にしたパラメーターが記載されています

    トピック投稿者 oops38

    (@oops38)

    こちらのトピックスは自己解決いたしましたので、解決済みといたします
    jim912さんありがとうございました

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「カスタム投稿タイプを指定したループ中にカスタムタクソノミー名を表示」には新たに返信することはできません。