WP Statuses 开源项目教程
1、项目介绍
WP Statuses 是一个 WordPress 插件,旨在简化自定义文章状态的集成。该插件允许用户为内置和自定义文章类型添加自定义状态,并适配 WordPress 管理界面的各个部分,以便用户管理所有可用的状态。
2、项目快速启动
安装
- 下载 WP Statuses 插件的最新版本。
- 将插件文件解压到
/wp-content/plugins/wp-statuses
目录。 - 在 WordPress 管理后台激活插件。
添加自定义状态
以下是一个示例代码,展示如何注册一个自定义状态:
add_action('init', function() {
register_post_status('archived', [
'label' => _x('Archived', 'post', 'wp-statuses'),
'public' => true,
'exclude_from_search' => false,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop('Archived <span class="count">(%s)</span>', 'Archived <span class="count">(%s)</span>', 'wp-statuses'),
'wp_statuses' => [
'show_in_metabox_dropdown' => true,
'show_in_inline_dropdown' => true,
'labels' => [
'metabox_dropdown' => __('Archived', 'wp-statuses'),
'inline_dropdown' => __('Archived', 'wp-statuses'),
],
'dashicon' => 'dashicons-archive',
],
]);
});
3、应用案例和最佳实践
应用案例
WP Statuses 可以用于创建一个简单的工单管理系统。例如,注册一个名为 "ticket" 的自定义文章类型,并为其添加自定义状态:
add_action('init', function() {
register_post_type('ticket', [
'labels' => [
'name' => __('Tickets', 'wp-statuses'),
'singular_name' => __('Ticket', 'wp-statuses'),
],
'public' => true,
'has_archive' => true,
'supports' => ['title', 'editor', 'author', 'custom-fields'],
]);
register_post_status('assigned', [
'label' => _x('Assigned', 'post', 'wp-statuses'),
'public' => true,
'label_count' => _n_noop('Assigned <span class="count">(%s)</span>', 'Assigned <span class="count">(%s)</span>', 'wp-statuses'),
'wp_statuses' => [
'show_in_metabox_dropdown' => true,
'show_in_inline_dropdown' => true,
'labels' => [
'metabox_dropdown' => __('Assigned', 'wp-statuses'),
'inline_dropdown' => __('Assigned', 'wp-statuses'),
],
'dashicon' => 'dashicons-admin-users',
],
]);
register_post_status('resolved', [
'label' => _x('Resolved', 'post', 'wp-statuses'),
'public' => true,
'label_count' => _n_noop('Resolved <span class="count">(%s)</span>', 'Resolved <span class="count">(%s)</span>', 'wp-statuses'),
'wp_statuses' => [
'show_in_metabox_dropdown' => true,
'show_in_inline_dropdown' => true,
'labels' => [
'metabox_dropdown' => __('Resolved', 'wp-statuses'),
'inline_dropdown' => __('Resolved', 'wp-statuses'),
],
'dashicon' => 'dashicons-yes',
],
]);
register_post_status('invalid', [
'label' => _x('Invalid', 'post', 'wp-statuses'),
'public'