hidden

Smashing Magazine

10 Useful WordPress Loop Hacks

Advertisement

The loop is a very important aspect of WordPress blogs. In fact, the loop is what allows you to get posts from your WordPress database and print them on the screen. A set of useful and user-friendly functions, the loop is incredibly powerful. With it, you can get a single post, a list of posts ordered by date, title or category, a list of posts written by a specific author and much more.

In this article, we’ll show you 10 useful things you can do with the WordPress loop to make your blog even more powerful than it is right now.

You may be interested in the following related posts:

1. Get Posts Published Between Two Dates

Time in 10 Useful WordPress Loop Hacks
Image source: Shutterstock

The problem.
The loop and the query_posts() WordPress function allow you to easily retrieve a list of posts published in a specific week or month. Unfortunately, getting posts published between, for example, March 17 and May 3 isn’t that easy. Let’s solve this problem.

The solution.
Simply paste the following code wherever in your theme you’d like to display the list of posts published between two dates. Don’t forget to replace the dates in the example with yours.

<?php
  function filter_where($where = '') {
        $where .= " AND post_date >= '2009-03-17' AND post_date <= '2009-05-03'";
    return $where;
  }
add_filter('posts_where', 'filter_where');
query_posts($query_string);
while (have_posts()) :
      the_post();
      the_content();
endwhile;

?>

Code explanation.
To achieve this hack, I first create a function named filter_where(), which contains an SQL “WHERE” condition. Then, before starting the loop, the filter_where() function is hooked into WordPress’ post_where() function.

As a result, the “WHERE” clause contained in the filter_where() function is added to the end of the SQL query contained in the post_where() function, which means that the loop will return posts published only between the two dates specified in the filter_where() function.

Source

2. Use More Than One Loop On A Page, Without Printing Duplicate Posts

Sm4 in 10 Useful WordPress Loop Hacks

The problem.
Most modern themes and all “magazine” themes display at least two loops on the blog’s home page; these can be used, for example, for a “featured posts” section. While using two loops is very easy to do, preventing duplicate posts from displaying is not… until, that is, you learn this easy method of preventing them.

The solution.

  1. Let’s start with the first loop. Nothing hard here: we’re just going to get the eight most recent posts using the showposts parameter. Open the index.php file, and paste the following code to output your “featured” posts:
    <?php
    query_posts('showposts=8');
    $ids = array();
    while (have_posts()) : the_post();
    $ids[] = get_the_ID();
    the_title();
    the_content();
    endwhile;
    ?>
  2. Once that’s done, it’s time to apply our second loop and get all posts, excepted the ones we have already outputted in the first loop:
    <?php
    query_posts(array('post__not_in' => $ids));
    while (have_posts()) : the_post();
    the_title();
    the_content();
    endwhile;
    ?>
  3. Save your index.php file and admire the results!

Code explanation.
The first loop starts with the very useful query_posts() function, which allows you to specify a wide range of parameters to be used by the loop. The showposts parameter allows you to get the specified number of posts. Just before the loop starts, I create a PHP array named $ids, which will receive all IDs of the posts returned by this loop.

Like the first one, the second loop uses the query_posts() function with the post__not_in parameter. This parameter allows you to specify a list of posts that you don’t want to be displayed, in the form of a PHP array. As you probably saw, I passed the $ids array to this parameter so that any posts returned by the first loop would be returned again by the second loop.

3. Insert Ads After The First Post

Sm1 in 10 Useful WordPress Loop Hacks

The problem.
Advertising is a good way to monetize your blog. But to get advertisers, your ads must receive clicks by your visitors. Many bloggers display ads on the blog sidebar, footer or header, which isn’t always great with click-through rates. To obtain more clicks on your ads and make your advertisers happy, inserting them after the first post is a good idea. Let’s see how to do this in the WordPress loop.

The solution.
Simply use the following loop instead of your current loop. Don’t forget to insert your ad code on line 6:

<?php if (have_posts()) : ?>
<?php $count = 0; ?>
<?php while (have_posts()) : the_post(); ?>
<?php $count++; ?>
  <?php if ($count == 2) : ?>
          //Paste your ad code here
          <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
          <?php the_excerpt(); ?>
   <?php else : ?>
          <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
          <?php the_excerpt(); ?>
  <?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>

Code explanation.
Since the early days of programming, integer variables have been a common operation to use as a counter. This is exactly what I’ve done here: just before the loop starts, a $count variable is created. This variable increases by an increment of 1 with each result returned by the loop.

Then, you just have to add an if structure (line 5) and see if $count is equal to 2. If it is, it means that the first post has already been returned and we can display the ads.

Source

4. Get Posts With A Specific Custom Field And Specific Value

Sm3 in 10 Useful WordPress Loop Hacks

The problem.
Because of the popularity of WordPress’ custom fields, you will often want to be able to output a list of posts with a specific custom field and specific value. While so simple for advanced WordPress users, beginners continue to ask me about this on my blogs. So, here’s the correct and easy way to achieve this.

The solution.
Not hard at all. We only have to use the query_posts() function with the meta_key and meta_value parameters:

<?php query_posts('meta_key=review_type&meta_value=movie');  ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

Code explanation.
Definitely nothing hard here. To get only posts with a specific custom field and specific value, you have to use the query_posts() function with the meta_key and meta_value parameters. The meta_key value is the name of the desired custom field, and meta_value is the desired value.

Source

5. List Upcoming Posts

Sm5 in 10 Useful WordPress Loop Hacks

The problem.
Thanks to the “schedule post” option, our favorite blogging platform allows us to write a post and schedule it to be published later. To make sure your readers come back to your blog or subscribe to your RSS feed, listing your upcoming posts is a good idea.

The solution.

<?php query_posts('showposts=10&post_status=future'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
		<h2><?php the_title(); ?></h2>
		<span class="datetime"><?php the_time('j. F Y'); ?></span></p>
<?php endwhile;
else: ?><p>No future events scheduled.</p>
<?php endif; ?>

Code explanation.
To achieve this, I used the query_posts() function with an interesting parameter called post_status. The post_status parameter allows you to get posts according to their published status (“published,” “draft” or, like in this example, “future”). Because I also added the showposts=10 parameter, this code will not return more than 10 upcoming posts.

Source

6. Display Posts Published One Year Ago

Sm8 in 10 Useful WordPress Loop Hacks

The problem.
Many blogs have so much content and some very good older posts that should not be ignored. But most visitors end up seeing only the freshest content.

The solution.
If your blog is relatively old, why not showcase posts that were published over a year ago? Doing this is simple. Just insert the following code in your blog sidebar or single.php file.

<?php
$current_day = date('j');
$last_year = date('Y')-1;
query_posts('day='.$current_day.'&year='.$last_year);
if (have_posts()):
    while (have_posts()) : the_post();
       the_title();
       the_excerpt();
    endwhile;
endif;
?>

Code explanation.
The first thing was to get today’s number, which we did on line 2, using the PHP date() function. Then, we had to get last year’s number, which we easily did by taking date('Y') (which returns the current year) and subtracting 1, giving us last year’s number.

Once that’s done, we only have to pass the $current_day and $last_year variables to the day and year parameters of the query_posts WordPress function.

As an aside, if for some reason you want only today’s posts, just delete line 3 and replace line 4 with the following:

query_posts('day='.$current_day);

Source

7. Use The Loop To Create An “Archive” Page Template

Sm7 in 10 Useful WordPress Loop Hacks

The problem.
As noted in the previous hack, a common problem on blogs is that it is hard for readers to find content published a while ago.

To help my readers finding what they’re looking for, I created a WordPress page template that displays a list of all posts ever published on my blog. You can see a live demo of this hack on WpRecipes.

The solution.
If you don’t know what a page template is or how to use one on your blog, you should first read this quick post to get started.

<?php
/*
Template Name: Archives
*/
?>

<?php get_header(); ?>

	<h2><?php $numposts = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = 'publish'");
if (0 < $numposts) $numposts = number_format($numposts); ?>
<h2><?php echo $numposts.' recipes published since October 06, 2008'; ?>
	</h2>

	<ul id="archive-list">
		<?php
		$myposts = get_posts('numberposts=-1&');
		foreach($myposts as $post) : ?>
			<li><?php the_time('m/d/y') ?>: <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
		<?php endforeach; ?>
	</ul>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Code explanation.
The first thing to do is create a “page template.” A page template is created by adding the following lines to the top of the file:

<?php
/*
Template Name: Archives
*/
?>

An interesting part of this code is the post counter (line 8). This is done by creating a PHP variable named $numposts and using the $wpdb object to get the result from the SQL query sent to WordPress database.

Once that’s done, we simply have to display the $numposts variable, and the total number of posts on your blog will be printed on the screen.

Now, let’s have a closer look at the loop used in this code. As you probably saw, this code doesn’t use the classic loop but rather uses the get_posts() function. get_posts() is a simple tag for creating multiple loops. We first take all posts from the engine and for each of these posts we present the date, the link and the title of the post. Simple and effective.

Source

8. Create Your Own WordPress Loops Using The WP_Query Object

Sm8 in 10 Useful WordPress Loop Hacks

The problem.
The classic WordPress loop, which is used in most hacks in this post, is both useful and user-friendly. However, particularly when using a lot of custom loops (for example, in complex “magazine” layouts), you risk problems with resetting, offsetting, invalid conditional tags and other annoyances.

The solution.
The solution is to use the WP_Query object and create your very own loop:

<?php
$myPosts = new WP_Query();
$myPosts->query('showposts=5');

while ($myPosts->have_posts()) : $myPosts->the_post(); ?>
   the_title();
   the_content();
endwhile;

?>

Code explanation.
The code above displays your five most recent posts. Here is what this code does in detail:

  • On line 2, I created a new WP_Query object, named $myPosts.
  • On line 3, I executed a query using the showposts parameter to get only the five most recent posts.
  • On line 5, our custom loop starts.
  • On line 6 and 7, we simply print some basic post information (title and post content)
  • On line 8, our custom loop ends.

If you want to display more or less than five posts, simply change the value of the showposts parameter on line 3.

Source

9. Get Only The Latest Sticky Posts

Sm9 in 10 Useful WordPress Loop Hacks

The problem.
Introduced in WordPress 2.7, sticky posts are a very cool feature of our favorite blogging platform. A lot of WordPress users ask how to get only sticky posts in the loop.

The solution.
To display your five most recent sticky posts, just paste the following code anywhere in your theme files. If you want to display more or less sticky posts, just change the 5 to the desired value on line 4.

<?php
$sticky = get_option('sticky_posts');
rsort( $sticky );
$sticky = array_slice( $sticky, 0, 5);
query_posts( array( 'post__in' => $sticky, 'caller_get_posts' => 1 ) );

if (have_posts()) :
    while (have_posts()) : the_post();
        the_title();
        the_excerpt();
    endwhile;
endif;

?>

Code explanation.
The first thing was to get all sticky posts (line 2). Then, we re-ordered them, displaying the most recent ones at the top, using the PHP rsort() function (line 3). On line 4, we got the five most recent sticky posts. As mentioned, you can change the amount of posts retrieved by changing 5 to any other value.

Once that’s done, we use the query_posts() function to control the WordPress loop. Using the post__in parameter, we can make sure that the retrieved posts are contained in an array of values. This array is indeed our $sticky variable. Then, we just set up a basic loop and display the desired information from the post on the screen.

Sources

10. Create A Loop Of Images

Sm10 in 10 Useful WordPress Loop Hacks

The problem.
Nowadays, most blogs display post excerpts on the home page along with an image. How about being even more original and providing readers with a nice “gallery” page, listing however many of your recent posts, and displaying each post’s lead image? Of course, we can easily achieve this with custom fields; but believe it or not, custom fields aren’t necessary.

The solution.
To create our loop of images, we first need a PHP function that can grab the first image from each post and return its URL. To do this, paste the following function in your functions.php file. Don’t forget to define a default image on line 10.

function catch_that_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
  $first_img = $matches [1] [0];

  if(empty($first_img)){ //Defines a default image
    $first_img = "/images/default.jpg";
  }
  return $first_img;
}

Once you’ve saved the functions.php file, you are now ready to display your image loop.

<?php
if (have_posts()) :
    while (have_posts()) : the_post(); ?>
        <a href="<?php the_permalink();?>" title="<?php the_title(); ?>" class="img-loop">
        <img src="http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/images/wordpress-loop-hacks/<?php echo catch_that_image() ?>" alt="<?php the_title(); ?>" />
        </a>
    endwhile;
endif;
?>

Code explanation.
The first part of this code is the catch_that_image() function that we inclued in our functions.php file. Basically, this function parses the post’s content using the $post and $posts global variables as well as a PHP regular expression. If no image is found (i.e. the post doesn’t have one), the default image URL is returned. Otherwise, the function returns the URL of the first image in the post.

The second part of the code is the loop itself, and there’s absolutely nothing hard about it. In fact, it is just a basic loop with no text content is displayed. Instead, the first image from the post is displayed, using the catch_that_image() function.

Sources

Related posts

You may be interested in the following related posts:

(al)


This guest post was written by Jean-Baptiste Jung, a 28-year-old blogger from Belgium, who blogs about Web Development on Cats Who Code, about WordPress at WpRecipes and about blogging on Cats Who Blog . You can stay in touch with Jean by following him on Twitter.

Tags: , ,

Advertising
  1. 1
    0
    DKumar M.
    June 10th, 2009 12:36 am

    Nice Article… tips and tricks always comes in handy!!

    DKumar M.
    @instantshift

  2. 2
    0
    Jorge
    June 10th, 2009 12:36 am

    Great post! Some really cool tips in here.

    How about some tips for sidebar? Maybe a follow up post… :)

    Cheers!

  3. 3
    0
    Federico
    June 10th, 2009 12:39 am

    I’m gonna use the tip n.10 for sure on the next project!!! :D

    I use a trick quite similar to the tip n.3 to insert ads every x posts here is the code :

    if (have_posts()) :
    $count = 0;
    while (have_posts()) : the_post();
    $count++;
    if ($count%2== 0) :
    //Paste your ad code here
    endif;
    endwhile;
    endif;

    this make your ads compare every 2 posts , change the value next to the % for have your ads every 3 , 4 , 5 and so on ..

  4. 4
    0
    zaanrider
    June 10th, 2009 1:34 am

    nice article..thanks alot..

  5. 5
    0
    IrealiTY
    June 10th, 2009 1:47 am

    very cool hacks, thanks for those tips :D

  6. 6
    0
    Darfuria
    June 10th, 2009 1:48 am

    Nice article. Although using new WP_Query is an easier method of having multiple queries running on a page. It’s used like this:

    $newsarchive = new WP_Query(‘cat=1&showposts=20′);
    if($newsarchive->have_posts()) : while($newsarchive->have_posts()) : $newsarchive->the_post();

    Then you can use your various post tags such as the_content(); and the_title();, and finish it off with

    endwhile; endif;

  7. 7
    0
    Creamy CSS
    June 10th, 2009 1:58 am

    Thanks for useful post,.. I’m using some of proposed tips.

  8. 8
    0
    Bryan Lee
    June 10th, 2009 2:21 am

    Great Tips. I am looking for one tip not mentioned. I am bringing in posts to wordpress via RSS. How can I include a generic image per post via a custom field?

  9. 9
    0
    Matthias
    June 10th, 2009 2:38 am

    Can’t get enough of this kind of posts guys!
    I love wordpress and often need to hack it ;-)

    Thank you very much!

  10. 10
    0
    Phil Stricker
    June 10th, 2009 2:59 am

    Thanks for this one. I have been doing web development for a long time but I am just now emmersing myself in WordPress. This gave me some great info I will definitely be using. By the way, I like how you don’t allow blatant ads through your comments. Good work. The web needs more like you.

  11. 11
    0
    sam
    June 10th, 2009 3:21 am

    great post, you should also make mention to the rewind_posts(); for using multiple loops on a page. fixed many headaches for me
    Cheers!

  12. 12
    0
    Paul Radich
    June 10th, 2009 4:07 am

    Thanks great post. The loop is most powerful!

  13. 13
    0
    Abdel Faiz
    June 10th, 2009 4:10 am

    wordpress stuff… YUMMY !!

  14. 14
    0
    detruk
    June 10th, 2009 4:40 am

    Waho… very very usefull. Thanks a lot !

  15. 15
    0
    Igor Jovic
    June 10th, 2009 5:25 am

    Great Post!

  16. 16
    0
    Adrian
    June 10th, 2009 5:41 am

    Would be great if you could show a way to display the posts in order of the most recent comment, similar to how a forum works.

  17. 17
    0
    Chris
    June 10th, 2009 6:04 am

    What happened to your CSS? Your h2 Headlines are as small as the text since some days?
    So it is not quite lucid :-(

  18. 18
    0
    Sufiyan Ghouri
    June 10th, 2009 6:12 am

    awesome great thanks
    i am working on new WordPress codes website http://wpcodes.com :)

  19. 19
    0
    Jason
    June 10th, 2009 6:50 am

    Great article. The WordPress loop is super sexy. :D

  20. 20
    0
    Grafiko
    June 10th, 2009 6:59 am

    great post, thanks

  21. 21
    0
    James Holmes
    June 10th, 2009 7:56 am

    Jean – It is amazing and endless – the number of plug-ins, themes, and widget that exist and continue to be added, which makes Word Press a remarkable platform for bloggers. Your post opened my eyes up to a whole new realm of posibilities.

    Thank you!

    James

  22. 22
    0
    8bitmag
    June 10th, 2009 8:20 am

    Thanks..useful stuff like always :)

  23. 23
    0
    Giacomo Ratta [ITA]
    June 10th, 2009 8:31 am

    Great ideas (and their implemetations)!
    I like customize WordPress also, and I create a more useful archive and 404 pages on my blog.
    I believe I will write a post about my tecniques…

  24. 24
    0
    Gary
    June 10th, 2009 8:47 am

    I wanted to see if you had HTML to add a contact form in the sidebar or in the regular text of the page. Thanks

  25. 25
    0
    Chris Robinson
    June 10th, 2009 9:06 am

    #3 is a nice little trick

  26. 26
    0
    Antonis
    June 10th, 2009 9:45 am

    Very useful tutorial.

    On tip 3 you have code repetition that isn’t really required you could just add an if on the add and place it under the text body

  27. 27
    0
    Soh Tanaka
    June 10th, 2009 9:46 am

    I love these kinds of posts. Thank you very much :-)

  28. 28
    0
    Billco
    June 10th, 2009 10:03 am

    This is excellent! Even as a veteran PHP developer, some of these caught me off-guard with their simplicity.

  29. 29
    0
    Michael
    June 10th, 2009 11:54 am

    Jean-Baptiste– in a word, thanks.

    Echoes to most of the ones above as well. Very well-written and worded post.

    Proving again the means by which Smashing keeps addicts, and adds more daily.

  30. 30
    0
    Jean-Baptiste Jung
    June 10th, 2009 12:34 pm

    Thanks everyone for the comments! I’m glad (most of) you found this article usefull!

  31. 31
    0
    Alan
    June 10th, 2009 1:38 pm

    Is there an easy way to post multiple loops that each display posts from different categories?

  32. 32
    0
    Pete
    June 10th, 2009 1:43 pm

    Out of a programmer’s view, the way WordPress is designed is just a insane. I actually like the product in many ways but the programmer who build it to begin with must have been high on crack.

  33. 33
    0
    Craig Wann
    June 10th, 2009 1:44 pm

    Wordpress is simple and powerful. What a strange combination…

  34. 34
    0
    Jason
    June 10th, 2009 2:08 pm

    Hey, thanks for dropping ads into your RSS feed. Now that subscribing is no longer a way of avoiding getting slammed with advertising on this site I’ll just stop subscribing.

    Cheers.

  35. 35
    0
    Sweet Serendipity
    June 10th, 2009 6:30 pm

    Sweet hacks. Well written article and very helpful. Thanks for sharing this info!

  36. 36
    0
    Pablo Almeida
    June 10th, 2009 8:22 pm

    Nice content! Congratulations for sharing this!

  37. 37
    0
    John Deszell
    June 11th, 2009 5:12 am

    Great tips. Going to have to implement some of these in my upcoming theme for my personal website.

    Thanks!

  38. 38
    0
    Peter Lehto
    June 11th, 2009 11:06 pm

    Great post! Thanks for the tips, I’ll definitely use the “Use More Than One Loop On A Page, Without Printing Duplicate Posts” on my next project.

  39. 39
    0
    W3Avenue Team
    June 12th, 2009 2:10 am

    Great Post! Latest version of WordPress has been released. In addition to over 790 bugs fixes, there are improvements in themes, widgets, taxonomies, and overall speed. W3Avenue has compiled a list of resources for WordPress developers that will help them quickly upgrade their themes or plugins to accommodate latest features:

    http://www.w3avenue.com/2009/06/12/wordpress-28-resources-for-developers/

  40. 40
    0
    Wikiroma
    June 12th, 2009 6:38 am

    Thanx, i use a lot of customized loops and tricks in my blog

  41. 41
    0
    Lakshmi Mareddy
    June 13th, 2009 6:46 pm

    Jean Baptiste! Way to go.. pretty cool features, and yes, I shall be including some of the tips for my next theme!!! Many Thanks….

  42. 42
    0
    Jon
    June 14th, 2009 4:54 pm

    Good stuff! Thanks for sharing

    Jon

  43. 43
    0
    Sarah
    June 15th, 2009 8:42 am

    Great hacks! Can’t wait to put the Loop Archive page to use. Posts on new hacks for WordPress never get old :)

  44. 44
    0
    Delightful Shopping Admin
    June 17th, 2009 12:52 am

    Excellent WordPress Tweaks.
    Whenever i run across these type of Posts listing Tweaks, i am always amazed and humbled by genius programmers out there like Jean-Baptiste Jung! Thank you Jean-Baptiste for sharing with the rest of us!

  45. 45
    0
    caius
    June 18th, 2009 2:50 am

    Hi, very interesting post!

    I have a question for you. Suppose one would like to hide all published posts (but the ones that should be shown in the current page) putting them within

    <div style="display=none!important;">
    (…)
    </div>

    The posts have to be ordered cronologically. How would you do it? I guess it needs three loops.

    Cheers,
    C

  46. 46
    0
    James
    July 1st, 2009 2:25 am

    How about getting the number of posts the returned by the query?

  47. 47
    0
    Matthew Tait
    July 1st, 2009 6:53 am

    Hi, this is a wonderful entry, I don’t know if I can ask question here but I think you could probably answer if fairly easily.

    I’m currently making this wordpress theme

    I wanted to give the client the ability to change out the promo image (at the top), the left container events posts, and the right container news posts. I have three different loops for each using category to distinguish them. Here is an example of my events post loop (used in the left container) :

    Not Found
    Sorry, but you are looking for something that isn’t here.

    My problem is that I only want to show 4 posts in the events container, 1 post (the image) in the promo container, and 3 posts in the news container. I have tried various plug-ins and the don’t seem to work. Also I tried the here but it controls all posts, not just the events.

    Can any one out there help me or point me in the right direction? Excuse my lack of programming lingo, I’m more of a designer dabbling in code.

    Thanks so much.

  48. 48
    0
    Matthew Tait
    July 1st, 2009 6:55 am

    well… it appears I can’t post my code in here.

  49. 49
    0
    anil
    July 2nd, 2009 12:18 am

    Nice Post..

    How to display the posts in coloum wise..by taking the posts id from outside file like..assume
    post.txt contains post ids..
    reading the file and displayig the posts where ever we want…
    using the query_posts();

    please
    anil

  50. 50
    -1
    Ben
    July 3rd, 2009 12:38 pm

    Yuck,
    Views in Drupal can do this kind of stuff and a boat load more without hacking the shit out of it. WordPress is a blog engine at best, toy CMS at worst.

  51. 51
    0
    Suite 171
    July 17th, 2009 12:12 pm

    Great Information … will give them a try.

  52. 52
    0
    Ed
    August 11th, 2009 12:33 pm

    LOVE the no duplicate posts in multiple loops solution!

    I have been looking for this and although I have found many “solutions” this is the only one that would work in my Sidebars!

    Thanks
    Ed @ FoundByDesign

  53. 53
    0
    Sven Welters
    August 16th, 2009 8:37 am

    Great collection. Just using the “Creat a Loop of Images” code. But there’s a doubled “empty” in the code. Need to remove one. Looks like this:
    if(empty($first_img)){ //Defines a default image
    $first_img = "/images/default.jpg";

  54. 54
    0
    freese
    October 30th, 2009 9:19 am

    I have a short question. For a project at the company I work, I need a Script that shows up the search result count of a wordpress blog, outside of it. What I mean is in a separate website, that is used as a metasearch engine, I have to show the search result number from a wordpress blog. There’s different approaches that I have in mind. I could maybe use Tip Nr. 8 which means creating my own WordPress Loop using The WP_Query Object in a File at the root folder and then inlude this php file in the separate website? or as a second approach I could try and modify this script from the wordpress forum:

    http://wordpress.org/support/topic/226572?replies=15

    so that it pulls, not the the number of posts in the WP database but the search results count. Only I don’t know how to achieve it.

    Of course the query:

    // ...Formulate the query
    $query = "
    SELECT *
    FROM `wp_posts`
    WHERE `post_status` = 'publish'
    AND `post_password` = ''
    AND `post_type` = 'post'";


    // ...Perform the query
    $result = mysql_query( $query );


    // ...Check results of the query and terminate the script if invalid results
    if ( !$result ) {
    $message = 'Invalid query.' . "n";
    $message .= 'Whole query: ' . $query ." n";
    die ( $message );
    }


    // Init a variable for the number of rows of results
    $num_rows = mysql_num_rows( $result );


    // Print the number of posts
    echo "$num_rows Posts";

    hast to be different, but I´m really not a php master. Thank you very much for your support!

    • 55
      0
      Chris Murphy
      August 19th, 2010 11:24 am

      Wow. It’s a lot simpler than that to count WordPress’ search results, here:
      [code]
      global $wp_query;
      $count = sizeof( $wp_query->posts );
      echo"";
      //var_dump($wp_query);// The WP Query Object
      var_dump($wp_query->posts); // The WP Query Object's 'posts' property (note the plural)
      echo"";
      [/code]

      If you drop that snippet in your search template, it will output the properties of the ‘$wp_query’ variable, specifically the ‘posts’ property of the object. This is an array that stores a collection of the returned posts from the search query, which you can do a number of things with once you access it, including (*drumroll*), *count* the number of posts in that array using either PHP’s ‘count()’ or ‘sizeof()’ function.

      • 56
        0
        Roger Coathup
        August 28th, 2010 11:46 am

        and, one step quicker to get the post count returned, rather than using size of the posts array, you can just use:

        $count = $my_query->post_count;

  55. 57
    0
    barry manville
    November 5th, 2009 7:51 am

    Thanks for this. It means I can stop pulling my hair out and solve my problem–its bugged me for 3 weeks

  56. 58
    0
    Matteo
    May 16th, 2010 6:26 am

    Hi, i’m using the second hacks and it’s all ok but all posts remain in the front page: the 11th post mot appear in the second page but in the firste. Why?

    Exscuse me for my bad english.

  57. 59
    0
    Josh
    May 27th, 2010 5:08 am

    Do you know how I should modify the Printing Duplicate Posts tip to have it show one category and not the one I’ve already shown?

  58. 60
    0
    Hermitbiker
    July 29th, 2010 7:37 pm

    …. some really cool WP hacks…. thanks for posting them !!

  59. 61
    0
    Moscaliuc Lucian
    August 23rd, 2010 3:09 am

    How can I order category archive posts by subcategories and then by meta value?
    Like This:

    Archive for category 1:

    Sucat 1 (child of 1)

    1.(metavalue) Post 1
    2.(metavalue) Post 2
    3.(metavalue) Post 3

    Sucat 2 (child of 1)

    1.(metavalue) Post 4
    2.(metavalue) Post 5
    2.(metavalue) Post 6

  60. 62
    0
    mn
    September 8th, 2010 11:15 pm

    Hi,

    Is it possible to use the ‘duplicate posts in loop’ method in two different template files? i.e. one in the main loop and then test against the $do_not_duplicate in the footer.php file?

    I can’t seem to get it working…

  61. 63
    0
    Hari K T
    September 9th, 2010 1:16 am

    To get number of posts , you can do something in wp-includes\query.php

    Add the below lines after have_posts() . There are two functions .
    around line 2601 , the first one is inside the class.

    function get_post_count() {
    return $this->post_count;
    }

    Around line 638. This is not in class .

    function get_post_count() {
    global $wp_query;

    return $wp_query->get_post_count();
    }

  62. 64
    0
    Tiyo Kamtiyono
    December 4th, 2010 5:08 am

    Really nice list of hacks, I thinks all this tips gotta help me to do my design idea project :D

  63. 65
    0
    Tiyo Kamtiyono
    December 6th, 2010 7:47 am

    Finally, I printed this tuts into a pdf file. Thanks a lot :)

  64. 66
    0
    Jehzeel Laurente
    December 11th, 2010 1:35 pm

    “Use More Than One Loop On A Page, Without Printing Duplicate Posts” – this is exactly what I’m looking for! Thank you so much!

  65. 67
    0
    Dr. Goulu
    December 25th, 2010 12:36 am

    Thanks!
    however, there are problems with the “Display Posts Published One Year Ago” hack:
    1: the month isn’t specified, so you get all articles written last year on the x-th day of every month
    2: if no article was written exactly on the same day as today one year before, the loop doesn’t return any article…

    … and that’s precisely what I’m struggling about : I’d like to get the one and only article that was written just before today, one year ealier…

    Any idea ?

    Leave a Comment

    Make sure you enter the * required information where indicated. Please also rate the article as it will help us decide future content and posts. Comments are moderated – and rel="nofollow" is in use. Please no link dropping, no keywords or domains as names; do not spam, and do not advertise!



    Advertisement Advertise with us!
    Add this widget to your site!
    Visit job board Post your job