您必须查看文档以了解如何使用函数,不能只是替换它们。如果你这样做,你会看到get_post_types()
必须使用不同的get_categories()
. 例如,您不能使用参数hide_empty
. 除此之外,你必须改变$output
参数到objects
, 默认值为names
. 如果您使用$args
和$operator
参数下面是一个未经测试的基本示例,该示例基于您迄今为止的尝试。
Code:
$args = array(
// public - Boolean. If true, only public post types will be returned.
\'public\' => true,
// _builtin - Boolean.
// If true, will return WordPress default post types.
// Use false to return only custom post types.
\'_builtin\' => false
);
$output = \'objects\';
$operator = \'and\';
$cpt_post_types_obj = get_post_types( $args, $output, $operator );
$cpt_post_types = array();
foreach ( $cpt_post_types_obj as $cpt_apt ) {
$cpt_post_types[] = $cpt_apt->name;
}
$post_types_tmp = array_unshift($cpt_post_types, "Select a post type:");
<小时>
Update:
由于自定义post类型数组的构造与上述代码配合使用,因此问题可能与下拉列表有关。下面是一个你如何做到这一点的例子。
Code:
echo \'<select name="post_type_dropdown">\';
foreach ( $cpt_post_types_obj as $cpt_apt ) {
echo \'<option value="\'. $cpt_apt->name .\'">\'. $cpt_apt->name . \'</option>\';
}
echo \'</select>\';
<小时>
2nd Update:
就像我说的,这对我很有用。使用下面的代码,只需将其放入
functions.php
要测试,请调试它。
Code:
add_action( \'init\', \'wpse132165_pt_list_debug\' );
function wpse132165_pt_list_debug() {
$args = array(
// public - Boolean. If true, only public post types will be returned.
\'public\' => true,
// _builtin - Boolean.
// If true, will return WordPress default post types.
// Use false to return only custom post types.
\'_builtin\' => false
);
$output = \'objects\';
$operator = \'and\';
$cpt_post_types_obj = get_post_types( $args, $output, $operator );
// open up the next line like this /** to comment the code until the next /**/
/**/
echo \'<pre>\';
print_r($cpt_post_types_obj);
echo \'</pre>\';
/**/
$cpt_post_types = array();
foreach ($cpt_post_types_obj as $cpt_apt) {
$cpt_post_types[] = $cpt_apt->name;
}
/**/
echo \'<pre>\';
print_r($cpt_post_types);
echo \'</pre>\';
/**/
echo \'<select name="post_type_dropdown">\';
foreach ( $cpt_post_types_obj as $cpt_apt ) {
echo \'<option value="\'. $cpt_apt->name .\'">\'. $cpt_apt->labels->name . \'</option>\';
}
echo \'</select>\';
}