WordPress附带五种默认帖子类型:文章,页面,附件,修订版,菜单。
在开发插件时,您可能需要创建自己的特定内容的类型:例如,电子商务网站的产品,学习网站的作业或视频网站的电影。使用自定义文章类型,您可以注册自己的文章类型。 一旦注册了一个文章类型,它将获得一个新的顶级管理页面,可用于管理和创建该类型的文章。要注册新的文章类型,您可以使用 register_post_type()
函数。
提醒:我们建议您将自定义文章类型放入插件而不是主题。这确保即使用户更改主题,内容也存在。
以下示例注册了一个新的文章类型“产品”,它在数据库中标识为 wporg_product
。
function wporg_custom_post_type()
{
register_post_type('wporg_product',
[
'labels' => [
'name' => __('Products'),
'singular_name' => __('Product'),
],
'public' => true,
'has_archive' => true,
]
);
}
add_action('init', 'wporg_custom_post_type');
提示:您必须在 admin_init 之前和 after_setup_theme 操作后调用
register_post_type()
。
文章类型命名最佳实践
文章类型的前缀与您的插件、主题或网站对应的短前缀是很重要的。
提示:为确保兼容,请勿使用
wp_
作为您的标识符,因为wp_
正在被WordPress核心所使用。
确保您的自定义文章类型标识符不要超过20个字符,因为数据库中的 post_type 字段是限长的 VARCHAR 类型。
自定义文章类型的自定义插件
要为自定义文章类型设置自定义段,您需要做的是向 register_post_type()
arguments 数组中的重写键添加一个 key =>value
对。
function wporg_custom_post_type()
{
register_post_type('wporg_product',
[
'labels' => [
'name' => __('Products'),
'singular_name' => __('Product'),
],
'public' => true,
'has_archive' => true,
'rewrite' => ['slug' => 'products'], // my custom slug
]
);
}
add_action('init', 'wporg_custom_post_type');
以上将导致以下URL结构:http://example.com/products/%product_name%
如果插件作者在参数上包含一个 apply_filters()
调用,可以通过编程的方式覆盖 register_post_type()
函数提交的参数完成。解决重复的文章类型标识符是不可能的。