サポート » 使い方全般 » sidebar.phpにターム名を表示

  • 解決済 melloncollie

    (@melloncollie)


    こんばんは。

    sidebar.phpにリンク無しのターム名を表示したいのですが、表示させる
    方法が見つからず困っています。

    <?php
    if ($terms = get_the_terms($post->ID, ‘ターム名’)) {
    foreach ( $terms as $term ) {
    echo esc_html($term->name);
    }
    }
    ?>

    上記コードをsingle-カスタム投稿名.phpに書くとターム名が表示されるのですが、sidebar-タクソノミー名.phpだと表示されません。

    表示する方法があれば、どなたかご教授ください。

    よろしくお願いいたします。

    • このトピックはmelloncollieが6年、 6ヶ月前に変更しました。
    • このトピックはmelloncollieが6年、 6ヶ月前に変更しました。
8件の返信を表示中 - 1 - 8件目 (全8件中)
  • こんにちは

    sidebar-タクソノミー名.php

    タクソノミー名というわけではありません。get_sidebar 関数の引数で指定する任意の名前となります。
    get_sidebar() の場合は sidebar.php、get_sidebar( ‘foobar’ ) の場合は sidebar-foobar.php テンプレートが読み込まれます。
    https://wpdocs.osdn.jp/関数リファレンス/get_sidebar

    例)

    single-{カスタム投稿名}.php

    <?php get_sidebar( 'foobar' ); ?>

    sidebar-foobar.php

    <aside id="secondary" class="widget-area" role="complementary">
    
    <section id="sidebar-foobar-1" class="widget sidebar-foobar">
    <h2 class="widget-title">foobar ターム名表示</h2>
    <?php
    if ( $terms = get_the_terms( $post->ID, 'foobar' ) ) {
    	echo '<ul>';
    	foreach ( $terms as $term ) {
    		echo '<li>' . esc_html( $term->name ) . '</li>';
    	}
    	echo '</ul>' . "\n";
    }
    ?>
    </section>
    
    <?php dynamic_sidebar( 'sidebar-1' ); ?>
    
    </aside>
    • この返信は6年、 6ヶ月前にishitakaが編集しました。
    トピック投稿者 melloncollie

    (@melloncollie)

    ishitakaさま

    コメントありがとうございます。

    書き方が誤っておりました。

    sidebar-タクソノミー名.phpではなく、single-カスタム投稿名.phpにsidebar-カスタム投稿名.phpをget_sidebarで指定読み込ませています。

    sidebar-カスタム投稿名.phpとしたのは、単にget_sidebarで指定する際に分かりやすいようにとの理由です。

    なので、やり方は間違ってないと思うのですが、なぜが表示されません。

    提示したサンプル コードを下記環境で検証してみました。

    ・WordPress 4.8.1
    ・Twenty Seventeen テーマ
    ・WP Multibyte Patch プラグインのみ

    結果、ターム名は表示されました。
    特に、気を付ける点もなさそうなのですが・・・?

    PHP エラーが発生していたりしませんかね。
    下記ページを参考にエラーメッセージを確認してみるといいかなと思います。
    https://wpdocs.osdn.jp/WordPressでのデバッグ

    トピック投稿者 melloncollie

    (@melloncollie)

    ishitakaさま

    ありがとうございます。

    私も他のプロジェクトでは問題なく表示されていたので、
    このようなエラーは初めてです。

    デバッグを有効にして確認してみたところ

    Notice: Trying to get property of non-object

    というエラーが発生しておりました。

    該当箇所は

    echo '<li>' . esc_html( $term->name ) . '</li>';

    の部分です。

    • この返信は6年、 6ヶ月前にmelloncollieが編集しました。

    get_the_terms 関数がエラー(WP_Error オブジェクト)を返しているようです。無効なタクソノミーを指定していませんか?
    var_dump 等で戻り値を確認してみてはどうでしょうか。

    if ( $terms = get_the_terms( $post->ID, 'ターム名' ) ) {
    	var_dump( $terms );
    トピック投稿者 melloncollie

    (@melloncollie)

    ishitakaさま

    ありがとうございます。

    戻り値を確認しましたが、問題なくターム名が表示されました。

    また、以下のコードを記載したら、表示されました。

    <?php
        if ($terms = get_the_terms($post->ID, 'ターム名')) {
            foreach ( $terms as $term ) {
                echo ('<h3>') ;
                echo esc_html($term->name)  ;
                echo ('</h3>') ;
            }
        }
    ?>

    色々とありがとうございました!

    $term->name と記述は同じなんですけどね・・・なんでだろう?
    ちょっとだけ気になりますが、とりあえず解決したようなので結果オーライです。
    「解決済み」にしてくださいね。

    トピック投稿者 melloncollie

    (@melloncollie)

    ishitakaさま

    そうなんですよね。
    僕も良く分かりませんが、とりあえず、解決出来て良かったです(*^^*)。

    この度は色々とありがとうございました!

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「sidebar.phpにターム名を表示」には新たに返信することはできません。