WordPress注册文章类型函数:register_post_type
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(); }