Get Post Types in admin

时间:2018-04-04 作者:Edu Membrillas

我的自定义主题页面中有以下代码:

$args = array(
  \'public\'   => true,
  \'_builtin\' => false 
);

$output = \'names\'; // names or objects, note names is the default
$operator = \'and\'; // \'and\' or \'or\'

$post_types = get_post_types( $args, $output, $operator ); 
此代码如果加载在wp管理页面中。

问题是,我想加载所有类型的帖子,我尝试更改内置内容,但不起作用。我想获得wordpress的默认帖子和Woocomece产品的自定义帖子类型。有人帮我吗?非常感谢。

2 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

自定义帖子类型只能在init 钩所以如果你想在init 胡克,你只会得到内置的。

要获得自定义的帖子类型,需要在init, 或以后init 超过了注册的自定义帖子类型。

function wpse_func() {
  $args = array(
    \'public\'   => true,
    \'_builtin\' => false,
  ];
  $post_types = get_post_types( $args );
}
add_action( \'init\', \'wpse_func\', PHP_INT_MAX );
//* Or
add_action( \'wp_loaded\', \'wpse_func\' );

SO网友:Krzysiek Dróżdż

首先,在调用函数时,不需要创建变量来将其作为参数传递。

回到你的问题上来。。。您将“AND”作为最后一个参数传递,因此条件将与“AND”连接,因此您将只获得公共和内置的post类型。

如果要获取所有公共或内置的post类型,则应使用OR运算符:

$post_types = get_post_types( array(\'public\' => true, \'_builtin\' => true), \'names\', \'or\' ); 
但是,如果您想获取所有注册的帖子类型(并非所有类型都必须是公共的),那么此代码将有所帮助(您不会在其中设置任何条件):

$post_types = get_post_types( array(), \'names\' ); 

结束

相关推荐