WPBeginner

Beginner's Guide for WordPress

  • Blog
    • Beginners Guide
    • News
    • Opinion
    • Showcase
    • Themes
    • Tutorials
    • WordPress Plugins
  • Start Here
    • How to Start a Blog
    • Create a Website
    • Start an Online Store
    • Best Website Builder
    • Email Marketing
    • WordPress Hosting
    • Business Name Ideas
  • Deals
    • Bluehost Coupon
    • SiteGround Coupon
    • WP Engine Coupon
    • HostGator Coupon
    • Domain.com Coupon
    • Constant Contact
    • View All Deals »
  • Glossary
  • Videos
  • Products
X
☰
Beginner's Guide for WordPress / Start your WordPress Blog in minutes
Choosing the Best
WordPress Hosting
How to Easily
Install WordPress
Recommended
WordPress Plugins
View all Guides

WPBeginner» Blog» Themes» How to: Related Posts with Thumbnails in WordPress without Plugins

How to: Related Posts with Thumbnails in WordPress without Plugins

Last updated on May 3rd, 2017 by Editorial Staff
169 Shares
Share
Tweet
Share
Pin
Free WordPress Video Tutorials on YouTube by WPBeginner
How to: Related Posts with Thumbnails in WordPress without Plugins

Related posts can be easily displayed with plugins, but did you ever wonder how you could display related posts with a Thumbnail without using a Plugin? In this article, we will share two different algorithm which you can use to generate related posts with thumbnails and avoid using any plugin.

Note: We will utilize the built-in WordPress Post Thumbnail Function. So it is best if you implement this.

Related Posts by Tags

WordPress has this amazing taxonomy known as “Post Tags” which you can use. You can tag each of your posts with multiple keywords. This algorithm would find other posts with any one of the tag that the current post has and will list them.

<?php $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></div>';
}
}
$post = $orig_post;
wp_reset_query(); ?>

The above code is looking at the current post ID and all tags which are associated with it and it uses the wp_query function to look for all other posts that matches any original tag and display them. You can style the post anyway you want them.

Advantage: Most codes on the web cannot be used within the main post loop. Because the related posts are placed right after the main post and above the comments, this code is very helpful. We are saving the current post ID of the main loop and then recalling it at the end of our related posts code. Usually when you don’t do it this way, the two post ID codes gets mixed up and then the comments start acting weird which can break the comments, other plugins related to comments such as numbering system etc. So this code is good and it works.

Usage: Place this code anywhere you like in your single.php and it will work. But most of the time it is placed right above the comments in the main loop.

Related Posts by Category

This algorithm would find other posts within the same category as the current post, and it will list them as related posts. The advantage of this technique is that you will never have a blank spot for your related posts section.

<?php $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>
<?
}
echo '</ul></div>';
}
}
$post = $orig_post;
wp_reset_query(); ?>

This technique utilizes the same functions as the one above except we are just using the different criteria.

If you are creating a new project, or working on a client’s site, this could be very helpful.

Example

Add Related Posts with a Thumbnail in WordPress without using Plugins

Additional Sources:

Query Function and Template Tags for WordPress

169 Shares
Share
Tweet
Share
Pin
Popular on WPBeginner Right Now!
  • How to Properly Move Your Blog from WordPress.com to WordPress.org

  • Revealed: Why Building an Email List is so Important Today (6 Reasons)

    Revealed: Why Building an Email List is so Important Today (6 Reasons)

  • How to Start Your Own Podcast (Step by Step)

    How to Start Your Own Podcast (Step by Step)

  • How to Fix the Error Establishing a Database Connection in WordPress

    How to Fix the Error Establishing a Database Connection in WordPress

About the Editorial Staff

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi. Trusted by over 1.3 million readers worldwide.

The Ultimate WordPress Toolkit

179 Comments

Leave a Reply
  1. aman says:
    Oct 15, 2020 at 11:12 pm

    I want code to display random posts and pages with thumbnail

    Reply
    • WPBeginner Support says:
      Oct 16, 2020 at 10:11 am

      You would want to take a look at our guide below:

      https://www.wpbeginner.com/wp-tutorials/how-to-display-random-posts-in-wordpress/

      Reply
  2. karan4official says:
    Jun 17, 2020 at 1:03 pm

    Instead of using <? use <?php everywhere

    Reply
    • WPBeginner Support says:
      Jun 18, 2020 at 8:42 am

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

      Reply
  3. Motahar Hossain says:
    Aug 28, 2019 at 3:20 pm

    Thank you for your nice post.

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

    Reply
    • WPBeginner Support says:
      Aug 29, 2019 at 10:02 am

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

      Reply
  4. Frank says:
    Apr 24, 2019 at 2:59 pm

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

    Reply
    • WPBeginner Support says:
      Apr 25, 2019 at 10:16 am

      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.

      Reply
  5. Greg says:
    Mar 11, 2019 at 5:35 am

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

    Reply
    • WPBeginner Support says:
      Mar 11, 2019 at 1:04 pm

      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.

      Reply
  6. Akiode obasanjo says:
    Nov 20, 2018 at 7:56 am

    No CSS is added

    Reply
  7. luigi says:
    Mar 27, 2018 at 7:02 am

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

    Reply
  8. Luis says:
    Feb 27, 2018 at 6:54 pm

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

    Reply
  9. Luis says:
    Feb 27, 2018 at 5:30 pm

    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?

    Reply
    • WPBeginner Support says:
      Feb 27, 2018 at 5:45 pm

      Hi Luis,

      It uses the default post-thumbnail size. You can create a new thumbnail size and then use it in the code like this:

      <?php the_post_thumbnail( 'your-custom-size-name' ); ?>
      
      Reply
  10. Ana says:
    Nov 13, 2017 at 9:21 am

    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.

    Reply
  11. Musarrof says:
    Oct 31, 2017 at 2:01 pm

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

    Reply
  12. Mike says:
    Oct 27, 2017 at 7:22 am

    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.

    Reply
  13. Anthony Reese says:
    Oct 4, 2017 at 5:16 pm

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

    Reply
  14. pawan singh says:
    Aug 28, 2017 at 7:47 am

    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?

    Reply
  15. Ahmad says:
    Aug 20, 2017 at 10:10 pm

    really helpful, thanks !

    Reply
  16. Tracy says:
    Jul 26, 2017 at 6:34 pm

    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.

    Reply
    • Victor Siyaya says:
      Sep 8, 2017 at 7:23 am

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

      Reply
  17. Rose says:
    May 26, 2017 at 12:59 am

    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

    Reply
  18. sanjeev Kumar says:
    May 8, 2017 at 3:26 am

    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

    Reply
  19. Luan says:
    May 3, 2017 at 5:20 am

    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.

    Reply
  20. Claudio says:
    Apr 20, 2017 at 5:10 pm

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

    Reply
    • WPBeginner Support says:
      May 3, 2017 at 11:00 pm

      Hi Claudio,

      Thank you for notifying us. We have removed the broken link.

      Reply
  21. Abhijit Badgujar says:
    Feb 13, 2017 at 4:21 am

    Hi,

    I have a ‘Related post’ option from my wordpress theme and i am already using it. I have displayed 6 posts after the content. The problem is, it only shows 3 related posts and next three can be seen when you slide it horizontally. I don’t want that option, i want the site to display all 6 posts outright. Can you tell me how to do it?

    Reply
  22. Gyuricza Laszlo says:
    Jan 30, 2017 at 1:56 am

    Hello,

    Your guidance was amazing but how can i exclude a specific category from the related posts in order to not display it?

    Thank you, in advance!
    Sincerely,
    LAszlo Gyuricza

    Reply
    • WPBeginner Support says:
      Jan 30, 2017 at 8:17 am

      You can try one of the related posts plugins.

      Reply
  23. Tuta says:
    Jan 18, 2017 at 8:53 pm

    Hi Syed. How do I style it?

    Reply
    • WPBeginner Support says:
      Jan 18, 2017 at 10:05 pm

      Hi Tuta,

      You can use #relatedposts .relatedthumb and .relatedcontent selectors in your CSS to style it.

      Reply
  24. Dev Rathore says:
    Aug 12, 2016 at 11:37 am

    How to Display All Post List in one Page

    Reply
  25. Suraz says:
    Mar 12, 2016 at 11:45 am

    How to Show Related Post It In two Columns Like here in WPBeginner??

    Reply
  26. Tom says:
    Nov 1, 2015 at 5:01 am

    Nice solution but not definitive for my exigence. Infact the mean problem is that this code sort the related posts from the most recent in the same category or tags. The result is that when you browse inside a category/tag you’ll always display the same few last posts, limiting hardly the older posts of your site. That’s a right conclusion? Please if you tried it share your opinion!

    Reply
    • Joy says:
      Dec 6, 2016 at 10:49 am

      1. After ‘caller_get_posts’=>1 put a comma(,)
      2. Hit enter button [next line]
      3. Add ‘orderby’=>’rand’
      You are done. Now related posts will be shown randomly. Thank you.

      Reply
  27. Zane DeVault says:
    Oct 20, 2015 at 10:18 am

    This code works great. I was wondering if you could explain what this part of the code does?

    $orig_post = $post;
    global $post;
    …
    $post = $orig_post;

    I think I have a grasp on what the rest is doing, but this is throwing me for a loop.

    Thanks for all your great content!

    Reply
  28. may nghe len says:
    Sep 28, 2015 at 6:59 am

    Let me ask the Code Related Posts by Category posted in public places. thank you

    Reply
  29. atiq says:
    Aug 31, 2015 at 4:36 pm

    in Twentyfifteen default theme where should i insert this code in single.php file? If i inserted above the endwhile; it shows syntax error, unexpected ‘endwhile’ and if i inserted below the endwhile; but above the endif; it shows syntax error, unexpected ‘endif’

    Any solution for this?

    Thanks

    Reply
    • Mohammad Kazemi says:
      Jan 14, 2017 at 2:47 am

      You must use ‘<?php' not '<?'

      Reply
  30. atiq says:
    Aug 31, 2015 at 4:35 pm

    in Twentyfifteen default theme where should i insert this code in single.php file? If i inserted above the enwhile; it shows syntax error, unexpected ‘endwhile’ and if i inserted below the enwwile but above the endif; it shows syntax error, unexpected ‘endif’

    Any solution for this?

    Thanks

    Reply
  31. Marcel Tripoux says:
    Aug 15, 2015 at 11:22 pm

    Hi! Great post!

    Is there a way to combine both option, in order to call related tags only in the current category ?

    Reply
  32. Bambang says:
    Jul 8, 2015 at 10:19 am

    my single.php layout :

    //the_content bla bla bla code here

    //Copy paste Related Posts by Tags code here

    //comments_template bla bla bla code here

    ——————————-
    the result i got error :
    Parse error: syntax error, unexpected ‘endwhile’ (T_ENDWHILE) in …
    ——————————-
    after i change ” <? } " to " <?php } " it worked,

    just sugestion, maybe it better if you put complete php open tag
    thanks :)

    Reply
  33. Alex says:
    Jul 3, 2015 at 1:47 pm

    Works perfect. How to exclude the definite tag from Related Posts by Tags? I mean how to change the code when algorithm would find other posts with any one of the tag (except tag 595 for instance) that the current post has and will list them.

    Reply
  34. Mohammad says:
    Apr 25, 2015 at 12:08 pm

    Thanks for the great code
    It works great but you didn’t address any css codes for a more beautiful look for this section. Can you please do this? I’m newbie to coding and I tried some codes but they didn’t work. In your codes there is:
    echo ‘Related Posts’;
    but in some similar codes I found in other resources there is:

    and in css some codes like this:
    .relatedposts {
    font-size: 12px;
    width: 640px;
    }
    .relatedposts h3 {
    font-size: 20px;
    margin: 0 0 5px;
    }
    will get that a nice look but it didn’t work with your code.
    Thanks

    Reply
  35. Muthu says:
    Apr 21, 2015 at 10:19 am

    Dear collegue this is an error am getting while pasting this code on single.php file.kindly tell me exacctly where should i paste this code.

    Parse error: syntax error, unexpected end of file in C:\xampp\htdocs\beingusefull\wp-content\themes\TechPlus\single.php on line 78

    Reply
  36. WPBeginner Staff says:
    Feb 19, 2015 at 8:23 pm

    That will depend on your individual theme and template. You need to add the conditional tag after the WordPress loop begins. After this line:
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    Reply
    • Jenny says:
      Jun 19, 2015 at 4:26 pm

      I got that error too and this is my updated code:
      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.
      ‘caller_get_posts’=>1
      );
      $my_query = new wp_query( $args );
      if( $my_query->have_posts() ) { ?>
      Related Posts
      have_posts() ) : $my_query->the_post(); ?>
      <a href="” rel=”bookmark” title=””>

      <a href="” rel=”bookmark” title=””>

      Reply
  37. wiyono says:
    Dec 14, 2014 at 1:12 pm

    When the post i share on facebook, the thumbnail getting from related post, can i get the thumbnail from the main page? thx

    Reply
    • Lacey Tech Solutions says:
      Feb 6, 2015 at 10:45 am

      If you’re using Yoast’s WordPress SEO plugin you can specify the thumbnail URL under the social tab for the post. If the social tab isn’t shown then you need to click the Yoast SEO link in the WordPress admin menu then click “Social”. In the social page tick the option for, “Add Open Graph meta data” and save. Go back into your post and you can specify the thumbnail image you want to use when the post is shared. If you don’t implicitly set the post image the user has the option of selecting any image that appears on the page, which is why your recent post images are being pulled in when you share the article link.

      Reply
  38. Gretchen Louise says:
    Dec 10, 2014 at 11:31 pm

    Any thoughts on how much of a database/server load this would be on a large self-hosted site? Looking for a related posts alternative now that #nRelate is no longer available.

    Reply
  39. WPBeginner Staff says:
    Nov 16, 2014 at 4:10 pm

    Use conditional tag if (is_single()) on the first line of the code.

    Reply
    • vipul says:
      Feb 19, 2015 at 7:51 am

      can you tell where and how?

      Reply
  40. Rachael says:
    Nov 15, 2014 at 11:02 am

    This doesn’t work in the single.php for me, b/c related posts show up at the very bottom of the page. It works with loop.php but then they also show up on the homepage – any ideas on a fix so it just shows in single posts and not the homepage?

    Reply
  41. kate // always craving // says:
    Oct 2, 2014 at 10:17 pm

    Hi, I must be the only one who is not doing this correctly. My theme supports featured images, I added this code before the comments within the single.php file. Any tips on exactly where to input in the code?

    Reply
  42. Keyko Sakura says:
    Aug 1, 2014 at 9:29 pm

    All the codes I find never work. Or they don’t change anything on my page or they display an error message. I don’t know what else to do!

    Reply
  43. Mason Coulter says:
    Jun 11, 2014 at 7:14 pm

    Is there a way to add pagination to the related posts query? I cant seem to get pagination to work on a secondary query within single.php. Thanks!

    Reply
  44. Tom K. says:
    May 2, 2014 at 4:36 am

    Hello , i want to ask , is there way to make , that related posts would be by category and tags in one place? Thanks.

    Reply
  45. Jonas says:
    Apr 11, 2014 at 1:52 pm

    My thumbnails are too big, help. How can you limit the related posts thumbnails?

    Reply
    • WPBeginner Support says:
      Apr 13, 2014 at 12:47 pm

      You probably need to regenerate thumbnails.

      Reply
  46. Jonathan says:
    Apr 6, 2014 at 5:13 pm

    Is there a way to choose a single category (let’s call it Brands) and then have it display related posts only affiliated with the child categories under Brands? So, the hierarchy for the cats would be Brands > JCPenny. I want to only show related posts for JCPenny. But, that child category could be different per post. So if a post uses a different child category it’ll show related posts for that child cat. Can this code be modified to handle that somehow?

    Reply
    • Jonathan says:
      Apr 6, 2014 at 5:25 pm

      OH! I think I’ve got it. I just added ‘parent’ => ‘the cat id number’, to the args and I think that did it.

      Reply
    • Jonathan says:
      Apr 6, 2014 at 5:55 pm

      wait… no, that didn’t work :(

      Reply
  47. Miro says:
    Mar 9, 2014 at 9:46 pm

    Hi, thanks for the code, but instead of grabbing the featured image as a thumb, can i grab instead the first image in my posts? Thanks

    Reply
    • WPBeginner Support says:
      Mar 9, 2014 at 10:11 pm

      This sounds like a nice post idea, we will cover it soon in a new article. Thanks for the feedback.

      Reply
      • Miro says:
        Mar 11, 2014 at 6:14 pm

        It would be great if you guys would make a post on it. Thank you very much and will be waiting. Hope that you can kindly post here a notification once you made the post so we know.

        Reply
  48. Caleb says:
    Mar 8, 2014 at 1:54 am

    Great post thanks! I run a website that uses WP more as a CMS with a large number of pages rather than posts. Can I do this with as related pages instead, so that it’s grabbing related pages and not posts? If so how do I go about doing this.

    Thanks for the help :)

    Reply
  49. Muhammad Hadi Qureshi says:
    Mar 4, 2014 at 2:04 am

    Really thanks for this helping post

    Reply
  50. Phil Simon says:
    Dec 23, 2013 at 10:10 pm

    This. Is. Awesome. WPEngine understandably doesn’t allow for related posts plugins, save for a few exceptions. I tried a few and really didn’t like them. I threw this code into single.php and voila! Thank you.

    Reply
« 1 2 3

Leave a Reply Cancel reply

Thanks for choosing to leave a comment. Please keep in mind that all comments are moderated according to our comment policy, and your email address will NOT be published. Please Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.

Over 1,320,000+ Readers

Get fresh content from WPBeginner

Featured WordPress Plugin
WP Mail SMTP logo
WP Mail SMTP
Fix WordPress email delivery issues. #1 SMTP plugin. Learn More »
How to Start a Blog How to Start a Blog
I need help with ...
Starting a
Blog
WordPress
Performance
WordPress
Security
WordPress
SEO
WordPress
Errors
Building an
Online Store
Useful WordPress Guides
    • 7 Best WordPress Backup Plugins Compared (Pros and Cons)
    • How to Fix the Error Establishing a Database Connection in WordPress
    • Why You Need a CDN for your WordPress Blog? [Infographic]
    • 30 Legit Ways to Make Money Online Blogging with WordPress
    • Self Hosted WordPress.org vs. Free WordPress.com [Infograph]
    • Free Recording: WordPress Workshop for Beginners
    • 24 Must Have WordPress Plugins for Business Websites
    • How to Properly Move Your Blog from WordPress.com to WordPress.org
    • 5 Best Contact Form Plugins for WordPress Compared
    • Which is the Best WordPress Popup Plugin? (Comparison)
    • Best WooCommerce Hosting in 2021 (Comparison)
    • How to Fix the Internal Server Error in WordPress
    • How to Install WordPress - Complete WordPress Installation Tutorial
    • Why You Should Start Building an Email List Right Away
    • How to Properly Move WordPress to a New Domain Without Losing SEO
    • How to Choose the Best WordPress Hosting for Your Website
    • How to Choose the Best Blogging Platform (Comparison)
    • WordPress Tutorials - 200+ Step by Step WordPress Tutorials
    • 5 Best WordPress Ecommerce Plugins Compared
    • 5 Best WordPress Membership Plugins (Compared)
    • 7 Best Email Marketing Services for Small Business (2021)
    • How to Choose the Best Domain Registrar (Compared)
    • The Truth About Shared WordPress Web Hosting
    • When Do You Really Need Managed WordPress Hosting?
    • 5 Best Drag and Drop WordPress Page Builders Compared
    • How to Switch from Blogger to WordPress without Losing Google Rankings
    • How to Properly Switch From Wix to WordPress (Step by Step)
    • How to Properly Move from Weebly to WordPress (Step by Step)
    • Do You Really Need a VPS? Best WordPress VPS Hosting Compared
    • How to Properly Move from Squarespace to WordPress
    • How to Register a Domain Name (+ tip to get it for FREE)
    • HostGator Review - An Honest Look at Speed & Uptime (2021)
    • SiteGround Reviews from 4464 Users & Our Experts (2021)
    • Bluehost Review from Real Users + Performance Stats (2021)
    • How Much Does It Really Cost to Build a WordPress Website?
    • How to Create an Email Newsletter the RIGHT WAY (Step by Step)
    • Free Business Name Generator (A.I Powered)
    • How to Create a Free Business Email Address in 5 Minutes (Step by Step)
    • How to Install Google Analytics in WordPress for Beginners
    • How to Move WordPress to a New Host or Server With No Downtime
    • Why is WordPress Free? What are the Costs? What is the Catch?
    • How to Make a Website in 2021 – Step by Step Guide
Deals & Coupons (view all)
SendinBlue Coupon Code
Sendinblue Coupon
Get Sendinblue, a powerful marketing automation toolkit for small businesses, for FREE.
InMotion Hosting
InMotion Hosting Coupon
Get an exclusive 50% off InMotion hosting plus a free domain.
Featured In
About WPBeginner®

WPBeginner is a free WordPress resource site for Beginners. WPBeginner was founded in July 2009 by Syed Balkhi. The main goal of this site is to provide quality tips, tricks, hacks, and other WordPress resources that allows WordPress beginners to improve their site(s).

Join our team: We are Hiring!

Site Links
  • About Us
  • Contact Us
  • FTC Disclosure
  • Privacy Policy
  • Terms of Service
  • Free Blog Setup
  • Free Business Tools
  • Growth Fund
Our Sites
  • OptinMonster
  • MonsterInsights
  • WPForms
  • SeedProd
  • Nameboy
  • RafflePress
  • Smash Balloon
  • AIOSEO

Copyright © 2009 - 2021 WPBeginner LLC. All Rights Reserved. WPBeginner® is a registered trademark.

Managed by Awesome Motive | WordPress hosting by SiteGround | WordPress Security by Sucuri.