【コピペOK】WordPressでプラグインを使わずに関連記事を表示する

WordPress

WordPressで関連記事を表示するには、プラグインを利用すれば簡単にできるのですが、プラグインをいれすぎるとメンテナンスするのが面倒だし、カスタマイズしにくかったりします。

今回、プラグインを使わずに関連記事を表示する方法を紹介しますので、ぜひ使ってみてください。

完成イメージ

仕様はこんな感じです。

  • 同じカテゴリーの中からランダムに記事を選択
  • アイキャッチ画像と記事のタイトルを表示
  • アイキャッチ画像が設定されていなければNoImage画像を表示
  • 関連記事がなければ、「記事がありません」を表示

ソースコード

single.phpに直接貼り付けてもいいのですが、ちょっとコードが長いので私は関連記事専用のphpファイルに書き出しています。
ここでは、relatedposts.phpを作成して以下を貼り付ける方法で進めますね。

<div class="relatedposts-articles">
<p>関連する記事</p>
<?php
	// カテゴリーが複数設定されている場合は、どれかをランダムに取得
	$categories = wp_get_post_categories($post->ID, array('orderby'=>'rand'));
	//表示したい記事要素を設定
	if ($categories) {
	    $args = array(
	        'category__in' => array($categories[0]), // カテゴリーのIDで記事を取得
	        'post__not_in' => array($post->ID), // 表示している記事は除外する
	        'showposts'=>3, // 取得したい記事数
	        'caller_get_posts'=>1, // 取得した記事を1番目から表示する
	        'orderby'=> 'rand' // ランダムで取得する
	    );
		$my_query = new WP_Query($args);
		if( $my_query->have_posts() ) {
			while ($my_query->have_posts()) {
				$my_query->the_post();
				//アイキャッチ画像のURLを取得
				$thumb = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'thumbnail_size' );
				if ( !empty($thumb['0']) ) {
					$url = $thumb['0'];
				} else {
					$url = "http://design-ec.com/d/e_others_50/l_e_others_500.png";
				}
?>
				<div class="relatedposts">
					<!--アイキャッチ画像を表示-->
					<div class="relatedposts-thumbnail">
						<img src=<?=$url?>>
					</div>
					<!--記事のタイトルを取得-->
					<div class="relatedposts-content">
						<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
					</div>
				</div>
				<?php
			}
			wp_reset_query();
		} else {
		?>
		<span class="no-related">関連記事はありません</span>
		<?php
		}
	}
?>
</div>

上記のソースに関しては、以下のブログを参考にさせていただいています。
ワードプレスで関連記事を表示する簡単な方法プラグイン無し
【WordPress】プラグインなしで関連記事を表示する方法【CSS付き】

 

.relatedposts-thumbnail img {
  max-width: 100px;
  max-height: 100px;
}

.relatedposts {
  display: flex;
  padding: 5px;
  margin: 4px;
  border: solid 2px #e5e5e5;
  max-width: 500px;
  box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.25);
  background-color: #f6f6f647;
  transition: all 0.3s ease 0s;
}

.relatedposts:hover {
  box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.25);
  transform: translateY(-0.1875em);
}

.relatedposts-articles p {
  text-align: center;
  font-size: 1.4em;
  font-weight: bold;
  color: #585858;
  border-bottom: solid 3px #f0ebeb;
}

.relatedposts a {
  padding: 10px;
  color: #337ab7;
  text-decoration: none;
  font-size: 1.1em;
  font-weight: bold;
}

.relatedposts-content {
  margin: auto 0;
}

.no-related {
  font-size: 1.2em;
}

single.phpに以下のコードを追記することで任意の場所に表示することができます。

<?php get_template_part( 'relatedposts' ); ?>

まとめ

コピペできますので、ぜひ試してみてください。
あとCSSはお好みの形で変えてください。

それでは、また。

コメント

タイトルとURLをコピーしました