在WordPress中注册自定义Post Type是一个相对直接的过程,它涉及到使用register_post_type()
函数。以下是如何正确注册自定义Post Type的步骤:
-
定义函数:你可以在主题的
functions.php
文件中或者在一个单独的插件文件中定义一个函数来注册你的自定义Post Type。 -
使用
register_post_type()
函数:在这个函数中,你需要传递两个参数:Post Type的名称和一个包含各种支持的参数的数组。
下面是一个示例代码,展示了如何注册一个名为book
的自定义Post Type:
function my_custom_post_type() {
// 设置标签(复数和单数名称),也可以设置其他语言支持
$labels = array(
'name' => _x( 'Books', 'Post Type General Name', 'textdomain' ),
'singular_name' => _x( 'Book', 'Post Type Singular Name', 'textdomain' ),
'menu_name' => __( 'Books', 'textdomain' ),
// 其他标签...
);
// 设置支持的参数
$args = array(
'label' => __( 'Books', 'textdomain' ),
'description' => __( 'Book custom post type', 'textdomain' ),
'labels' => $labels,
// 其他参数...
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ),
'taxonomies' => array( 'category', 'post_tag' ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5,
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'post',
);
// 注册Post Type
register_post_type( 'book', $args );
}
// 使用钩子添加到init动作中
add_action( 'init', 'my_custom_post_type', 0 );
在上述代码中,my_custom_post_type
函数被绑定到init
动作上,这意味着当WordPress初始化时,该函数将被调用,并且自定义Post Type将被注册。
请注意以下几点:
label
:这是Post Type的名称,将显示在WordPress管理界面上。supports
:这个参数定义了你的Post Type支持哪些功能,比如标题、编辑器、缩略图等。taxonomies
:这个参数定义了你的Post Type可以使用哪些分类法,比如默认的“分类”和“标签”。hierarchical
:如果设置为true
,则Post Type类似于页面,可以具有父/子关系;如果设置为false
,则类似于帖子。public
:这个参数控制了Post Type是否可以被公开访问。
确保在定义标签和参数时,使用适当的文本域(textdomain
),这对于国际化(翻译)非常重要。
在添加自定义Post Type后,你可能需要刷新WordPress的permalink设置,以使新Post Type的链接结构生效。这通常可以通过访问“设置”>“固定链接”并简单地保存设置来完成,无需进行任何更改。