Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
WPBカップ
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

方法WordPressでプラグインを使わずにサムネイル付きの関連投稿をする。

WordPressサイトに関連投稿のリストを表示したいが、プラグインではなくコードを使いたいとお考えですか?

ブログの訪問者が興味のある投稿を読み終えたとき、関連する投稿のリストを提供することで、訪問者の興味を引きつけ、新しいコンテンツを見つけやすくなります。

この投稿では、WordPressで関連投稿をプラグイン必須でなくコードを使って表示する方法を紹介する。

How to: Related Posts with Thumbnails in WordPress Without Plugins

なぜWordPressで関連投稿を表示するのか?

WordPressブログが成長し始めると、ユーザーが同じトピックに関する他の投稿を見つけるのが難しくなることがあります。

各ブログ記事の最後に関連コンテンツのリストを表示することは、訪問者をサイトにとどめ、ページビューを増やす素晴らしい方法です。また、人々が見つけやすい場所に最高のコンテンツを表示することで、最も重要なページの視認性を向上させることもできます。

もしあなたがコードに詳しくないのであれば、コードなしで関連投稿を表示できるWordPressの関連投稿プラグインを選ぶ方が簡単だろう。

しかし、プラグインを使わずに関連投稿を表示できないかと思ったことがある方のために、コードだけでサムネイル付きの関連投稿を生成できる2つの異なるアルゴリズムをご紹介します:

注:関連投稿にサムネイルを表示させたい場合は、まずそれらの投稿にアイキャッチ画像を追加してください。

方法1:WordPressで関連投稿をタグで表示する方法

関連コンテンツを探す効率的な方法の一つは、同じタグを共有する他の投稿を探すことです。タグは多くの場合、投稿に含まれる特定の詳細に焦点を当てるために使用されます。

このことを念頭に置いて、投稿に共通のタグを追加しておくとよいでしょう。タグはWordPressエディターの「タグ」ボックスに入力できます。

The ‘Tags’ Settings Box in the WordPress Editor

投稿にタグを追加したら、次にすることは、テーマのsingle.phpテンプレートに以下のコードスニペットを追加することです。

サイトにコードを追加する際にヘルプが必要な場合は、ウェブ上のスニペットをWordPressに貼り付ける方法のガイドを参照してください。

$orig_post = $post;
global $post;
$tags = wp_get_post_tags($post->ID);
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'=>5, // Number of related posts that will be shown.
'ignore_sticky_posts'=>1
);
$my_query = new wp_query( $args );
if( $my_query->have_posts() ) {
   
echo '<div id="relatedposts"><h3>Related Posts</h3><ul>';
   
while( $my_query->have_posts() ) {
$my_query->the_post(); ?>
   
<li><div class="relatedthumb"><a href="<?php the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><!--?php the_post_thumbnail(); ?--></a></div>
<div class="relatedcontent">
<h3><a href="<?php the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><!--?php the_title(); ?--></a></h3>
<!--?php the_time('M j, Y') ?-->
</div>
</li>
<!--?php }
echo '</ul--></ul></div>';
}
}
$post = $orig_post;
wp_reset_query();

このコードは、ページに関連するタグを探し、類似したタグを持つページをフェッチするためにデータベースクエリーを実行する。

コードはどこに貼り付けるのですか?お使いのテーマにもよりますが、ほとんどの場合、メイン投稿の後、コメント欄のすぐ上にあるテーマのsingle.phpテンプレートにコードを貼り付けることができるはずです。

私たちのデモサイトのようにTwenty Twenty-Oneテーマを使用している場合、コードを貼り付けるのに適した場所は、template-parts/content/content-single.phpファイルのヘッダーの後、<?php the_content();の直後です。

Related Content by Tags Preview

これにより、WordPressの投稿日に関連コンテンツが自動的に表示されます。カスタムCSSを追加して、関連投稿のスタイルと外観をテーマに一致するように変更する必要があります。

Related Posts example

ヒント:テーマファイルを編集する代わりに、WPCodeのようなコードスニペットプラグインを使用することをお勧めします。

WPCodeは、WordPressでカスタマイザーコードを安全かつ簡単に追加することができます。さらに、投稿日の後など、WordPressサイト上の特定の場所にスニペットを自動的に挿入して実行できる「挿入」オプションが付属しています。

WPCode insertion options for custom code snippets

詳細については、WordPressでカスタムコードを追加する方法についてのガイドを参照してください。また、プラグインの詳細については、WPCodeの詳細なレビューをご覧ください。

方法2:WordPressでカテゴリー別に関連投稿を表示する方法

関連コンテンツを表示するもう一つの方法は、同じカテゴリーにある投稿をリストアップすることです。この方法の利点は、関連投稿のリストがほとんど空白にならないことです。

方法1と同様に、テーマのsingle.phpテンプレート、またはWPCodeのようなコード・スニペット・プラグインにコード・スニペットを追加する必要があります。詳しくは、方法1とWordPressでカスタマイザーを追加する方法をご覧ください。

$orig_post = $post;
global $post;
$categories = get_the_category($post->ID);
if ($categories) {
$category_ids = array();
foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
$args=array(
'category__in' => $category_ids,
'post__not_in' => array($post->ID),
'posts_per_page'=> 2, // Number of related posts that will be shown.
'ignore_sticky_posts'=>1
);
$my_query = new wp_query( $args );
if( $my_query->have_posts() ) {
echo '<div id="related_posts"><h3>Related Posts</h3><ul>';
while( $my_query->have_posts() ) {
$my_query->the_post();?>
   
<li><div class="relatedthumb"><a href="<?php the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><!--?php the_post_thumbnail(); ?--></a></div>
<div class="relatedcontent">
<h3><a href="<?php the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><!--?php the_title(); ?--></a></h3>
<!--?php the_time('M j, Y') ?-->
</div>
</li>
<!--?php }
echo '</ul--></ul></div>';
}
}
$post = $orig_post;
wp_reset_query();

これで、各投稿の下に関連コンテンツのリストが表示される。

関連ページのスタイルや外観を変更したい場合は、テーマに一致するカスタムCSSを追加する必要があります。

WordPressでの関連投稿の表示についてさらに詳しく知りたいですか?関連投稿に関する役立つチュートリアルをご覧ください:

このチュートリアルで、WordPressでプラグインなしで関連投稿をサムネイル付きで表示する方法を学んでいただけたなら幸いです。また、WordPress サイトの訪問者をトラッキングする方法や、ウェブサイトを高速化するための 24 のヒントもご覧ください。

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

情報開示 私たちのコンテンツは読者支援型です。これは、あなたが私たちのリンクの一部をクリックした場合、私たちはコミッションを得ることができることを意味します。 WPBeginnerの資金源 をご覧ください。3$編集プロセスをご覧ください。

アバター

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

究極のWordPressツールキット

ツールキットへの無料アクセス - すべてのプロフェッショナルが持つべきWordPress関連製品とリソースのコレクション!

Reader Interactions

182件のコメント返信を残す

  1. kabir bairwa

    I was trying to correct WordPress-related posts but it was not happening when I saw this code and I used this code in my WordPressfile so now my WordPress-related posts coming properly

    • WPBeginner Support

      Happy to hear our guide could help you!

      管理者

  2. Jennifer

    Is there a way to have related post based on the post title. I do not have tags and my categories really don’t do the trick since there is no distinction between them.

    This would be of great help if you had a code to show related content based on the post title.

  3. aman

    I want code to display random posts and pages with thumbnail

  4. karan4official

    Instead of using <? use <?php everywhere

    • WPBeginner Support

      Thank you for your feedback, this article should currently be using the php version everywhere :)

      管理者

  5. Motahar Hossain

    Thank you for your nice post.

    Here “ignore_sticky_posts” should be used instead of “caller_get_posts”. Because “caller_get_posts” is deprecated.

    • WPBeginner Support

      Thanks for pointing that out, we’ll be sure to look into updating the article :)

      管理者

  6. Frank

    Can you direct me as to where to add what categories I would like to limit the related posts to?

    • WPBeginner Support

      This method limits the posts to the category the post is in. To limit the categories you would need to create an if statement to exclude certain categories.

      管理者

  7. Greg

    Is it possible where there are more than X related posts by category that are related that you can randomise say 3 posts?

    • WPBeginner Support

      While it is possible, it would require adding far more to this, you may want to look into a plugin for that type of customization.

      管理者

  8. Akiode obasanjo

    No CSS is added

  9. luigi

    Hi, is it possible to limit them by date? Show only those of the last year?

  10. Luis

    I found a way to make the smaller thumbnails, but it shows them in a column and not horizontally. How can this be modified?

  11. Luis

    The script is working well. The only problem I have is that the thumb-nails are very large. Would there be some way to make them smaller?

  12. Ana

    how to do for create a shortcode for this code, I created the function but I do not know how to return the print to the page.

  13. Musarrof

    Why I’m facing this problem. syntax error, unexpected end of file
    Please help me.

  14. Mike

    Hello,
    I’m a beginner in WorldPress.
    I’d like to show Related Posts.
    In the main menu I have Category A, and in Category A – Subcategories A, B and C. The posts are in Category A, but they can also be present in all 3 Subcategories.
    When choosing one of the Related Posts something goes wrong and the posts from the initially chosen Subcategory don’t show correct anymore.

  15. Anthony Reese

    Thanks for the tutorial. This was incredibly useful and worked like a charm!

  16. pawan singh

    Hi Admin, Very informative article. I like your site because of simplicity and straightforwardness. All articles are to the point but when it comes to sharing the knowledge of code you become too technical. Just ignore the fact that much of the visitors are not coding expert. Wouldn’t it be much better if you just add 2or 3 more lines in your explanation to make it complete and easily understandable to all. Anyway, great article But I want to know which code or plugin is Wpbeginner using?

  17. Ahmad

    really helpful, thanks !

  18. Tracy

    what really sucks about your articles is you never actually say HOW to do something. It’s all well and good to tell me to put code into my single.php, but as a beginner I don’t know what that is or where to find it. You might want to think about putting this kind of critical information into your articles instead of assuming we know what it means, or that we have surfed every one of your articles to figure it out.

    • Victor Siyaya

      I Agree. I have no idea where to paste this code too.

  19. Rose

    Thanks for the great post, very useful. I came across an error in the code so wanted to share in hope it may be useful for others in the future. The error was:

    WP_Query was called with an argument that is deprecated since version 3.1.0! “caller_get_posts” is deprecated. Use “ignore_sticky_posts” instead.

    So I simply replaced it and it worked fine. I am also using namespacing so I needed to change WP_Query to \WP_Query plus I changed the order of the below:

    global $post;
    $orig_post = $post;

    Thanks again
    Rose

  20. sanjeev Kumar

    sir
    I am using the code of categories working properly but one thing is when on home page same category of 2 or 3 post then the link show balack but i want to show to show category which is next post

  21. Luan

    Hi,

    Thanks for your post. I added the code in content-single.php and it worked. However, it displays as 1 column not 3 columns like your example. Could you please help me on this? I want my related posts to be displayed in 1 row, 3 columns. Thanks so much.

  22. Claudio

    Hello!
    The first link on Aditional Sources, is broken.
    Thank you by the code.

返信を残す

コメントありがとうございます。すべてのコメントは私たちのコメントポリシーに従ってモデレートされ、あなたのメールアドレスが公開されることはありませんのでご留意ください。名前欄にキーワードを使用しないでください。個人的で有意義な会話をしましょう。