Broken? WP_Query and “attachment” as a post type

These are the query parameters i use…works for me when i loop through the results array( ‘post_parent’ => $post->ID, ‘post_status’ => ‘inherit’, ‘post_type’=> ‘attachment’, ‘post_mime_type’ => ‘image/jpeg,image/gif,image/jpg,image/png’ ); For more detail, please see official documentation for WP_Query’s status parameters

$GLOBALS[‘wp_the_query’] vs global $wp_query

You have missed one, $GLOBALS[‘wp_query’]. For all purposes, $GLOBALS[‘wp_query’] === $wp_query. $GLOBALS[‘wp_query’] is however better for readability and should be used instead of $wp_query, BUT, that remains personal preference Now, in a perfect world where unicorns rule the world, $GLOBALS[‘wp_the_query’] === $GLOBALS[‘wp_query’] === $wp_query. By default, this should be true. If we look at where … Read more

numberposts? showposts? posts_per_page?

In my opinion, deprecating numberposts would not make sense, as numberposts is used to query x amount of posts, whilst posts_per_page is used to denote how many posts per page are being shown during pagination. If you were to deprecate numberposts in favor of simply posts_per_page, then pagination would not exist. ie: “numberposts” => 50, … Read more

Resetting post data to previous loop in nested loops

I’m going to answer this myself, but it was the very clever @simonwheatley of Code for the People that solved this one for me. Instead of using wp_reset_postdata() or wp_reset_query(), you can use the following: $publication->reset_postdata(); Where $publication is your query object. The working code now looks like: $publication = new WP_Query( array( ‘connected_type’ => … Read more

WP_Query + random

Please try this: $args = array( ‘category_name’ => ‘cat1’, ‘posts_per_page’ => 5, ‘orderby’ => ‘rand’, ); $pc = new WP_Query( $args ); where ‘rand’ should give you a random order of your posts. For more info check out the Codex on WP_Query order parameters here.

Using pre_get_posts with WP_Query

The simplest way is to add the action right before the query and remove it immediately after. add_action(‘pre_get_posts’, ‘some_function_in_functionsphp’); $my_secondary_loop = new WP_Query(…); remove_action(‘pre_get_posts’, ‘some_function_in_functionsphp’); if( $my_secondary_loop->have_posts() ): while( $my_secondary_loop->have_posts() ): $my_secondary_loop->the_post(); //The secondary loop endwhile; endif; wp_reset_postdata(); EDIT Another technique you can use is to set your own query var and check for that … Read more