Understanding “The Loop” in WordPress

Share this article

Loop
Loop

This article is part of a series created in partnership with SiteGround. Thank you for supporting the partners who make SitePoint possible.

When discussing WordPress, and specifically the development of themes (or creating new page templates inside an existing theme) you inevitably will run up against “The Loop”. The Loop is the framework within which WordPress constructs the content for any given page that user visits, whether that be a static home page or a blog view showcasing recent posts, or anything in between. It may sound a bit complex, but really, it’s just a looping mechanism.

The Loop, at its simplest, is a looping structure just like any other in programming. It iterates through what amounts to a list of all of your site’s content, cycling through your posts or pages, and fetching the requested content from them. At its most complicated, you can run The Loop multiple times, fetch only certain items from certain categories, only items not in certain categories, those published within a date range, or with other particular identifying information.

Every page template within a WordPress theme will likely contain The Loop. It’s one way that the template can search for and acquire content from your pages and posts, which are stored in the database. Let’s take a look at some specifics:

A Basic Example of the Loop

<?php 
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post(); 
        // Post Content here
    }
}
?>

You can see in the above example that it’s really a pretty straightforward setup. The entire thing starts with a conditional, with have_posts checking to ensure that there are, in fact, any posts to find. Then the loop happens – while there are still posts (again using have_posts), it iterates through the next post and calls up the_post – which refers to the one currently being iterated through.

Particular Queries

If your needs are more advanced than simply returning every post that there is on your website, you’ll need to limit your queries. This is where WP_Query comes into play.

Filtering by Category

In the below example, modified from an example in the Codex, we will query for posts that are in the category which has the id of 4. Then, you can see a sample of the contents of the loop itself. Here, we check for posts with a category ID of 4, then, within the .post div, we display the post’s title (linked to the post), the date of the post, the post’s content, and the post’s metadata.

<!-- Query for posts which are in category 4 -->
<?php $query = new WP_Query( array( 'cat' => 4 ) ); ?>

<!-- Begin The Loop -->
<?php if ( $query->have_posts() ) {
      while ( $query->have_posts() ) {
        $query->the_post(); ?>
        <div class="post">
            <!-- Display the Title as a link to the Post's permalink. -->
            <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>

            <!-- Display the date (November 16th, 2009 format) and a link to other posts by this posts author. -->
            <small><?php the_time( 'F jS, Y' ); ?> by <?php the_author_posts_link(); ?></small>

                         <!-- Display the post content -->
            <div class="entry">
                  <?php the_content(); ?>
            </div>

                        <!-- Display the post metadata -->
            <p class="postmetadata"><?php _e( 'Posted in' ); ?> <?php the_category( ', ' ); ?></p>
        </div> 
    }
}

The use of WP_Query can lead to some very customizable results. You can include posts of only one category, or several, or include all except for those from one category or another. You can search and return posts that contain a keyword, or locate posts by ID, use the post_type to show only data from pages, and more. If you want to learn in more depth about WP_Query, take a look at the WP_Query documentation.

Tip: You can get the ID number of a category in several ways. One easy way is to head over to “Posts”, then “Categories” in your WP-Admin. Right click on the desired category name in the list, and save the URL. Then paste it in a text editor or notepad somewhere and take a look. As an example, it might look something like this: http://example.com/wp-admin/term.php?taxonomy=category&tag_ID=4&post_type=post&wp_http_referer=%2Fwp-admin%2Fedit-tags.php%3Ftaxonomy%3Dcategory – you’re looking for the tag_ID number!

Filtering by Custom Field Values

The custom fields that are available in WordPress can be fantastically useful, and you may at times also need to filter posts by the values set in those as well. A simple task, but it’s worth showing for beginning WordPress developers (or those who haven’t delved far into custom templates or The Loop) to realize how customizable all of this is. Say that you have a custom field department and you’re looking for posts with the value marketing:

$query = new WP_Query( array('meta_key' => 'department', 'meta_value' => 'marketing') );

Understanding “The Loop”

The truely best way to understand The Loop is simply to use it. Use it to fetch your content in the templates you create for themes, or in the code that you customize in existing templates in existing themes. When you want to do something, filter for certain criteria, run The Loop again – check the The Loop documentation in the Codex, or hit up Google for ideas. The sky’s the limit!


If you’re looking for somewhere to host your WordPress site after you’ve got your templates built and The Loop all figured out, take a look at our partner, SiteGround. They have affordable WordPress hosting available, with one click installation, staging environments, and more!

Frequently Asked Questions (FAQs) about Understanding the Loop in WordPress

What is the Loop in WordPress and why is it important?

The Loop in WordPress is a PHP code used to display posts. It’s the core and the most crucial part of WordPress blogs. The Loop checks if there are posts in the database, and if there are, it displays them one after another until there are no more posts to display. It’s important because it controls how posts are displayed on your website, allowing you to customize the presentation of your content.

How does the Loop in WordPress work?

The Loop in WordPress works by using PHP code to query the WordPress database for posts. It then displays these posts in a format determined by the theme. The Loop continues to pull posts from the database and display them until there are no more posts to display.

Can I customize the Loop in WordPress?

Yes, you can customize the Loop in WordPress. This can be done by modifying the PHP code in your theme files. You can change the order of posts, the number of posts displayed, and even filter posts based on categories or tags.

What happens if I break the Loop in WordPress?

If you break the Loop in WordPress, your website may not display posts correctly or at all. This can lead to a poor user experience and potentially lower search engine rankings. Therefore, it’s crucial to ensure that any modifications to the Loop are done correctly.

How can I fix a broken Loop in WordPress?

Fixing a broken Loop in WordPress involves identifying the error in the PHP code and correcting it. This may require knowledge of PHP and WordPress theme development. If you’re not comfortable with this, consider hiring a professional or using a WordPress plugin that can help you customize the Loop without needing to edit code.

Can I use multiple Loops in WordPress?

Yes, you can use multiple Loops in WordPress. This is useful if you want to display different types of content in different sections of your website. For example, you could have one Loop for blog posts and another for portfolio items.

How do I create multiple Loops in WordPress?

Creating multiple Loops in WordPress involves modifying your theme files to include additional Loop code. Each Loop can be customized to display different content based on your needs. Remember to reset the post data after each Loop to prevent conflicts.

What is a custom Loop in WordPress?

A custom Loop in WordPress is a Loop that has been modified to display posts in a way that is different from the default. This could involve changing the order of posts, filtering posts by category or tag, or changing the number of posts displayed.

How do I create a custom Loop in WordPress?

Creating a custom Loop in WordPress involves modifying the PHP code in your theme files. You can use the WP_Query class to create a new query for your Loop, and then use the have_posts() and the_post() functions to display the posts.

Can I use plugins to customize the Loop in WordPress?

Yes, there are many plugins available that can help you customize the Loop in WordPress. These plugins provide a user-friendly interface for making changes to the Loop, making it easier for those who are not comfortable with coding.

Jeff SmithJeff Smith
View Author

Jeff works for a startup as a technical writer, does contract writing and web development, and loves tinkering with new projects and ideas. In addition to being glued to a computer for a good part of his day, Jeff is also a husband, father, tech nerd, book nerd, and gamer.

joelfloopsitegroundWordPress
Share this article
Read Next
Get the freshest news and resources for developers, designers and digital creators in your inbox each week