Ver1.3.1をリリースしました(11/22)

関連記事に親カテゴリー内の記事も含める方法

SANGOの関連記事に表示されるのは、初期設定では「同じカテゴリーに属する記事だけ」になります。

関連記事対応A PC

親カテゴリーが存在する場合にも、親カテゴリーの記事までは表示されません。もし、親カテゴリーに属する記事も表示させたい場合は、少しカスタマイズを行う必要があります。

SANGOで親カテゴリーの記事まで関連記事に含めるカスタマイズ手順

このカスタマイズにより、関連記事には、以下のリンクが表示されるようになります。

  • 親カテゴリーに属する記事
  • 親カテゴリーに含まれる子カテゴリーに属する記事
  • その記事が属するカテゴリー内の記事

準備

テーマをアップデートしたときにカスタマイズ内容が消えてしまわないように、子テーマを使うようにしましょう。

WordPressで子テーマを活用して安全にカスタマイズを行う方法

また、バックアップも忘れずに取っておきましょう。

WordPressでバックアップを取る4つの方法(初心者向け)
WordPressでバックアップを取る4つの方法(初心者向け)

functions.phpにコードを貼付け

以下のコードを全て子テーマの functions.phpにコピペします。

functions.php
//関連記事に親カテゴリーの記事を表示するように
  function related_posts() {
      global $post;
      $categories = get_the_category();
      if(!$categories) return false;
      $parent_id = $categories[0]->category_parent;//親カテゴリーのID

      if($parent_id){//親カテゴリーが存在する場合
        $cat_ids = get_term_children($parent_id, 'category');//子カテゴリーの全ID
        $all_cat_ids = array();
      	foreach ($cat_ids as $value) {
      		$all_cat_ids[] .= $value;//子カテゴリーのIDを配列に追加
      	}
        $all_cat_ids[] .= $parent_id;//親カテゴリーのIDを配列に追加
      } else {//親カテゴリがない場合はそのカテゴリだけ
        $all_cat_ids = $categories[0]->cat_ID;
      }

      $num = (get_option('num_related_posts')) ? esc_attr(get_option('num_related_posts')) : 6;/*出力数*/
      $related_posts = get_posts(array(
        'category__in' => $all_cat_ids,
        'exclude' => $post->ID, 
        'numberposts' => $num, 
        'orderby'=>'rand'
        ));

    if($related_posts) {
      
      $design = get_theme_mod('related_posts_type') ? esc_attr(get_theme_mod('related_posts_type')) : 'type_a';
      if(get_option('related_no_slider') && ($design != 'type_c')) {
        $design .= ' no_slide';
      }

      if(get_option('related_post_title')) {
        echo '<h3 class="h-undeline related_title">'.get_option('related_post_title').'</h3>';
      }
      
      echo '<div class="related-posts '.$design.'" ontouchstart =""><ul>';

      foreach($related_posts as $related_post):
          $thumbnail = get_post_thumbnail_id( $related_post->ID );
          $src_info = wp_get_attachment_image_src($thumbnail, 'thumb-520');
          $src = $src_info[0];

            if(!$src && get_option('thumb_upload')) {//アイキャッチ画像が無い時は登録されたデフォルト画像を探す
              $search = array('.jpg','.jpeg','.png','.gif','.bmp');
              $replace = array('-520x300.jpg','-520x300.jpeg','-520x300.png','-520x300.gif','-520x300.bmp');
              $src = str_replace($search, $replace , esc_url(get_option('thumb_upload')));

            } elseif(!$src) {//それでも無い場合はテンプレートフォルダから
              $src = get_template_directory_uri() . '/library/images/default_small.jpg';}

          $title = $related_post->post_title;
        ?><li><a href="<?php echo get_permalink($related_post->ID); ?>">
              <figure class="rlmg">
                <img src="<?php echo $src; ?>" alt="<?php echo $title; ?>">
              </figure>
              <div class="rep"><p><?php echo $title ?></p></div>
            </a>
          </li><?php
    endforeach;
    wp_reset_postdata();
    echo '</ul></div>';
    }
  }/* end related posts function */
  //END 関連記事に親カテゴリーの記事を表示するように

カスタマイズはこれだけです。他のファイルを触る必要はありません。
もしかすると今後のテーマのアップデートで、カスタマイザーから簡単に上記の設定をできるようにするかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です