WordPress 自定义帖子类型 - 初学者指南

已发表: 2017-01-04

WordPress 不再只是用于编写和发布博客文章的工具。 多年来,它已发展成为一个可扩展、灵活且强大的内容管理系统。 WordPress 正在缓慢但肯定地朝着成为构建 Web 应用程序的成熟框架的方向发展。 使这个 CMS 如此可调整的一件事是自定义帖子类型。

默认情况下,WordPress 带有 5 种内容帖子类型,其中 2 种您应该很熟悉:帖子和页面。 但是用户可以根据需要创建任意数量的自定义帖子类型,并使用它们来调整 WordPress 以满足他们的需求。 在本文中,我们将熟悉 WordPress 自定义帖子类型,以及它们如何帮助您构建出色的网站。 我们将介绍两种创建自定义帖子类型的方法:手动和使用插件。

WordPress 自定义帖子类型

开箱即用,WordPress 附带以下帖子类型:

  • 邮政
  • 修订
  • 附件
  • 导航菜单

WordPress 通过允许独特的选项和功能以不同的方式处理其每种帖子类型。 一个简单的例子是类别和标签,它们是帖子类型“帖子”独有的。 您可以将博客文章设置为特定类别,但不能对静态页面执行相同操作。 另一方面,页面可以有父级和模板。

到目前为止提到的帖子类型由 WordPress 保留。 用户可以创建自己的自定义帖子类型来扩展网站的功能,并更好地组织他们的内容。 通常,创建自定义帖子类型与创建自定义字段和自定义分类法密切相关,允许您插入独特的内容和选项——特定于给定的帖子类型。 但是,让我们再把这些放在一边,专注于为我们的网站设置一个独特的帖子类型。

自定义帖子类型示例

帖子类型可以是您网站所需的任何类型的内容。 假设我们有一个播客网站,需要显示播客剧集,并且需要偶尔发布单独的博客文章。 现在,如果我们将所有内容(播客和博客文章)混合在一个地方,我们的内容部分很快就会变得非常混乱。 这就是为什么对于我们偶尔的博客帖子,我们将使用 WordPress 中的默认帖子类型“post”,这允许我们使用默认分类法:类别和标签。

至于我们的Podcast部分,我们将创建一个名为Podcast的自定义帖子类型。 这样,我们可以将网站上的两种不同内容类型分开,并以一种整洁的方式组织它们。 稍后,我们可以为我们的播客部分创建自定义字段,例如剧集持续时间、节目主持人、链接等。 此外,我们可以设置特定于此类内容的自定义分类法,例如播客类别、播客节目等。 您会看到它的去向,以及 WordPress 在内容操作和结构方面提供了多大的灵活性。

在 WordPress 中创建自定义帖子类型

有两种方法可以在 WordPress 中创建自定义帖子类型:手动(相当简单,但需要熟悉编码)和使用插件(更简单的方法,但需要您安装插件)。 你应该选择哪一个? 由于不兼容、性能问题和糟糕的代码,拥有许多插件可能会让您头疼。 如果您已经安装了大量的插件,那么您可能希望这一次弄脏自己的手。 我们将介绍这两种方法,由您决定哪一种最适合您。

使用插件

有一些用于创建自定义帖子类型的插件。 最受欢迎的用户界面之一是自定义帖子类型 UI,它还允许您为您的帖子类型创建自定义分类法。

重要提示:如果您删除有问题的插件,使用插件创建的帖子类型将消失。 数据将在数据库中,但您的自定义帖子类型将未注册,并且无法从管理区域访问。

这个插件的界面非常直观和简单。 您单击添加新的,然后为自定义帖子类型提供帖子类型名称、标签、单数标签和描述。 并不是说 5 种 WordPress 帖子类型是保留的,您不能使用这些名称。 这是您应该输入的示例:

帖子类型名称:播客
标签:播客
单数名称:播客
描述:播客的帖子类型

WordPress 使用单数名称字段来显示一些 UI 元素和操作,例如添加新播客。

手动

要手动创建自定义帖子类型,您需要修改主题的 functions.php。 使用您最喜欢的 FTP 客户端并登录到托管您网站的服务器。 连接后,您需要:
1. 导航到 wp-content -> 主题 -> 你的主题
2.打开functions.php
3. 如果您使用的是子主题,并且没有这样的文件,请创建它。
4. 插入下面的代码。

根据我们的示例,我们需要创建一个播客自定义帖子类型。 这是代码(从第 4 步开始:以下代码进入您的 functions.php 文件):

 // Registering CPT function podcast_post_type() { //Setting up the user interface labels for podcasting CPT $labels = array( 'name' => _x( 'Podcasts', 'Post Type General Name' ), 'singular_name' => _x( 'Podcast', 'Post Type Singular Name' ), 'menu_name' => __( 'Podcasts' ), 'name_admin_bar' => __( 'Podcast' ), 'parent_item_colon' => __( 'Parent Podcast' ), 'all_items' => __( 'All Podcasts' ), 'add_new_item' => __( 'Post New Podcast' ), 'add_new' => __( 'New Podcast' ), 'new_item' => __( 'New Podcast' ), 'edit_item' => __( 'Edit Podcast' ), 'update_item' => __( 'Update Podcast' ), 'view_item' => __( 'View Podcast' ), 'search_items' => __( 'Search Podcasts' ), 'not_found' => __( 'No Podcasts found' ), 'not_found_in_trash' => __( 'No Podcasts found in trash' ) ); //Setting up other options for Podcasts CPT $args = array( 'label' => __( 'Podcasts' ), 'labels' => $labels, 'description' => __( 'Creating and managing podcasts' ), 'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'comments', 'revisions', 'custom-fields' ), //Initially supported features 'taxonomies' => array( 'podcast-category'), //If custom taxonomies exist, insert their names in the array '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, ); //Registering custom post type register_post_type( 'podcasts', $args ); } // Hook into init action add_action( 'init', 'podcasts_post_type', 0 );

这部分代码可能看起来很复杂,但实际上并非如此。 您只是为自定义帖子类型插入一堆选项,并指定它将支持什么。 注意:

  • $labels 数组告诉 WordPress 如何在管理面板中显示帖子类型。
  • $args 数组从 $labels 数组加载所有配置,并指定自定义帖子类型的选项。
  • 当 register_post_type( 'podcasts', $args ) 函数在主 podcasts_post_type() 函数中使用 2 个参数调用时,魔法就会发生:自定义帖子类型的名称和存储在 $args 中的选项(这是一个关联数组)。 然后,我们只需将 podcasts_post_type() 函数挂钩到 init,并让 WordPress 加载它。

当您单击保存并将修改后的 functions.php 上传到主题文件夹时,您应该会在 WordPress 管理面板上看到 Podcast(只是下面的帖子,因为我们将 $args 中的 menu_position 设置为 5)。 如果将鼠标悬停,您应该会看到“所有播客”和“添加新播客”之类的操作——正如我们在 $labels 数组中指定的那样。 由于我们没有插入任何自定义字段,因此当您尝试添加新播客时,一切都将与添加普通帖子一样。

如果您确实注意到,在 $args 数组中,我们添加了“播客”作为分类。 我们尚未创建此分类法,但这最终将包含我们的自定义类别,如播客类别、播客节目等。

当谈到 WordPress 自定义帖子类型时,这就是您现在真正需要的。 现在问题变成了,如何显示 CPT 中的内容,如何创建分类法(在我们的例子中是播客分类法),以及如何创建自定义字段? 别担心,我们将逐步介绍所有这些!