描述
另见
- register_post_type():可用的接受参数。
参数
- $args
-
(array|string)(可选) key => value 数组参数,要与文章类型对象匹配。
默认值: array()
- $output
-
(string)(可选) 要返回的输出类型。接受文章类型'names'或'objects'。
默认值: 'names'
- $operator
-
(string)(可选) 要执行的逻辑操作。'or'表示数组中只有一个元素需要匹配;'and'表示所有元素必须匹配;'not'表示没有元素可以匹配。
默认值: 'and'
返回
(string[]|WP_Post_Type[]) 文章类型名称或对象的数组。
源码
更新日志
版本 | 描述 |
---|---|
2.9.0 | 开始引入 |
使用示例
$args的参数值包括:
- public – 布尔值。如果为true,则只返回公共文章类型。
- publicly_queryable – 布尔值
- exclude_from_search – 布尔值
- show_ui – 布尔值
- capability_type
- hierarchical
- menu_position
- menu_icon
- permalink_epmask
- rewrite
- query_var
- show_in_rest – 布尔值。如果为true,将返回REST API白名单中的文章类型
- _builtin – 布尔值。如果为真,它将返回WordPress默认的文章类型。使用false仅返回自定义文章类型。
仅输出公共的自定义文章类型列表
通过将'_builtin'
设置为false
,我们排除了WordPress内置的公共文章类型(post
,page
,attachment
,revision
, 和nav_menu_item
),并仅检索已注册的自定义公共文章类型。<?php $args = array( 'public' => true, '_builtin' => false ); $output = 'names'; // 'names' or 'objects' (default: 'names') $operator = 'and'; // 'and' or 'or' (default: 'and') $post_types = get_post_types( $args, $output, $operator ); if ( $post_types ) { // If there are any custom public post types. echo '<ul>'; foreach ( $post_types as $post_type ) { echo '<li>' . $post_type . '</li>'; } echo '<ul>'; } ?>
获取文章类型形式:name => singular name
function prefix_get_post_types() { $post_types = get_post_types([], 'objects'); $posts = array(); foreach ($post_types as $post_type) { $posts[$post_type->name] = $post_type->labels->singular_name; } return $posts; }
您可以在“选择”下拉选项中使用此功能,用户可以从现有的文章类型中选择文章类型。
检索命名的文章类型作为对象
此示例使用'object'
输出检索名为“movies”的文章类型,并显示其名称、单数名称和菜单图标(URL):<?php $args = array( 'name' => 'movies', ); $post_types = get_post_types( $args, 'objects' ); foreach ( $post_types as $post_type ) { echo '<p>Custom Post Type name: ' . $post_type->name . "<br />\n"; echo 'Single name: ' . $post_type->labels->singular_name . "<br />\n"; echo 'Menu icon URL: ' . $post_type->menu_icon . "</p>\n";; } ?>
显示文章类型的HTML下拉列表。
<?php // Get post types $args = array( 'public' => true, ); $post_types = get_post_types( $args, 'objects' ); ?> <select class="widefat" name="post_type"> <?php foreach ( $post_types as $post_type_obj ): $labels = get_post_type_labels( $post_type_obj ); ?> <option value="<?php echo esc_attr( $post_type_obj->name ); ?>"><?php echo esc_html( $labels->name ); ?></option> <?php endforeach; ?> </select>
输出所有已注册文章类型的名称列表
使用'names'
作为$output
参数值。<?php $post_types = get_post_types( '', 'names' ); echo '<ul>'; foreach ( $post_types as $post_type ) { echo '<li>' . $post_type . '</li>'; } echo '</ul>'; ?>
删除特定的文章类型
$post_types = get_post_types( array( 'public' => true, '_builtin' => true ), 'names', 'and' ); // remove attachment from the list unset( $post_types['attachment'] ); echo '<ul>'; foreach ( $post_types as $post_type ) { echo '<li>' . $post_type . '</li>'; } echo '</ul>';
显示文章类型的HTML下拉列表,包括自定义文章类型
<?php $post_types = get_post_types(array('public' => true), 'names', 'and'); ?> <select name="post_type"> <?php foreach ($post_types as $post_type) { ?> <option value="<?php echo esc_attr($post_type); ?>"><?php echo esc_html($post_type); ?></option> <?php } ?> </select> ?>
默认用法
检索所有内置和自定义post类型的名称(在数组中)。<?php $post_types = get_post_types(); ?>