获取所有自定义帖子类型名称/插件的列表

时间:2018-12-23 作者:at least three characters

我正在尝试创建一个所有自定义帖子类型的下拉列表。

看起来是这样的:

<select>
  <option value="post">Post</option>
  <option value="book">Book</option>
  <option value="some-other-post-type">Something</option>
  <option value="team">Team Members</option>
</select>
我遇到了get_post_types() 函数,该函数应获取所有已注册post类型对象的列表。但它不显示我的自定义帖子类型。。。

是否可以获得一个包含slug和主题中注册的所有帖子类型的标题的数组?考虑到职位类型的数量是未知的和动态的。每次添加或删除新的自定义帖子类型时,它都应反映在下拉列表中。

我的测试:

$args = array(
   \'public\'   => true,
   \'_builtin\' => false // Use false to return only custom post types
);

$post_types = get_post_types( $args );

print_r($post_types);
它返回一个空数组。。。没有我注册的自定义帖子类型。

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

好的,那么函数get_post_types 这正是你要找的。

$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 ); 

foreach ( $post_types  as $post_type ) {

   echo \'<p>\' . $post_type . \'</p>\';
}
但有几件事你应该小心:

你不能太快得到这些帖子类型。在上注册帖子类型是非常常见的做法init 钩子,所以在钩子启动之前,您不会得到这些帖子类型objects 作为第二个参数

相关推荐