说说WordPress自定义文章类型Post Type使用问题

/ 0评 / 0

什么是 Post Type ?

WordPress 里面内置了两种常用的 Post Type :Post(文章)、Page(页面),分别用来展示两种类型的内容,一种是相对动态的文章,另一种是相对固定的页面。

创建一个新的 Post Type 需要使用 register_post_type 函数来注册一下。需要在你主题的 functions.php 文件下调用该函数:

register_post_type( $post_type, $args );

$post_type 参数就是你自定义 Post Type 的名称,Post Type 可以自定义的功能非常多,所以这个函数里面的 $args 参数会很多。所以通常会用下面这种格式来注册:

function my_custom_post_product() {
    $args = array();
    register_post_type( 'product', $args ); 
}
add_action( 'init', 'my_custom_post_product' );

自定义文章类型代码示例

这是我的博客新增了一个说说的自定义文章类型,是使用Custom Post Type UI插件生成自定义文章类型,代码如下:

function my_shuoshuo()
 {

	/**
	 * Post Type: 说说.
	 */

	$labels = [
		"name" => __( "说说", "custom-post-type-ui" ),
		"singular_name" => __( "说说", "custom-post-type-ui" ),
		"menu_name" => __( "说说", "custom-post-type-ui" ),
		"all_items" => __( "所有说说", "custom-post-type-ui" ),
		"add_new" => __( "发表说说", "custom-post-type-ui" ),
		"add_new_item" => __( "发表说说", "custom-post-type-ui" ),
		"edit_item" => __( "编辑说说", "custom-post-type-ui" ),
		"new_item" => __( "新说说", "custom-post-type-ui" ),
		"view_item" => __( "查看说说", "custom-post-type-ui" ),
		"view_items" => __( "查看说说", "custom-post-type-ui" ),
		"search_items" => __( "搜索说说", "custom-post-type-ui" ),
		"not_found" => __( "暂无说说", "custom-post-type-ui" ),
		"not_found_in_trash" => __( "没有已遗弃的说说", "custom-post-type-ui" ),
		"parent" => __( "说说:", "custom-post-type-ui" ),
	];
	$args = [
		"label" => __( "说说", "custom-post-type-ui" ),
		"labels" => $labels,
		"description" => "",
		"public" => true,
		"publicly_queryable" => true,
		"show_ui" => true,
		"show_in_rest" => true,
		"has_archive" => true,
		"show_in_menu" => true,
		"show_in_nav_menus" => true,
		"delete_with_user" => false,
		"exclude_from_search" => true,
		"capability_type" => "post",
		"map_meta_cap" => true,
		"hierarchical" => false,
		"rewrite" => false,
		"query_var" => true,
		"supports" => [ "title", "editor" ],
	];

	register_post_type( "shuoshuo", $args );
}
add_action('init', 'my_shuoshuo');

$labels用来配置文章类型显示在后台的一些描述性文字,默认为空。(上面代码中,为了清晰所以单独拿出来创建了一个数组 $labels)

$args的详细参数

post type自定义文章类型使用的编辑器

wordpress5.0升级以后,添加了块编辑器(Gutenberg古腾堡编辑器),show_in_rest参数如果设置为false,那么将使用经典编辑器,如果设置为true,那么会使用块编辑器(Gutenberg古腾堡编辑器)。这是因为块编辑器(Gutenberg)完全由REST API提供支持。如果无法通过REST访问帖子类型,则块编辑器无法加载或保存帖子。

自定义 Post Type 的固定连接

Post Type 的参数数组里面的 rewrite 参数可以设置它的固定连接,常用以下几两项:

编辑器、固定连接别名问题

我在使用过程中遇到个问题,就是当show_in_rest为false使用经典编辑器时,发表文章,Wenprise Pinyin Slug插件可以对固定连接转换成拼音别名。当show_in_rest为true使用块编辑器时,Wenprise Pinyin Slug插件不起作用。但是默认的标准文章使用块编辑器,插件可以正常生成拼音别名固定连接。

此问题留待大神解决。

发表评论

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