サポート » 使い方全般 » カスタムタクソノミーで親には子のカテゴリ、子には商品ページ一覧を表

  • 解決済 taketake

    (@taketake)


    最近wordpressをはじめた初心者です。
    カスタム投稿ページで商品情報ページを作成しています。
    カスタムタクソノミーで親子関係のあるカテゴリがあるのですが、
    taxonomy.phpに親には子のカテゴリ、子には商品ページ一覧を表示させるには
    どうしたらいいのでしょうか?
    そもそもカテゴリで振り分ける方法があっているのかわかっていません。
    (カテゴリの数は30ぐらいあります)

    投稿ページのカテゴリの振り分け方法は見つけたのですが、
    カスタムタクソノミーでの方法が見つかりません。
    どなたか助けていただけないでしょうか?
    どうぞよろしくお願いいたします。

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

    (@jim912)

    taketakeさん、こんにちは。

    以下のような手順になろうかと思います。

    1.get_term_byを使って、カテゴリの情報を取得。value と taxonomy パラメータは、get_query_var( ‘term’ ) と get_query_var( ‘taxonomy’ ) で取得

    2.parentが0かどうかで親/子を判別

    3.親の場合は、wp_list_categoriesで子カテゴリーを表示。子の場合は、get_posts、またはquery_postsを使い、商品ページ一覧を表示

    jim912さん 早速のご回答ありがとうございます!

    手順は理解できたのですが、書き方がわかりません・・・

    <?php
    $term = get_term_by(
    ‘slug’,
    get_query_var(‘term’),
    get_query_var(‘taxonomy’)
    );
    ?>

    この先どのように書けばいいのでしょうか?
    まったくの無知で大変申し訳ございません。
    どうぞよろしくお願いいたします。

    #未検証

    <?php
    $term = get_term_by(
      'slug',
      get_query_var( 'term' ),
      get_query_var( 'taxonomy' )
    );
    
    if ( $term->parent ) { // 子?
      $posts = get_posts( array(
        'taxonomy' => get_query_var( 'taxonomy' ),
        'term' => get_query_var( 'term' ),
      ) );
      ?><ul><?php
      foreach ( (array) $posts as $post ) :
        setup_postdata( $post );
        printf(
          '<li><a href="%1$s">%2$s</a></li>',
          esc_url( get_permalink( get_the_ID() ) ),
          esc_html( get_the_title( get_the_ID() ) ),
        );
      endforeach;
      ?></ul><?php
      wp_reset_postdata();
    } else {
      wp_list_categories( array(
        'taxonomy' => get_query_var( 'taxonomy' ),
        'child_of' => $term->term_id,
      ) );
    }
    ?>

    マークアップはお好みで◎

    kzさん、ご回答いただきましてありがとうございます。
    泣けるほどうれしいです!!

    親ページに子ページのカテゴリーを表示は出来たのですが、
    子には商品ページ一覧を表示させる事が出来ませんでした。

    お時間がある時に教えていただけたらと思います。
    ド初心者で大変申し訳ございません。
    どうぞよろしくお願いいたします。

    ぁ、普通にループ回せば良い気が。

    (略)
    if ( $term->parent ) { // 子?
      ?><ul><?php
      while ( have_posts() ) : the_post();
        printf(
          '<li><a href="%1$s">%2$s</a></li>',
          esc_url( get_permalink() ),
          esc_html( get_the_title() ),
        );
      endwhile;
      ?></ul><?php
    } else {
     (略)

    ありがとうございます!
    非常に助かりました!!

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「カスタムタクソノミーで親には子のカテゴリ、子には商品ページ一覧を表」には新たに返信することはできません。