関連記事をプラグインを使わずに表示する!WordPress高速化Tips!

 WordPressで関連記事を適切に表示するのはアクセスアップに有効です。しかしプラグインを使って関連記事を表示する方法はたくさんあるのですが、WordPressの高速化を考えると、できるだけプラグインは使いたくないのが本音です。そこでプラグインを使わずに関連記事を表示させてみました。


概要


 「関連記事」として、同じカテゴリーの記事か、同じタグを持っている記事を表示するようにしました。それぞれアイキャッチ画像が入るようにしています。

 記事の取得には、WP_Queryを使いました。詳しいパラメーターの使い方などは下記にありますので、参考にしてください。

関数リファレンス/WP Query – WordPress Codex 日本語版

 記事の関連の判定を、プラグイン独自の仕様で行っている場合は、このコードはプラグインの代替にはなりませんので、ご注意ください。

サンプル


関連記事に同じタグの記事を使う場合

<?php
// タグを使う場合はこちら
$tags = wp_get_post_tags($post->ID, array('orderby'=>'rand')); // 複数タグを持つ場合ランダムで取得
if ($tags) {
$first_tag = $tags[0]->term_id;
$args=array(
'tag__in' => array($first_tag), // タグのIDで記事を取得
'post__not_in' => array($post->ID), // 表示している記事を除く
'showposts'=>3, // 取得記事数
'caller_get_posts'=>1, // 取得した記事の何番目から表示するか
'orderby'=> 'rand' // 記事をランダムで取得
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) { ?>
<ul>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><?php the_post_thumbnail(array(100,100)); ?>
<p><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></p></li>
<?php
endwhile;
}
wp_reset_query();
}
?>
</ul>


関連記事に同じカテゴリーの記事を使う場合

<?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, // 取得した記事の何番目から表示するか
'orderby'=> 'rand' // 記事をランダムで取得
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) { ?>
<ul>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><?php the_post_thumbnail(array(100,100)); ?>
<p><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></p></li>
<?php
endwhile;
}
wp_reset_query();
}
?>
</ul>

 出力するhtmlタグを好きなように組み立てて、スタイルシートで整形すればokです!

 これで関連記事用のプラグインを減らすことができますので、WordPressがさらに高速化したはず!?

コメント

コメントを残す

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください