WordPress 自定义文章类型终极教程——注册到修改到删除

快捷标签实现分页
‘pages’ => true, // bool (默认为 TRUE)

// 是否为订阅源创建漂亮的固定链接feeds.
‘feeds’ => true, // bool (默认为 ‘has_archive’ 的值)

// 为固定链接设置设置 endpoint 遮罩
‘ep_mask’ => EP_PERMALINK, // const (默认为 EP_PERMALINK)
],

// 文章类型支持的 WordPress 功能,许多参数在文章编辑界面非常有用。这有助于其他主题和插件决定让用户使用什么功能
//或者提供什么数据,我们可以为该参数设置一个数组,也可以设置为 false,以防止添加任何功能,文章类型创建后,我们
//可以使用 add_post_type_support() 添加功能,或使用 remove_post_type_support() 删除功能。默认功能是“标题
//”和“编辑器”。
‘supports’ => [
‘title’,// 文章标题 ($post->post_title).
‘editor’, // 文章内容 ($post->post_content).
‘excerpt’, // 文章摘要 ($post->post_excerpt).
‘author’, // 文章作者 ($post->post_author).
‘thumbnail’,// 特色图像 (当前站点使用的主题必须支持 ‘post-thumbnails’).
‘comments’, // 显示评论元数据盒子,如果设置了该值, 这个文章类型将支持评论
‘trackbacks’, // 在编辑界面显示允许发送链接通知的元数据盒子
‘custom-fields’, // 显示自定义字段元数据盒子
‘revisions’, // 显示版本元数据盒子,如果设置了该参数,WordPress 将在数据库中保存文章版本
‘page-attributes’, // 显示“页面属性”元数据盒子,包含父级页面或页面排序字段。
‘post-formats’,// 显示文章格式元数据盒子,并允许该文章类型使用文章格式
],
// 标签用来在管理界面或前端显示该文章类型的名称,标签参数不会自动改写文章更新、错误等信息中的字段,我们需要过滤
// ‘post_updated_messages’ 钩子来自定义这些消息。
‘labels’ => [
‘name’ => __(‘Posts’, ‘wprs’),
‘singular_name’ => __(‘Post’, ‘wprs’),
‘menu_name’ => __(‘Posts’, ‘wprs’),
‘name_admin_bar’ => __(‘Posts’, ‘wprs’),
‘add_new’ => __(‘Add New’, ‘wprs’),
‘add_new_item’ => __(‘Add New Post’, ‘wprs’),
‘edit_item’ => __(‘Edit Post’, ‘wprs’),
‘new_item’ => __(‘New Post’, ‘wprs’),
‘view_item’ => __(‘View Post’, ‘wprs’),
‘search_items’ => __(‘Search Posts’, ‘wprs’),
‘not_found’ => __(‘No posts found’, ‘wprs’),
‘not_found_in_trash’ => __(‘No posts found in trash’, ‘wprs’),
‘all_items’ => __(‘All Posts’, ‘wprs’),
‘featured_image’ => __(‘Featured Image’, ‘wprs’),
‘set_featured_image’ => __(‘Set featured image’, ‘wprs’),
‘remove_featured_image’ => __(‘Remove featured image’, ‘wprs’),
‘use_featured_image’ => __(‘Use as featred image’, ‘wprs’),
‘insert_into_item’ => __(‘Insert into post’, ‘wprs’),
‘uploaded_to_this_item’ => __(‘Uploaded to this post’, ‘wprs’),
‘views’ => __(‘Filter posts list’, ‘wprs’),
‘pagination’ => __(‘Posts list navigation’, ‘wprs’),
‘list’ => __(‘Posts list’, ‘wprs’),

// 只在分级文章类型中使用的标签
‘parent_item’ => __(‘Parent Post’, ‘wprs’),
‘parent_item_colon’ => __(‘Parent Post:’, ‘wprs’),
],
];

// 注册文章类型
register_post_type(
‘example’, // 文章类型名称,最多 20 个字符,不支持大写或空格
$args // 文章类型的参数
);

}

使用可视化插件创建自定义文章类型

对于习惯 UI 操作的朋友,可以使用一些可视化插件来创建自定义类型,比如流行的 Custom Post Type UI,或者 GenerateWP 提供的 Post Type Generator 服务。

通过 register_post_type_args 过滤器修改已注册的文章类型

上文是使用 register_post_type() 函数注册一个全新的文章类型,如果我们需要一个已经注册过的文章类型呢?WordPress 为我们提供了一个过滤器“register_post_type_args”,使用这个过滤器,我们可以修改现有文章类型的参数,从而达到修改已注册的文章类型的目的。比如下面的示例中,我们修改了 “order” 文章类型的参数为 false,来实现在界面中隐藏该文章类型的目的。

add_filter('register_post_type_args', function ($args, $post_type)
{
    if ($post_type == 'order') {
        $args[ 'public' ] = false;
    }

    return $args;
});

使用辅助函数修改已注册的自定义文章类型

除了使用上面的过滤器方法修改现有的文章类型,WordPress 也为我们提供了几个函数来实现常用的文章类型修改需求。

add_post_type_support( 'post_type_name', array( 'title', 'editor' ) ); // 添加文章类型支持
register_taxonomy_for_object_type( 'taxonomy_name', 'post_type_name' ); //注册自定义分类法
unregister_taxonomy_for_object_type( 'taxonomy_name', 'post_type_name' ); //移除自定义分类法

反注册/删除已注册的自定义文章类型

有正就又反,有注册就有删除,我们可以使用下面的函数,移除现有的文章类型。

unregister_post_type('post_type_name')

使用自定义自定义文章类型搞一些事情

有了自定义文章类型,放着不用也是浪费,我们还可以借助下面的函数使用自定义文章类型搞一些事情。篇幅所限,这些函数就不提供参数解读了,如有需要,请搜索查看文档,如果找不到文档,翻一下源码也是可以的。

判断文章类型的性质

is_post_type_hierarchical( $post_type ) // 判断是否为分级文章类型
post_type_exists( $post_type ) // 判断文章类型是否存在
post_type_supports( $post_type, $feature ) // 判断文章类型是否支持某功能
is_post_type_viewable( $post_type ) // 判断文章类型是否可以在前端查看

获取文章类型对象及其属性

get_post_type( $post = null ) // 判断指定文章的文章类型
get_post_type_object( $post_type ) // 获取文章类型对象
get_post_types( $args = array(), $output="names", $operator="and" ) // 获取所有文章类型
get_post_type_labels( $post_type_object ) // 获取所有文章类型标签
get_all_post_type_supports( $post_type ) //获取文章类型支持的所有功能
get_post_types_by_support( $feature, $operator="and" ) // 获取支持某功能的所有文章类型
set_post_type( $post_id = 0, $post_type="post" ) // 设置文章的文章类型

我是怎么知道这些的?

凑齐上面的教程,我主要从下面三个地方复制了一些东西,有兴趣的朋友可以来凑凑热闹。

声明:本站资源绿色无后门无广告,可放心下载。如无特殊说明或标注,均为本站原创发布,转载请注明出处!