TransWikia.com

Select posts with any post_type from database?

WordPress Development Asked by Lisandro Vaccaro on January 15, 2021

I’m trying to select all rows from the database regardless of post type, however when suppressing post_type WP_Query only gets rows with post_type = "post" is there a way to suppress the post_type filter (or select all post types)?

// This just selects post_type = "posts"
$args = array(
 'post_status' => 'publish',
 'posts_per_page' => -1,
 'ignore_sticky_posts' => true,
);
$qry = new WP_Query( $args );

One Answer

By default-- that is, unlss told otherwise-- WP_Query will search the post post type. You may supply 'post_type' => 'any' to retrieve all post types, but be aware that things like attachments are post types. For example...

$args = array(
  'post_status' => 'publish',
  'posts_per_page' => -1,
  'ignore_sticky_posts' => true,
  'post_type' => 'any'
);
$qry = new WP_Query( $args );
var_dump($qry->request);

Post types set as not searchable, such as the menu post type (which has no business being a post type at all IMHO), will be ignored. If you need those odd-ball post types, you will need to list them. get_post_types() should help with that.

$args = array(
   'post_status' => 'publish',
   'posts_per_page' => -1,
   'ignore_sticky_posts' => true,
   'post_type' => get_post_types(),
);
$qry = new WP_Query( $args );

Answered by s_ha_dum on January 15, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP