跳到主要内容

您是否想学习如何在WordPress中轻松创建自定义帖子类型?自定义帖子类型将WordPress网站从博客平台转变为功能强大的内容管理系统(CMS)。

基本上,它们允许您通过为网站创建不同的内容类型来超越帖子和页面。

在本文中,我们将向您展示如何轻松地在WordPress中创建自定义帖子类型。我们将教您两种方法,您可以选择一种看起来更简单的方法。

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

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

自定义帖子类型是诸如帖子和页面之类的内容类型。由于WordPress从简单的博客平台演变为强大的CMS,术语post一直坚持下去。但是,帖子类型可以是任何种类的内容。

默认情况下,WordPress随附以下帖子类型:

  • 发布
  • 附件
  • 修订版
  • 导航菜单

您可以创建自己的自定义帖子类型,然后根据需要调用它们。

例如,如果您运行一个电影评论网站,则可能要创建一个电影评论帖子类型。该帖子类型可以具有不同的自定义字段,甚至可以具有自己的自定义类别结构。

职位类型的其他示例包括投资组合,推荐书,产品等。

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

  • WooCommerce –将产品自定义帖子类型添加到您的WordPress网站。
  • WPForms –创建wpforms帖子类型以存储所有表单
  • MemberPress –添加memberpressproduct自定义帖子类型

我什么时候需要自定义帖子类型?

请查看我们的文章,了解何时真正需要WordPress中的自定义帖子类型或分类法。

还可以查看WPBeginner的“ 交易”和“ 词汇表”部分。这些是我们创建的自定义帖子类型,以使这些部分与我们的日常博客文章分开。它可以帮助我们更好地组织网站内容。

您还将注意到,我们正在为其使用自定义分类法,而不是类别或标签。

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

方法1.创建自定义帖子类型–简单方法

在WordPress中创建自定义帖子类型的最简单方法是使用插件。推荐给初学者使用此方法,因为它安全且超级容易。

您需要做的第一件事是安装并激活“ 自定义帖子类型” UI插件。激活后,该插件将在您的WordPress管理菜单中添加一个名为CPT UI的新菜单项。

现在转到CPT UI»添加新内容以创建新的自定义帖子类型。

方法1.创建自定义帖子类型–简单方法
方法1.创建自定义帖子类型–简单方法

首先,您需要为自定义帖子类型提供一个标签。这蛞蝓将在URL和在WordPress查询中使用,所以它只能包含字母和数字。

在此之下,您需要为自定义帖子类型提供复数和单数名称。

接下来,您可以选择单击“根据所选标签填充其他标签”链接。这样做将在下面填充其余的标签字段。

向下滚动到“其他标签”部分,然后您可以在此处提供有关帖子类型和更改标签的说明。

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

接下来是帖子类型设置选项。在这里,您可以为帖子类型设置不同的属性。每个选项都附带简要说明,说明其功能。

例如,您可以选择不对帖子类型进行分层(例如页面)或反向按时间顺序(例如帖子)进行分类。

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

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

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

本文稍后将向您展示如何在您的网站上显示自定义帖子类型。

手动创建自定义帖子类型

使用插件的问题在于,停用插件后,您的自定义帖子类型将消失。您在这些自定义帖子类型中拥有的所有数据仍将在那里,但是您的自定义帖子类型将被取消注册,并且无法从管理区域访问。

如果您在客户端站点上工作并且不想安装其他插件,则可以通过在主题的functions.php文件或特定于站点的插件中添加所需的代码来手动创建自定义帖子类型(请参阅:自定义帖子)输入Debate functions.php或Plugin)。

首先,我们将向您展示一个快速且完整的示例,以便您了解其工作原理。看一下这段代码:

// Our custom post type functionfunctioncreate_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');

该代码的作用是它注册’movies’带有参数数组的post类型。这些参数是我们自定义帖子类型的选项。

这个数组有两个部分,第一部分被标记,它本身就是一个数组。第二部分包含其他参数,如公共可见性,具有存档,段位和show_in_rest启用块编辑器支持。

现在,让我们看一下一段详细的代码,为您的自定义帖子类型添加更多选项。

/** Creating a function to create our CPT*/
functioncustom_post_type() {
// Set UI labels for Custom Post Type    $labels= array(        'name'                => _x( 'Movies', 'Post Type General Name', 'twentytwenty'),        'singular_name'       => _x( 'Movie', 'Post Type Singular Name', 'twentytwenty'),        'menu_name'           => __( 'Movies', 'twentytwenty'),        'parent_item_colon'   => __( 'Parent Movie', 'twentytwenty'),        'all_items'           => __( 'All Movies', 'twentytwenty'),        'view_item'           => __( 'View Movie', 'twentytwenty'),        'add_new_item'        => __( 'Add New Movie', 'twentytwenty'),        'add_new'             => __( 'Add New', 'twentytwenty'),        'edit_item'           => __( 'Edit Movie', 'twentytwenty'),        'update_item'         => __( 'Update Movie', 'twentytwenty'),        'search_items'        => __( 'Search Movie', 'twentytwenty'),        'not_found'           => __( 'Not Found', 'twentytwenty'),        'not_found_in_trash'  => __( 'Not found in Trash', 'twentytwenty'),    );     // Set other options for Custom Post Type         $args= array(        'label'               => __( 'movies', 'twentytwenty'),        'description'         => __( 'Movie news and reviews', 'twentytwenty'),        '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的部分。如果您希望自定义帖子类型的行为类似于Pages,则可以将此值设置为true。

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

您可以style.css在主题目录中的文件内找到主题的文本域。文本域将在文件标题中提及。

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

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

您可以使用两种方法,每种方法都有其自身的优势。

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

首先,您只需转到外观»菜单,然后向菜单添加自定义链接。该自定义链接是指向您的自定义帖子类型的链接。

如果您使用的是SEO友好的永久链接,那么CPT的URL很可能是这样的:

http://example.com/movies

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

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

不要忘记用您自己的域名替换example.com,并用您的自定义帖子类型名称替换电影。

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

对CPT存档和单个条目使用自定义模板

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

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

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

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

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

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

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

使用自定义帖子类型的一个优势是,它可以使您的自定义内容类型远离常规帖子。但是,如果希望它们显示在常规帖子中,则可以通过将以下代码添加到主题的functions.php文件或特定于站点的插件中来实现:

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

不要忘记movies用您的自定义帖子类型替换。

查询自定义帖子类型

如果您熟悉编码并想在模板中运行循环查询,那么这里是执行该操作的方法(相关内容:什么是循环?)。

通过查询数据库,您可以从自定义帖子类型检索项目。

<?php $args= array( 'post_type'=> 'movies', 'posts_per_page'=> 10 );$the_query= newWP_Query( $args); ?><?php if( $the_query->have_posts() ) : ?><?php while( $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(); ?><?php else:  ?><p><?php _e( 'Sorry, no posts matched your criteria.'); ?></p><?php endif; ?>

在此代码中,首先,我们在新的WP_Query类的参数中定义了帖子类型和每页帖子数。

之后,我们运行查询,检索帖子并将其显示在循环中。

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

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

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

您需要做的第一件事是安装并激活Ultimate Posts Widget插件。激活后,只需转到外观»小部件,然后将Ultimate Posts小部件拖放到侧边栏。

这个强大的小部件可让您显示任何帖子类型的最新帖子。您还可以显示带有更多链接的文章摘录,甚至在文章标题旁边显示特色图片。

通过选择所需的选项并选择自定义帖子类型来配置窗口小部件。之后,保存您的更改,并在您的网站上查看运行中的小部件。

更多高级自定义帖子类型调整

您可以使用自定义帖子类型做更多的事情。您可以学习在主RSS feed中添加自定义帖子类型,或为每种自定义帖子类型创建单独的feed。

有关更多技巧,请参阅我们最有用的WordPress自定义帖子类型教程列表。

如果您正在寻找一种无需代码的解决方案来自定义自定义帖子类型存档页面,那么我们建议您看一下Beaver Builder或Divi之类的WordPress页面构建器插件,因为它们都可以帮助您做到这一点。

我们希望本文能帮助您学习如何在WordPress中创建自定义帖子类型。您可能还想查看我们的实用指南,以了解如何增加网站流量。

回到顶部