如何创建和管理 WordPress 自定义帖子类型?
已发表: 2022-09-15今天的内容管理超越了帖子、页面和媒体。 需要根据店铺需求创建、编辑和管理数百种内容类型,例如订单、优惠券、评论、订阅和会员。
在本文中,您将学习如何从一个地方创建和管理 WordPress 自定义帖子类型,从而节省您的时间和金钱。
让我们开始吧。
什么是 WordPress 自定义帖子类型?
本质上,帖子类型是指 WordPress 网站上不同类型的内容。
安装 WordPress 时,您只会获得五种默认帖子类型:帖子、页面、附件、修订和菜单。 今天的好消息是,WordPress 非常灵活,允许您创建自己的帖子类型。 因此,这些类型的帖子被称为自定义帖子类型。
这些对于创建格式与通常的标准帖子或页面不同的内容非常有用,而且好的部分是 WordPress 支持无限数量的自定义帖子类型。
例如,如果您运行一个会员网站,您会想要添加一个名为“会员”的自定义帖子类型。
作为 WooCommerce 店主,您还可以为产品、订单、优惠券、订阅、直销等创建自定义帖子类型。
创建后,自定义帖子类型将在 WordPress 仪表板管理区域中拥有自己的菜单。
话虽如此,让我们看看如何在 WordPress 中轻松创建自定义帖子类型以供您自己使用。
如何创建 WordPress 自定义帖子类型?
创建自定义帖子类型有两种方法:
- 使用插件
- 手动
使用插件创建 WordPress 自定义帖子类型
对于非技术人员和初学者,此选项既简单又安全。
我们建议使用最流行的自定义帖子类型 UI 插件,该插件有1+ 百万活跃安装。 该插件提供了一个易于使用的界面,用于为您的网站注册和管理自定义帖子类型和分类法。
安装并激活插件后,转到您的WordPress Admin panel > CPT UI > Add / Edit Post Types
以创建新的自定义帖子类型。 您应该位于“ Add New Post Type
选项卡上。
首先,为您的自定义帖子类型提供一个 slug,例如事件。 这个 slug 将在 URL 和 WordPress 查询中使用,因此它只能包含字母和数字。 在此之下,为您的自定义帖子类型提供复数和单数名称。

接下来,单击链接Populate additional labels based on chosen labels
。 这将自动填写下方的附加标签字段,作为回报,节省您的时间。
现在向下滚动到Additional Labels
部分。 如果您没有点击上面的链接,您需要为您的帖子类型提供说明并更改标签。

当您管理特定帖子类型的内容时,这些标签将在整个 WordPress 用户界面中使用。
完成后,转到帖子类型设置。 在这里,您可以为您的帖子类型设置不同的属性。 每个选项都有一个简短的描述,解释它的作用。

例如,您可以选择不使帖子类型像页面一样分层或反向排序按时间顺序的帖子。
在常规设置下方的部分中,您将看到用于选择此帖子类型支持的编辑功能的选项。 只需检查您想要包含的选项。
最后,单击Add Post Type
按钮以保存并创建您的自定义帖子类型。

而已。 您现在可以将内容添加到新的自定义帖子类型,因为您已成功创建它。
我们将在本文后面向您展示如何在您的网站上显示您的自定义帖子类型。
手动创建自定义帖子类型
使用插件的主要缺点是当插件被停用时,您的自定义帖子类型将消失。
您在这些自定义帖子类型中拥有的任何数据仍将存在,但您的自定义帖子类型将被取消注册,并且无法从管理区域访问。
如果您对代码或与技术人员合作有点熟悉,那么您可以通过在主题的 functions.php 文件或特定于站点的插件中添加所需的代码来手动创建自定义帖子类型。
首先,我们将向您展示一个快速且完整的示例,以便您了解它的工作原理。 看看这段代码:
// 我们自定义的帖子类型函数 函数 create_posttype() { register_post_type('事件', // 彩管选项 大批( '标签' => 数组( '名称' => __( '事件' ), 'singular_name' => __( '事件' ) ), '公共' => 真的, 'has_archive' => 真, 'rewrite' => array('slug' => 'events'), 'show_in_rest' => 真, ) ); } // 将我们的函数连接到主题设置 add_action('init', 'create_posttype');
此代码片段使用一组参数注册 post 类型events
。 这些参数是我们自定义帖子类型的选项。
该数组有两个部分。 第一部分被标记并且本身就是一个数组。 第二部分包含其他参数,如公共可见性、'has_archive、slug 和 show_in_rest,它们支持块编辑器。
让我们看一下为您的自定义帖子类型添加其他选项的更详细的代码:
/* * 创建一个函数来创建我们的 CPT */ 功能 custom_post_type() { // 为自定义帖子类型设置 UI 标签 $标签=数组( 'name' => _x('Events', 'Post Type General Name', 'twentytwentyone'), 'singular_name' => _x('Event', 'Post Type Singular Name', 'twentytwentyone'), 'menu_name' => __( '事件', 'twentytwentyone' ), 'parent_item_colon' => __( '父事件', 'twentytwentyone' ), 'all_items' => __('所有事件', 'twentytwentyone' ), 'view_item' => __('查看事件', 'twentytwentyone' ), 'add_new_item' => __('添加新事件,'twentytwentyone'), 'add_new' => __('新增', 'twentytwentyone' ), 'edit_item' => __( '编辑事件', 'twentytwentyone' ), 'update_item' => __( '更新事件', 'twentytwentyone' ), 'search_items' => __( '搜索事件', 'twentytwentyone' ), 'not_found' => __('未找到', 'twentytwentyone' ), 'not_found_in_trash' => __( '未在垃圾箱中找到', 'twentytwentyone' ), ); // 设置自定义帖子类型的其他选项 $args = 数组( 'label' => __('Events', 'twentytwentyone'), 'description' => __('事件数据', 'twentytwentyone' ), '标签' => $标签, // 此 CPT 在帖子编辑器中支持的功能 'supports' => array('title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ), // 您可以将此 CPT 与分类或自定义分类相关联。 '分类法' => 数组('流派'), /* 分层 CPT 类似于 Pages,可以有 * 父项和子项。 非等级 CPT * 就像帖子。 */ '分层' => 假, '公共' => 真的, 'show_ui' => 真, 'show_in_menu' => 真, 'show_in_nav_menus' => 真, 'show_in_admin_bar' => 真, 'menu_position' => 5, 'can_export' => 真, 'has_archive' => 真, 'exclude_from_search' => 假, 'publicly_queryable' => 真, 'capability_type' => '发布', 'show_in_rest' => 真, ); //注册您的自定义帖子类型 register_post_type('事件',$args); } /* 挂钩到 'init' 动作,以便函数 * 包含我们的帖子类型注册不是 * 不必要地执行。 */ add_action('init', 'custom_post_type', 0);
如您所见,我们使用此代码为自定义帖子类型添加了更多选项。 这将添加更多功能,例如支持修订、特色图像、自定义字段等。

我们还将此自定义帖子类型与称为genres
的自定义分类法相关联。
您可能还会注意到我们将分层值设置为 false 的部分。 如果您希望自定义帖子类型的行为类似于 Pages,则可以将此值设置为 true。
您可以在主题目录的style.css
文件中找到主题的文本域。 文本域将在文件头中提及。
在您的网站上显示自定义帖子类型
创建帖子类型后,您需要将其展示给网站上的访问者。
WordPress 内置支持显示您的自定义帖子类型。 将一些项目添加到新的自定义帖子类型后,就可以在您的网站上显示它们了。
您可以使用几种方法,每种方法都有自己的好处。
使用默认存档模板显示自定义帖子类型
转到您的WordPress admin panel > Appearance > Menus
并将自定义链接添加到您的菜单。 此自定义链接是指向您的自定义帖子类型的链接。
如果您使用的是 SEO 友好的永久链接,那么您的自定义帖子类型的 URL 将主要是这样的:http://example.com/events。
如果您没有使用 SEO 友好的永久链接,那么您的自定义帖子类型 URL 将是这样的:
http://example.com/?post_type=events。
不要忘记将“example.com”替换为您自己的域名,将“events”替换为您的自定义帖子类型名称。

保存您的菜单,然后访问您网站的前端。 您将看到您添加的新菜单项,单击时,它将使用您主题中的 archive.php 模板文件显示您的自定义帖子类型存档页面。
创建自定义帖子类型模板
显示自定义帖子类型的第二种方法是使用自定义帖子类型存档的专用模板。
您需要做的就是在主题目录中创建一个新文件并将其命名为archive-events.php
。 确保将“事件”替换为自定义帖子类型的名称。
首先,您可以将主题的archive.php 文件的内容复制到archive-events.php 模板中,然后根据需要对其进行修改。
现在,每当访问自定义帖子类型的存档页面时,都会使用此模板来显示它。
同样,您也可以为帖子类型的单条目显示创建自定义模板。 为此,您需要在主题目录中创建 single-events.php。 不要忘记用您的自定义帖子类型的名称替换“事件”。
您可以先将主题的 single.php 模板的内容复制到 single-events.php 模板中,然后开始修改它以满足您的需求。
在首页显示自定义帖子类型
使用自定义帖子类型的一个优点是它可以让您的自定义内容类型与您的常规帖子分开。 但是,如果您愿意,您可以在您网站的首页上显示自定义帖子类型。
只需将此代码添加到主题的 functions.php 文件或特定于站点的插件中。
add_action('pre_get_posts', 'add_my_post_types_to_query'); 函数 add_my_post_types_to_query( $query ) { if ( is_home() && $query->is_main_query() ) $query->set('post_type', array('post', 'events')); 返回$查询; }
不要忘记用您的自定义帖子类型替换“事件”。
您还可以考虑此文档以进一步参考添加自定义代码。
查询自定义帖子类型
如果您熟悉在模板中运行循环查询,那么这里是如何做到这一点的。 通过查询数据库,您可以从自定义帖子类型中检索项目。
您需要将以下代码片段复制到您希望显示自定义帖子类型的模板中。
<?php $args = array('post_type' => 'events', 'posts_per_page' => 10); $the_query = new WP_Query($args); 如果( $the_query->have_posts() ): 而( $the_query->have_posts() ): $the_query->the_post(); ?> <h2><?php the_title(); ?></h2> <div class="entry-content"> <?php the_content(); ?> </div> <?php 结束; wp_reset_postdata(); 其他:?> <p><?php _e('抱歉,没有符合您条件的帖子。'); ?></p> <?php endif; ?>
此代码在我们的新WP_Query
类的参数中定义帖子类型和每页帖子的数量。 然后它运行查询,检索帖子,并在循环中显示它们。
在小部件中显示自定义帖子类型
在这种情况下,您可以使用自定义帖子类型小部件插件。
转到您的WordPress admin panel > Appearance > Widgets
拖放到侧边栏。
此小部件允许您显示任何帖子类型的最近帖子。 您需要从Post Type
下拉列表中选择您的自定义帖子类型,然后选择您想要的选项。
之后,请确保单击屏幕顶部的“更新”按钮,然后访问您的网站以查看正在运行的小部件。
除了自定义帖子类型外,该插件还提供存档小部件、日历、类别、最近评论、搜索和标签云。
好吧,这就是关于显示自定义帖子类型的内容。
现在,让我们转到关于在 WordPress 中管理自定义帖子类型的一个非常重要但有趣的部分。
如何从一个地方管理数百个 WordPress 帖子类型(包括自定义帖子类型)?
现在,您可以请客了。
随着您的业务增长,将有成百上千的数据字段来自数百种不同的帖子类型进行管理。 无论是帖子、页面、媒体、WooCommerce 产品、订单、优惠券、用户、会员、订阅……
如果您要访问每种帖子类型并进行一次更改,那么管理和编辑这些数据将是一场噩梦。 您绝对不希望我在这里提及编辑数百个此类数据字段的痛苦。
那么,如果您可以使用熟悉的类似 Excel 的电子表格从一个地方管理和编辑所有这些 WordPress 帖子类型会怎样?
Smart Manager 插件绝对是您所需要的。
使用 Smart Manager(应用程序)管理数百种帖子类型
使用 Smart Manager,您可以
很快,您还可以很好地管理自定义分类法。
为您要管理的帖子类型选择仪表板,然后根据需要进行编辑。
管理产品帖子类型

例如,这是产品帖子类型的仪表板。 对于产品,您可以:
- 直接编辑库存状态、常规和销售价格、描述和其他详细信息
- 将新产品直接添加到 Smart Manager 网格
- 应用高级搜索过滤器以获取所需的产品,例如“价格在 100 美元到 200 美元之间的产品”。
- 批量编辑这 60 种产品以降低 10% 的价格
- 永久删除测试产品
- 复制所有产品或基于过滤器
- 将产品数据导出到 CSV
- 创建一个自定义视图,如“库存日志”仪表板
还有更多……
有关更多产品相关操作,请参阅 Smart Manager 文档。
管理订单、优惠券、订阅……
选择帖子类型的仪表板并开始编辑所有字段,包括您对产品所做的自定义字段:
- 帖子和页面——标题、图片、从草稿到发布的更新帖子状态等。
- 订单——更改状态、账单明细、运输字段、货币等。
- Coupon s – 修改优惠券使用、金额、类型、有效期、删除优惠券等。
- 用户(客户)——查看生命周期价值、编辑账单和运输细节、修改凭证等。
- 媒体——标题、内容、摘录、作者、菜单顺序等。
- 会员- 导出所有会员数据,批量升级会员计划,取消会员状态等。
- 订阅——批量重新激活或取消订阅、延长免费试用期、降低注册费、增加运费等。
- 预订- 编辑预订价格、重新安排、取消、导出等。
- 额外的产品选项——添加运输选项、添加礼品包装选项、显示自定义选项、追加销售更高的计划等。
- Dropshipping——管理供应商、产品价格、库存状态等。
- 多供应商——添加新供应商、编辑发货、税级、佣金状态、客户备注、标记订单等。
- LMS – 管理和编辑课程、课程、长度和难度、重复课程等。
- 高级自定义字段——添加、编辑和删除所有字段类型,如缩略图、单选按钮、复选框、范围、文件等。
和数百种帖子类型……
相当灵活和酷,对吧?
试试现场演示
结论
我希望您发现此博客有助于学习如何在 WordPress 中创建自定义帖子类型。 建议使用自定义帖子类型 UI 插件以避免编码麻烦。 但请注意停用插件。
此外,如果您不想在管理如此多的自定义帖子类型时感到沮丧,请使用 Smart Manager 从一个地方轻松管理任何类型的帖子。
我相信你以后会感谢我的。