WP_Query is a WordPress class that allows you to fetch posts directly from the database. It's powerful enough for developers to perform extremely complex queries, but simple enough for a regular WordPress user to learn.
You can learn more about WP_Query and all of its parameters here: https://developer.wordpress.org/reference/classes/wp_query/
Rather than writing these WP_Query expressions by hand, you can use https://generatewp.com/wp_query/ to create them for.
Using WP_Query in WP All Export
Go to All Export › New Export and select the WP_Query Results option. Then select the query type from the drop-down. All of the custom post types available for export are added here automatically. In our default install, there are three options:
Post Type QueryUser QueryComment Query
These options use WP_Query, WP_User_Query and WP_Comment_Query.
In this example we're going to choose Post Type Query.
Building the Query
The most basic query would include a post type and a post status. For example, to get all published posts in the default WordPress "Posts" post type, the query would be:
"post_type" => "post",
"post_status" => "publish"
Alternatively you could export all Media Library items like images and attachments with this query:
"post_type" => "attachment", "post_status" => "inherit"
If you need to define multiple post types and multiple post statuses, you can use arrays. For example, you can get all pages and posts that are either pending, published, or drafts with the following query:
"post_type" => array( "post", "page" ),
"post_status" => array( "publish", "draft", "pending" )
Advanced WP_Query Example
The WP_Query class has the ability to do custom field queries, taxonomy queries, author checks, and much more. There's no way that we can cover all of the possibilities in this article, but here we'll cover some more advanced queries just to showcase the power of this feature.
Specific criteria for WooCommerce ProductsFor this example, we'll export a set of variable WooCommerce products with the following rules:
Product must be published.Stock value is higher than 0.Products are sorted by title in ascending order.
The query:
"post_type" => array( "product", "product_variation" ),
"post_status" => "publish",
"orderby" => "post_title",
"order" => "ASC",
"meta_query" => array( array(
"key" => "_stock",
"value" => 0,
"compare" => ">"
) )
Custom Post Type SearchFor this example, we'll search all posts in the post type properties added by a real estate theme. The criteria:
Post type is propertiesStatus is publishAuthor ID is 3, which is a real estate agentThe property has the For Sale category assigned to itCustom field _featured is set to 1, making it a featured property in the theme
The query:
"post_type" => "properties",
"post_status" => "publish",
"author" => 3,
"tax_query" => array( array(
"taxonomy" => "property_category",
"field" => "slug",
"terms" => "for-sale",
) ),
"meta_query" => array( array(
"key" => "featured",
"value" => "1",
"compare" => "=",
) )