サポート » 使い方全般 » TOPページ 新着情報一覧 で、【投稿】 の場合 カテゴリ名/【カスタムタク

  • 同じテーマの投稿が 過去ログで幾つかあり、それらを参考にコードを書いてトライしてみたのですが、先人の疑問同様 「投稿」における【カテゴリ名】は(リンク付で)表示されるのですが、「カスタム投稿」における【ターム名(ラベル)】 の方がうまく(リンク付で)表示されてくれません。

    自分は デザインサイドのノンプログラマで、WordPress・PHP の知識が不足しています。
    文法がきちんと理解できておりません。

    参考ページ/ 自作コード等 を引用しますので、新着情報中 「カスタム投稿」における【ターム名】 のリンク付表示方法 の書き方をご教授頂けますと大変幸いです。

    宜しくお願い致します。

    * カスタム投稿 と ターム名(ラベル)は Custom Post Type UI で作成・編集

    ―――――――――――――――――――
    【参考にした過去ログページ】

    ● 投稿が属する カテゴリ名 か タクソノミー名 を表示する
    https://ja.forums.wordpress.org/topic/14106

    ● 投稿(post)と カスタム投稿 をあわせた記事一覧 での カスタム分類の表示
    https://ja.forums.wordpress.org/topic/97142

    http://ja.forums.wordpress.org/topic/23601

    http://www.zackichou.me/get_post_types/
    ―――――――――――――――――――――――
    【自作コード】 home.php テンプレートファイル内

    <div class="full_width_list02">
    <section class="wn01">
    
    <h2 class="my_list_ttl01">新着情報 2 固定ページ以外全て</h2>
    
    <?php
    
    $post_types = get_post_types( array( 'public'  => true ) );
    
    unset($post_types['page'], $post_types['attachment'], $post_types['revision'], $post_types['nav_menu_item']);
    
    $args = array(
    	'post_type' => $post_types, // 投稿タイプを指定
    	'posts_per_page' => 5, // 記事 5個 表示
    	'ignore_sticky_posts' => 1 // 先頭に固定表示を無効化
    );
    
    $the_query = new WP_Query( $args );
    ?>
    
    <?php if ( $the_query->have_posts() ) : ?>
    <ul class="list02">
    <?php while ( $the_query->have_posts() ) : ?>
    <?php $the_query->the_post(); ?>
    <li><?php the_time('Y/m/d') ?> <a href="<?php the_permalink() ?>"><?php the_title() ?></a> ―― <?php echo my_tax_link01(); ?></li>
    
    <?php endwhile; ?>
    </ul>
    <?php endif; ?>
    <?php wp_reset_postdata(); ?>
    
    </section>
    </div>

    ―― <?php echo my_tax_link01(); ?> の部分に、【カテゴリー名】or【カスタムタクソノミーのターム名】を出したい。

    ここを <?php the_category(‘ ‘);?> にすれば、無論「投稿」の【カテゴリ名】は出力されるが、「カスタム分類」の【ターム名】は リンク付表示されない。

    ———————————-
    function.php 内に

    <?php

    // 自己設定カスタムタクソノミー名 リンク付 取得

    function my_tax_link01() {
    // カスタム分類 を 仮に2つ登録しているとして
    $my_taxonomies = array('custom_tax01','custom_tax02');
    
    if (get_post_type()=='post') :
        $terms = the_terms( $post->ID, 'category');
    else :
        $terms = the_terms( $post->ID, $my_taxonomies );
    return $terms;
    endif;
    }?>

    この後半の、★ 投稿タイプ が post でない場合の方の書き方が分かりません。

    できれば、1個ずつ変数を変えて ターム名を1つずつ記述して対応させていくのではなく、
    1つの記述で、カスタム分類のターム が 複数に増えても、
    汎用的に対応できるような 記述方法がベストですが。

    このコードでも、「投稿」の場合の【カテゴリ名】の方は、リンク付で表示されます。

    ―――――――――――――――――
    上記の部分の、目的達成のための 妥当な記述方法、
    或いは、もっとスマートな解決方法があればその方法、につき

    どなた様か ご教授頂ければ大変幸いです。
    宜しくお願い致します。

    * 理解不足で 記述方法の根本 が間違っている部分は、ご容赦ください。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • まずthe_termsの返り値は通常は空で、関数呼び出し時に出力されています。(echo my_tax_link01();のechoは不要です。)
    で、the_termsの第2引数は文字列でタクソノミーを指定する必要があるはずです。

    と、ここでもしかするとズバリかも知れない関数があります。the_taxonomiesです。(詳しくはCodexを見てください。)
    用途によっては<?php echo my_tax_link01(); ?>を<?php the_taxonomies() ?>で置き換えるだけで用が済むかもしれません。ここここも参考になるかもしれません。(翻訳がそのままでは複数タクソノミーで不自然かも……)

    的外れな回答かもしれません、ごめんなさい。

    Hinaloe 様、ご多忙のところ コメントありがとうございます。

    <?php the_taxonomies() ?> そのもの、ならびに () に $引数を幾つか入れて試してみたのですが、カテゴリー: ~。 フォーマット: ~。 タグ:~。 と、設定している値が並列で全部表示されてしまうか or 何も表示されません。

    また、並列全表示されてしまうのは「投稿」の【カテゴリー】の方のみであり、「カスタム分類」の【ターム名(ラベル)】の方は そもそも全く表示もされません。

    http://stackoverflow.com/questions/8245526/the-taxonomies-template-parameter

    等を参考に ‘template’ の部分の指定を変えて試しましたが、タグ や フォーマット など、不要な部分を表示させない方法までは、調べても分かりませんでした。(「カスタム分類」の【ターム名(ラベル)】の方はそもそも全く表示されない点、については同じ)

    get the taxonomies() で試しても、いずれの場合も、全く表示もされませんでした。

    引き続き、どなた様かご教授頂けましたら大変幸いです。
    宜しくお願い致します。

    モデレーター gatespace

    (@gatespace)

    カスタム分類(タームじゃないよ)が決まっているなら、the_terms()でいいのでは?

    http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/the_terms

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

    the_terms() は、引用した参考ページ内記述 に従って最初に試しましたが、

    home.php の 該当部分に直接 <?php the_terms($id, $taxonomy);?> を書く場合も、
    functions.php 内に関数として書く場合も、必須の 先頭2つの $ID, $taxonomy の部分を
    どのように書けば目的の表示ができるのか、いろいろ試したのですが勉強不足で分かりませんでした。(結果は、「投稿」「カスタム分類」いずれも表示させられませんでした)

    $ID は $post->ID で良いのか? / $taxonomy の方は、ループさせて新着情報 例えば 5件中の全てを拾って表示させるには、どのように書けば良いのか?

    カスタム分類が仮に更に増えても 汎用的に使える(或いは、変数の array配列に 1つ新規のカスタム分類の名前 を追加するだけのメンテで良い)というような記述方法があるか?

    などについて、もし可能であればご教授頂けませんでしょうか。

    何卒宜しくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「TOPページ 新着情報一覧 で、【投稿】 の場合 カテゴリ名/【カスタムタク」には新たに返信することはできません。