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

您想了解如何在 WordPress 中轻松创建自定义帖子类型吗?

自定义帖子类型允许您超越帖子和页面,并为您的网站创建不同的内容类型。他们将您的 WordPress 网站从博客平台转变为强大的内容管理系统 ( CMS )。

在本文中,我们将向您展示如何在 WordPress 中轻松创建自定义帖子类型。

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

什么是 WordPress 中的自定义帖子类型?

在您的WordPress 网站上,文章类型用于帮助区分 WordPress 中的不同内容类型。帖子和页面都是帖子类型,但用于不同的目的。

默认情况下,WordPress 带有几种不同的帖子类型:

邮政

附件

修订

导航菜单

您还可以创建自己的帖子类型,称为自定义帖子类型。这些在创建与标准帖子或页面格式不同的内容时很有用。

例如,如果您运行一个电影评论网站,那么您可能想要创建一个电影评论帖子类型。您还可以为投资组合、推荐和产品创建自定义帖子类型。

在 WPBeginner 上,我们为我们的交易和词汇表部分使用自定义帖子类型,以将它们与我们的日常博客文章分开。它帮助我们更好地组织我们的网站内容。

自定义帖子类型可以有不同的自定义字段和它们自己的自定义类别结构。

许多流行的 WordPress 插件使用自定义帖子类型在您的 WordPress 网站上存储数据。以下是一些使用自定义帖子类型的顶级插件:

WooCommerce将“产品”帖子类型添加到您的在线商店

WPForms创建一个“wpforms”帖子类型来存储您的所有表单

MemberPress添加了“memberpressproduct”自定义帖子类型

我需要创建自定义帖子类型吗?

在您开始在 WordPress 网站上创建自定义帖子类型之前,评估您的需求很重要。很多时候,您可以使用普通的帖子或页面获得相同的结果。

如果您不确定您的网站是否需要自定义帖子类型,请参阅我们的指南,了解何时需要 WordPress 中的自定义帖子类型或分类。

话虽如此,让我们看看如何在 WordPress 中轻松创建自定义帖子类型以供您自己使用。

我们将向您展示两种方法,并介绍一些在您的 WordPress 网站上显示自定义帖子类型的方法。

使用 WPCode 创建自定义帖子类型(推荐)

使用插件创建自定义帖子类型

在您的网站上显示自定义帖子类型

使用 WPCode 手动创建自定义帖子类型

创建自定义帖子类型需要您将代码添加到主题的functions.php文件中。通常,除了高级用户,我们不向任何人推荐此方法,因为即使是轻微的错误也会破坏您的网站。此外,如果您更新主题,则代码将被删除。

但是,我们将使用 WPCode,这是任何人向您的 WordPress 网站添加自定义代码的最简单、最安全的方式。

使用 WPCode,您可以添加自定义片段,并从其内置的预配置代码库中激活许多功能,这些代码库可以替换您可能已安装的许多专用或一次性插件。

首先,您需要安装并激活免费的 WPCode 插件。有关详细说明,请查看我们关于如何安装 WordPress 插件的分步指南。

激活后,导航到代码片段» 在您的 WordPress 仪表板中添加片段。将鼠标悬停在“添加您的自定义代码(新代码段)”上,然后单击“使用代码段”。

使用新代码段在 WPCode 中添加自定义代码

接下来,您将被带到“创建自定义片段”屏幕。

现在,您可以为您的代码片段命名并将开关切换到“活动”。

使用 WPCode 创建自定义代码段

之后,只需将以下代码粘贴到“代码预览”区域。此代码创建一个名为“电影”的基本自定义帖子类型,该类型将出现在您的管理侧边栏中,并且适用于任何主题。

// Our custom post type functionfunction create_posttype() {      register_post_type( ‘movies’,    // CPT Options        array(            ‘labels’ => array(                ‘name’ => __( ‘Movies’ ),                ‘singular_name’ => __( ‘Movie’ )            ),            ‘public’ => true,            ‘has_archive’ => true,            ‘rewrite’ => array(‘slug’ => ‘movies’),            ‘show_in_rest’ => true,          )    );}// Hooking up our function to theme setupadd_action( ‘init’, ‘create_posttype’ );

如果您只想要一个基本的自定义帖子类型,那么只需将moviesand替换为Movies您自己的 CPT slug 和名称,然后单击“更新”按钮。

但是,如果您想要自定义帖子类型的更多选项,请使用以下代码而不是上面的代码。

下面的代码为“电影”自定义帖子类型添加了更多选项,例如支持修订、特色图像、自定义字段,以及将自定义帖子类型与称为“流派”的自定义分类相关联。

注意:不要组合这两个片段,否则 WordPress 会给您一个错误,因为两个片段都注册了相同的自定义帖子类型。我们建议使用 WPCode 为您要注册的每个其他帖子类型创建一个全新的片段。

/** Creating a function to create our CPT*/  function custom_post_type() {  // Set UI labels for Custom Post Type    $labels = array(        ‘name’                => _x( ‘Movies’, ‘Post Type General Name’, ‘twentytwentyone’ ),        ‘singular_name’       => _x( ‘Movie’, ‘Post Type Singular Name’, ‘twentytwentyone’ ),        ‘menu_name’           => __( ‘Movies’, ‘twentytwentyone’ ),        ‘parent_item_colon’   => __( ‘Parent Movie’, ‘twentytwentyone’ ),        ‘all_items’           => __( ‘All Movies’, ‘twentytwentyone’ ),        ‘view_item’           => __( ‘View Movie’, ‘twentytwentyone’ ),        ‘add_new_item’        => __( ‘Add New Movie’, ‘twentytwentyone’ ),        ‘add_new’             => __( ‘Add New’, ‘twentytwentyone’ ),        ‘edit_item’           => __( ‘Edit Movie’, ‘twentytwentyone’ ),        ‘update_item’         => __( ‘Update Movie’, ‘twentytwentyone’ ),        ‘search_items’        => __( ‘Search Movie’, ‘twentytwentyone’ ),        ‘not_found’           => __( ‘Not Found’, ‘twentytwentyone’ ),        ‘not_found_in_trash’  => __( ‘Not found in Trash’, ‘twentytwentyone’ ),    );      // Set other options for Custom Post Type          $args = array(        ‘label’               => __( ‘movies’, ‘twentytwentyone’ ),        ‘description’         => __( ‘Movie news and reviews’, ‘twentytwentyone’ ),        ‘labels’              => $labels,        // Features this CPT supports in Post Editor        ‘supports’            => array( ‘title’, ‘editor’, ‘excerpt’, ‘author’, ‘thumbnail’, ‘comments’, ‘revisions’, ‘custom-fields’, ),        // You can associate this CPT with a taxonomy or custom taxonomy.         ‘taxonomies’          => array( ‘genres’ ),        /* A hierarchical CPT is like Pages and can have        * Parent and child items. A non-hierarchical CPT        * is like Posts.        */        ‘hierarchical’        => false,        ‘public’              => true,        ‘show_ui’             => true,        ‘show_in_menu’        => true,        ‘show_in_nav_menus’   => true,        ‘show_in_admin_bar’   => true,        ‘menu_position’       => 5,        ‘can_export’          => true,        ‘has_archive’         => true,        ‘exclude_from_search’ => false,        ‘publicly_queryable’  => true,        ‘capability_type’     => ‘post’,        ‘show_in_rest’ => true,      );          // Registering your Custom Post Type    register_post_type( ‘movies’, $args );  }  /* Hook into the ‘init’ action so that the function* Containing our post type registration is not * unnecessarily executed. */  add_action( ‘init’, ‘custom_post_type’, 0 );

您可能还会注意到我们将分层值设置为 的部分false。如果您希望自定义帖子类型的行为类似于页面而不是帖子,则可以将此值设置为true。

另一件要注意的是字符串的重复使用twentytwentyone ,这称为文本域。如果您的主题已准备好翻译并且您希望翻译您的自定义帖子类型,那么您需要提及您的主题使用的文本域。

您可以style.css在主题目录中的文件内找到主题的文本域,或者转到管理面板中的外观 » 主题文件编辑器。文本域将在文件头中提及。

查找主题的文本域

只需替换twentytwentyone为您自己主题的文本域。

一旦您对更改感到满意,只需单击“更新”按钮,WPCode 将处理其余部分。

使用插件创建自定义帖子类型

在 WordPress 中创建自定义帖子类型的另一种简单方法是使用插件。建议初学者使用此方法,因为它安全且超级简单。

您需要做的第一件事是安装并激活自定义帖子类型 UI插件。有关更多详细信息,请参阅我们关于如何安装 WordPress 插件的分步指南。

激活后,您需要转到CPT UI » 添加/编辑帖子类型以创建新的自定义帖子类型。您应该在“添加新帖子类型”选项卡上。

使用插件创建新的自定义帖子类型

首先,您需要为您的自定义帖子类型提供一个slug,例如“电影”。这个 slug 将在 URL 和 WordPress 查询中使用,因此它只能包含字母和数字。在此之下,您需要为您的自定义帖子类型提供复数和单数名称。

之后,如果您愿意,可以单击“根据所选标签填充其他标签”的链接。这将自动填写下方的附加标签字段,通常可以节省您的时间。

现在您可以向下滚动到“附加标签”部分。如果您没有点击我们提到的链接,您现在需要为您的帖子类型提供描述并更改标签。

向下滚动到附加标签部分

当您管理特定帖子类型的内容时,这些标签将在整个 WordPress 用户界面中使用。

接下来是帖子类型设置。从这里您可以为您的帖子类型设置不同的属性。每个选项都有一个简短的描述,解释它的作用。

向下滚动到帖子类型设置部分

例如,您可以选择不使帖子类型像页面一样分层或反向排序按时间顺序的帖子。

在常规设置下方,您将看到选择此帖子类型支持的编辑功能的选项。只需检查您想要包含的选项。

检查您要包含的支持选项

最后,单击“添加帖子类型”按钮以保存并创建您的自定义帖子类型。

就这样。您已成功创建自定义帖子类型,可以继续添加内容。

在您的网站上显示自定义帖子类型

WordPress 内置支持显示您的自定义帖子类型。将一些项目添加到新的自定义帖子类型后,就可以在您的网站上显示它们了。

您可以使用几种方法,每种方法都有自己的好处。

使用默认存档模板显示自定义帖子类型

首先,您可以简单地转到外观»菜单并将自定义链接添加到您的菜单。此自定义链接是指向您的自定义帖子类型的链接。

将自定义链接添加到您的菜单

如果您使用的是SEO 友好的永久链接,那么您的自定义帖子类型的 URL 很可能是这样的:

http://example.com/movies

如果您没有使用 SEO 友好的永久链接,那么您的自定义帖子类型 URL 将是这样的:

http://example.com/?post_type=movies

不要忘记将“example.com”替换为您自己的域名,将“movies”替换为您的自定义帖子类型名称。

保存您的菜单,然后访问您网站的前端。您将看到您添加的新菜单项,当您单击它时,它将使用您主题中的 archive.php模板文件显示您的自定义帖子类型的存档页面。

自定义帖子类型菜单项的预览

创建自定义帖子类型模板

如果您不喜欢自定义帖子类型的存档页面的外观,则可以使用自定义帖子类型存档的专用模板。

您需要做的就是在您的主题目录中创建一个新文件并将其命名为archive-movies.php. 确保将“电影”替换为自定义帖子类型的名称。

首先,您可以将主题archive.php文件的内容复制到archive-movies.php模板中,然后对其进行修改以满足您的需要。

现在,每当访问自定义帖子类型的存档页面时,都会使用此模板来显示它。

同样,您也可以为帖子类型的单条目显示创建自定义模板。为此,您需要single-movies.php在主题目录中创建。不要忘记用您的自定义帖子类型的名称替换“电影”。

您可以先将主题single.php模板的内容复制到single-movies.php模板中,然后开始对其进行修改以满足您的需求。

要了解更多信息,请参阅我们关于如何在 WordPress 中创建自定义单个帖子模板的指南。

在首页显示自定义帖子类型

使用自定义帖子类型的一个优点是它可以让您的自定义内容类型与您的常规帖子分开。但是,如果您愿意,您可以在您网站的首页上显示自定义帖子类型。

只需使用免费的 WPCode 插件将此代码添加为新代码段。有关详细说明,请参阅本文中有关手动添加代码的部分。

add_action( ‘pre_get_posts’, ‘add_my_post_types_to_query’ );  function add_my_post_types_to_query( $query ) {    if ( is_home() && $query->is_main_query() )        $query->set( ‘post_type’, array( ‘post’, ‘movies’ ) );    return $query;}

不要忘记用您的自定义帖子类型替换“电影”。

查询自定义帖子类型

如果您熟悉编码并想在模板中运行循环查询,那么这里是如何做到这一点的。通过查询数据库,您可以从自定义帖子类型中检索项目。

您需要将以下代码片段复制到您希望显示自定义帖子类型的模板中。

‘movies’, ‘posts_per_page’ => 10 );$the_query = new WP_Query( $args ); ?>have_posts() ) : ?>have_posts() ) : $the_query->the_post(); ?>

此代码在我们的新 WP_Query 类的参数中定义帖子类型和每页帖子的数量。然后它运行查询,检索帖子,并在循环中显示它们。

在小部件中显示自定义帖子类型

您会注意到 WordPress 中有一个默认小部件来显示最近的帖子,但它不允许您选择自定义帖子类型。

如果您想在小部件中显示新创建的帖子类型的最新条目怎么办?有一个简单的方法可以做到这一点。

您需要做的第一件事是安装并激活自定义帖子类型小部件插件。有关更多详细信息,请参阅我们关于如何安装 WordPress 插件的分步指南。

激活后,只需转到外观»小部件并将“最近的帖子(自定义帖子类型)”小部件拖放到侧边栏。

最近的自定义帖子类型小部件

此小部件允许您显示任何帖子类型的最近帖子。您需要从“帖子类型”下拉列表中选择您的自定义帖子类型,然后选择您想要的选项。

之后,请确保单击屏幕顶部的“更新”按钮,然后访问您的网站以查看正在运行的小部件。

最近自定义帖子类型小部件的预览

该插件还提供自定义帖子类型小部件,显示档案、日历、类别、最近评论、搜索和标签云。

自定义帖子类型存档小部件

我们希望本教程能帮助您了解如何在 WordPress 中创建自定义帖子类型。您可能还想了解如何增加博客流量,或查看我们的常见 WordPress 错误列表以及如何修复它们。