サポート » 使い方全般 » 投稿記事にカテゴリーを複数選択した場合の表示方法について

  • 解決済 non888

    (@non888)


    wordpreesで1記事に複数のカテゴリーを選択した時、選択したカテゴリー一覧全てにその記事を表示させたいのですが、うまくいかなく困っています。

    タイトル:テスト投稿
    の記事を
    カテゴリー[新着情報][ブログ]
    の2つ選択した場合、新着情報一覧ページとブログ一覧ページにタイトル:テスト投稿を表示させたいがカテゴリーの順番で新着情報が上位になっているため、新着情報の判定しかしてくれません

    ちなみに各カテゴリー一覧はデザインが少し違うためif文を使いカテゴリーidで判定し振り分けてます

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • ちなみに各カテゴリー一覧はデザインが少し違うためif文を使いカテゴリーidで判定し振り分けてます

    これがなにか悪さをしている気がします。

    カテゴリーの一覧ページでは、カテゴリーごとに別のテンプレートを適用できるので、それで対応してみるのはどうでしょう、
    テンプレート階層 – WordPress Codex 日本語版

    non888さん

    おそらく原因は、複数のカテゴリーを選んだ場合の処理だと想定されます。
    通常であれば、「もし、カテゴリーIDがXXだったら~~~」みたいな条件分岐をされていると思いますが、複数の場合は値が「array」で返ってくるため条件分岐上は「else」が適応されてしまいます。

    ですので、対策としては「if (in_array( 1, $term_id)):」のような配列関数を利用した条件分岐を施す必要があります。

    どういう条件分岐をされているか不明でしたので、私だったらこんなかんじかなというサンプルを乗せておきました。

    
    <?php
    
    //タームを取得
    
    $taxonomy = 'category';
    $terms = array();
    $term = array();
    $term_id = '';
    
    $id = intval($post -> ID);//記事の投稿IDを取得
    
    if($id):
      $terms = get_the_terms($id, $taxonomy);//$idは投稿IDです
      if($terms):
        foreach($terms as $term):
          
          $term_id[] = intval($term->term_id);//term_id(カテゴリーID)を配列に
    
        endforeach;//END $terms
    
      endif;//END
    
      //タームIDからの条件分岐
      if (in_array( 1, $term_id))://例:term_id(カテゴリーID)に1が含まれるときの処理
    
      elseif(in_array( 2, $term_id)):
    
      
      else:
    
      endif;
      //END タームIDからの条件分岐
      
    
    endif;//END $id
    
    ?>
    
    
    • この返信は2 年、 1 ヶ月前に  photographer hiro. さんが編集しました。理由: 誤字修正
    • この返信は2 年、 1 ヶ月前に  photographer hiro. さんが編集しました。理由: 誤字修正

    みなさん回答ありがとうございました。
    photographer hiro.さんのサンプルコードを使用してうまくいくことができました。
    ありがとうございます。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「投稿記事にカテゴリーを複数選択した場合の表示方法について」には新たに返信することはできません。