如何将所有CPT名称放入WP_QUERY‘POST_TYPE’参数?

时间:2019-07-01 作者:D_P

你好

我想根据他的ID显示帖子。此帖子可以是默认的“帖子”、“页面”或其他注册的自定义帖子类型。在查询中,我应该指定要使用的所有CPT名称,例如。

 \'post_type\' => array(\'post\', \'page\', \'my_cpt\')
我的问题是,如何为所有注册的帖子类型自动设置“post\\u type”,而无需手动指定它们?

我正在努力做到这一点:

$post_types = ALL-POST-TYPES-NAMES;
$the_query = new WP_Query(
  array(
    \'post_type\' => $post_types,
    \'p\' => ID,
  )
);
谢谢!

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

您可以使用get_post_types() 功能:

$post_types = get_post_types();
在您的情况下,您需要设置第二个$output 参数到names (因为这是你需要传递给post_type 参数),您可能需要设置$args 在第一个参数中,只返回公共帖子类型,否则您可能会得到一些奇怪的东西,如菜单项和修订:

$post_types = get_post_types( [ \'public\' => true ], \'names\' );
然而,看起来您只是在根据ID查找特定的帖子。如果是这样,那么您根本不需要帖子类型或查询。只需将ID传递给get_post():

$post = get_post( $id );

相关推荐

自定义Post-type未返回正确的Child_Of

Situation我正在使用高级自定义字段插件为自定义帖子类型设置一个复选框。如果选中此框,则此查询应返回该框。到目前为止,查询工作正常。The issue我希望它显示的页面都是一个页面的子页面。这个查询返回带有复选框的所有页面,而不是只返回带有复选框的当前页面的子页面。My code页面顶部<?php $tid = get_the_ID(); ?> 沿着页面进一步<?php $i == 0; global $post; $myposts =