プラグイン不要!WordPressで関連記事を出力する方法
- WordPressで関連記事を出力したい
- プラグインを導入していたが遅いため自前で関連記事を用意したい
WordPressで関連記事を出力する方法
以下は実際に私がカスタムしている関連記事を出力するためのものです。<div class="relatedposts"> <h2>関連記事</h2> <?php $orig_post = $post; global $post; $tags = wp_get_post_tags($post->ID);//WordPressのタグから関連度を取得するためタグを取得します if ($tags) { $tag_ids = array(); foreach ($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id; $args = array( 'tag__in' => $tag_ids, 'post__not_in' => array($post->ID), 'posts_per_page' => 4, // 表示する関連記事の数 'caller_get_posts' => 1, 'orderby' => 'rand', // 並び順はランダム ); $my_query = new wp_query($args); ?> <div class="clearfix"> <?php while ($my_query->have_posts()) { $my_query->the_post(); $thumb = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'thumbnail_size'); if (!empty($thumb['0'])) { $url = $thumb['0']; } else { $url = get_template_directory_uri()."/images/noImage.png"; } ?> <div class="related_box_ind inner"> <div itemscope itemtype='https://schema.org/ImageObject' class="thumbnail"> <a style="background-image:url(<?= $url ?>);" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" itemprop="url" class="thumbnail-img"></a> </div> <h5> <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"> <?php the_title(); ?> </a> </h5> <div class="clearfix"> <p> <?php $cat = get_the_category(); $cat = $cat[0]; echo '<a href="' . get_bloginfo('url') . '/category/' . $cat->category_nicename . '">'; echo $cat->cat_name; echo '</a>'; ?> </p> </div> </div> <?php } // while文ここまで ?> </div> <?php } // IF文ここまで $post = $orig_post; wp_reset_query(); ?> </div><!-- 関連記事 -->
この関数は記事に設定されたタグを配列で取得します。wp_get_post_tags($post->ID);
このループで取得したタグの一つ一つについて実行していくようになっています。foreach ($tags as $individual_tag)
1つのタグに属する記事のクエリーを作成しています。この場合、あるタグに属している記事を4記事ランダムで取得しています。$tag_ids[] = $individual_tag->term_id; $args = array( 'tag__in' => $tag_ids, 'post__not_in' => array($post->ID), 'posts_per_page' => 4, // 表示する関連記事の数 'caller_get_posts' => 1, 'orderby' => 'rand', // 並び順はランダム ); $my_query = new wp_query($args);
このコードはおなじみのコードですね。 WordPressで記事を出力するためのループです。 wp_query関数で取得してきた投稿についてすべての記事についてループで回していますね。while ($my_query->have_posts()) {
こちらはある投稿のサムネイルの取得をするための鉄板の書き方ですね。 wp_get_attachment_image_src関数は以下のような内容を配列で返してきます。 [0] => url [1] => width [2] => height [3] => 真偽値: リサイズされいている場合は true、元のサイズの場合は false つまり、$thumb[0]にはサムネイルのURLが入ってますね。 その下の分岐ではサムネイルが無かったときにサムネイルが無い場合の標準画像を出力しています。 いかがでしたでしょうか? 関連記事というのは言ってしまえば同一のタグを持つ記事をランダムに出すことなので、予め記事に関連するタグを付けておく。 そして、現在表示中の記事が持つタグをループで回してそれに該当する記事を出力しているというわけです。 非常に軽量に動作しますのでプラグイン等が飽和してしまって少しでも簡略化したい場合におすすめですよ! 上記のプログラムを実際にページに組み込むにはどうすればよいのかを別記事にて解説したいと思います。$thumb = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'thumbnail_size');