WordPress注册文章类型函数:register_post_type

2022/07/13

WordPress函数register_post_type用于注册新的文章类型,不应该在init动作前挂载,所有分类法都通过$taxonomies参数注册,以确保在使用诸如“parse_query”或“pre_get_posts”之类的钩子时的一致性。

register_post_type( string $post_type, array|string $args = array() )

本文涉及的内容包括:

函数参数

$post_type

字符串

自定义文章类型,只能包含小写字母、数字或下画线,可以使用sanitize_key()函数检查。

$args

数组或字符串

label

字符串

菜单中显示的文章类型的名称。

labels

数组

文章类型的标签数组,如果没有设置,非层级的文章类型继承post标签,层级的文章类型继续page标签。

description

字符串

文章类型的简要描述。

public

布尔值,默认值:false

是否在管理界面或公开给前端用户使用。

hierarchical

布尔值,默认值:false

是否支持层级

exclude_from_search

布尔值,默认值:继承$public

是否在前端搜索结果中排除该文章类型

publicly_queryable

布尔值

是否可以作为parse_request()的一部份在前端对post执行查询

show_ui

布尔值,默认值:继承$public

是否在后台管理中显示

show_in_menu

布尔值,默认值:继承$show_ui

是否在后台菜单中显示

show_in_nav_menus

布尔值,默认值:继承$public

是否在导航菜单中显示

show_in_admin_bar

布尔值,默认值:继承$show_in_menu

是否在后台工具栏中显示

show_in_rest

布尔值

是否在REST API中使用,设置为true将在块编辑器中可用

rest_base

字符串,默认值:$post_type

更改REST API的基础路径

rest_controller_class

字符串,默认值:WP_REST_Terms_Controller

REST API控制器类名

menu_position

整数

在菜单位置中显示文章类型,要显示,$show_in_menu的值必须为true

menu_icon

字符串

菜单的图标,传递base64编码的SVG图像

capability_type

字符串或数组

用于构建读取、编辑和删除功能的字符串

capabilities

数组

该文章类型的权限

  • edit_post、read_post和delete_post:根据上下文映射到相应的原始权限,即正在编辑/读取/删除的帖子以及正在检查的用户或角色。因此,这些权限通常不会直接授予用户或角色;
  • edit_posts:编辑文章;
  • edit_private_posts:编辑私有文章;
  • edit_others_posts:编辑其他用户的文章;
  • edit_published_posts:编辑已发布的文章;
  • publish_posts:发布文章;
  • read:控制是否可以阅读这个文章类型;
  • read_private_posts:阅读私有文章;
  • delete_posts:删除文章;
  • delete_private_posts:删除私有文章;
  • delete_published_posts:删除已发布的文章;
  • delete_others_posts:删除其他用户的文章。

map_meta_cap

布尔值,默认值:false

是否使用内部默认meta

supports

数组

文章类型支持的核心功能,核心功能包括“标题”,“编辑”,“评论”,“修订”,“引用”,“作者”,“摘录”,“页面属性”,“缩略图”,“自定义字段”和“文章格式”

register_meta_box_cb

回调函数

通过回调函数来设置meta boxes

taxonomies

数组

文章类型要使用的分类法,分类法通过register_taxonomy()函数注册

has_archive

布尔值,默认值:false

是否应该有该文章类型的归档

rewrite

布尔值或数组

是否启用URL重写,设置为false禁止URL重写,默认为true

  • slug:别名,默认值:$post_type;
  • with_front:布尔值,是否应在permastruct前面加上WP_Rewrite::$front,默认为true;
  • feeds:布尔值,是否支持feeds,默认值继承$has_archive;
  • pages:布尔值,固定链接是否提供分页功能,默认为true;
  • ep_mask:要分配的端点掩码,如果未指定并且设置了permalink_epmask,则继承自$ permalink_epmask。 如果未指定并且未设置permalink_epmask,则默认为EP_PERMALINK。

query_var

字符串或布尔值

设置该文章类型的查询Key,默认为$post_type,如果为false,则无法以?{query_var}={post_slug}的方式加载文章

can_export

布尔值,默认值:true

是否允许导出文章

delete_with_user

布尔值

删除用户时是否同步删除该用户的文章,默认为空,表示文章类型支持作者功能时则删除文章。

template

数组

用作编辑器会话的默认初始状态的块数组,每个项目都应该是一个包含块名称和可选属性的数组。

template_lock

布尔值或字符串

如果设置了$template,是否应该锁定块模板。如果设置为“all”,则用户将无法插入新块,移动现有块和删除块。如果设置为“insert”,则用户可以移动现有块,但无法插入新块和删除块。 默认为false。

_builtin

布尔值,默认为false

仅限内部使用,如果文章类型是内置类型,则为true。

_edit_link

字符串

仅限内部使用,用于文章编辑链接的字段post.php?post=%d

函数使用示例

add_action('init', 'my_cpt_init');
function my_cpt_init() {
	register_post_type( ... );
}

add_action('after_switch_theme', 'my_rewrite_flush');
function my_rewrite_flush() {
	my_cpt_init();
	flush_rewrite_rules();
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注