I’m writing a custom plugin that is initialized at
init. This plugin is trying to query for some custom post types already stored in the DB.
Here’s my code:
$args = array() $myposts = get_posts( $args ); print_r($myposts);
No matter what arguments I pass into the $args array I don’t get anything. For example:
$args = array( 'post_type' => 'page' );
Now, to my confusion if I use the exact same arguments with
get_pages() I get a result.
Maybe this has something to do with when WP Query is initialized?
It seems that is was a simple problem. get_posts() has various default settings, one of which is that the
post_status is set to
public and my custom post type which doesn’t use
post_status used the default value,
To fix this you can either query by post status (see the code below) or change the data in the DB.
$args = array( 'post_status' => 'draft', 'post_type' => 'your_custom_post_type' );
get_posts() is more to be used within The Loop.
but to get that working outside the loop, try putting
global $post; first at the top…
global $post; $args = array( 'post_type' => 'page' ); $myposts = get_posts($args);