如何以编程方式创建 WordPress 自定义帖子类型

已发表: 2021-10-05

您想在您的网站上发布自定义帖子类型吗? 我们已经为您服务了。 在本指南中,我们将教您如何使用一些代码以编程方式创建 WordPress 自定义帖子类型

最初,创建 WordPress 是为了发布帖子。 然而,经过这么多年,WordPress 不仅仅是一个发布帖子的平台。 如今,它是最完整的网络解决方案,为近 40% 的网站提供支持。

尽管它包含了许多功能,但发布仍然是吸引用户访问您的网站并保持他们参与度的最佳方式之一。 WordPress 提供默认帖子类型,但如果您想自定义您的网站并使其在竞争对手中脱颖而出,那么创建自定义帖子类型可能是一个很好的解决方案。

在本教程中,我们将向您展示如何以编程方式创建和发布 WordPress 自定义帖子类型。 在开始之前,让我们更好地了解自定义帖子类型到底是什么以及何时应该使用它们。

什么是自定义帖子类型?

自定义帖子类型是内容类型。 WordPress 默认带有几种帖子类型。 帖子和页面是最著名的,但还有其他:

  • 帖子
  • 页面
  • 附件
  • 导航菜单
  • 修订
  • 自定义 CSS
  • 变更集

大多数用户使用前五种类型,但还有其他类型。 实际上,您可能在不知道它们是自定义帖子类型的情况下使用其中的一些。

自定义帖子类型的最佳示例是 WooCommerce 产品。 当您第一次激活 WooCommerce 时,该插件会创建一个名为“产品”的自定义帖子类型。 一旦您开始创建产品,它们就会作为产品帖子类型发布,其中包含 WooCommerce 提供的所有增强功能。

即使这些帖子类型不称为自定义,您也可以像 WooCommerce 一样创建您的帖子类型,并为它们指定您想要的名称。 例如,事件、列表、时间表、课程、作品集和个人资料可以是对特定网站有用的帖子类型名称。

总而言之,自定义帖子类型是一种新的帖子类型,用户可以根据特定要求创建自定义网站。

为什么以及何时应该使用自定义帖子类型?

自定义帖子类型 (CPT) 可能因构建方式而异,因此您可以使用它们来实现各种解决方案。

您可以在以下情况下使用自定义帖子类型:

  • 您将定期发布一些您无法使用默认帖子类型发布的特定类型的信息
  • 需要将某种类型的帖子与标准帖子区分开来
  • 需要改变某些类型帖子的行为
  • 想要自定义帖子功能、发布过程和元素或对其应用一些特殊功能

作为一般规则,当您需要不同类型的帖子及其功能或自定义行为时,您应该在 WordPress 网站上使用 CPT。

自定义帖子类型与默认帖子类型不同,因此它们需要特殊处理而无需覆盖默认帖子类型功能。 当您需要不同的帖子类型时,这是一个很大的优势,因为您可以从头开始创建完全符合您要求的自定义帖子类型。

现在我们更好地了解了它们是什么以及何时使用它们,让我们看看如何创建自定义帖子类型。

如何以编程方式创建 WordPress 自定义帖子类型

在本节中,我们将通过示例向您展示如何在 WordPress 中创建自定义帖子类型。 在开始之前,请确保备份您的网站并创建一个子主题(如果您还没有)。

在您的仪表板中,转到Appearance > Theme Editor ,在右侧列中打开子主题的functions.php文件并粘贴以下脚本。 它将注册一个名为movies的自定义帖子类型。

 函数 QuadLayers_custom_post_type() {
// 为自定义帖子类型设置 UI 标签
    $标签=数组(
        'name' => _x('Movies', 'Post Type General Name', 'storefront' ),
        'singular_name' => _x('Movie', 'Post Type Singular Name', 'storefront'),
        'menu_name' => __( '电影', '店面' ),
        'parent_item_colon' => __( '父电影', '店面' ),
        'all_items' => __( '所有电影', '店面' ),
        'view_item' => __( '观看电影', '店面' ),
        'add_new_item' => __('添加新电影', '店面' ),
        'add_new' => __( '新增', '店面' ),
        'edit_item' => __( '编辑电影', '店面' ),
        'update_item' => __( '更新电影', '店面' ),
        'search_items' => __( '搜索电影', '店面' ),
        'not_found' => __('未找到', '店面' ),
        'not_found_in_trash' => __( '未在垃圾箱中找到', '店面' ),
    );
// 设置自定义帖子类型的其他选项
    $args = 数组(
        '标签' => __( '电影', '店面' ),
        'description' => __('电影新闻和评论', '店面' ),
        '标签' => $标签,  
        'supports' => array('title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ),     
        '分类法' => 数组('流派'),     
        '分层' => 假,
        '公共' => 真的,
        '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 );
}
add_action('init', 'QuadLayers_custom_post_type', 0 );

粘贴代码后,一个名为电影的新选项卡将出现在您的 WordPress 管理仪表板上。
以编程方式创建自定义帖子类型

如果打开它,您会看到帖子编辑器与默认帖子类型相同,因为我们为帖子编辑器屏幕设置了相同的参数。 那么我们怎么知道它是自定义帖子类型编辑器呢? 因为在页面的 URL 和标题上,您可以看到 Movies 帖子类型。

添加自定义帖子类型

现在你看到了最终结果,让我们分析一下代码,这样你就可以更好地理解每个部分的作用。

代码说明

我们刚刚了解了如何以编程方式创建 WordPress 自定义帖子类型。 但这只是你必须知道的一半。 如果要创建自己的帖子类型,则需要自定义代码。 为此,您需要了解片段的每个部分的作用。

我们使用wp_init()钩子来确保我们的函数运行一次:当 WordPress 启动时。 在我们的QuadLayers_custom_post_type()函数中,有三个部分。

1) 标签

这些是主题将在不同的管理和前端页面上使用的一组字符串。 这是在单个数组上设置的:

$labels = array(
'name' => _x( 'Movies', 'Post Type General Name', 'storefront' ),
);

2) 选项

这些是一些预定义的选项,用于定义我们的自定义帖子类型(电影)的行为和其他一些功能。

每个选项都是一个特定的指令,它将定义我们的自定义帖子类型将如何操作。 最相关的是:

  • 'supports':它定义将在帖子编辑器上使用哪些组件
  • 'taxonomies':您可以将一个或多个现有类别或自定义类别应用于当前功能上注册的所有 CPT
  • ' 'hierarchical' : 帖子不能有父内容,这会将 CPT 与页面区分开来。 如果要发布自定义页面而不是自定义帖子类型,请将其设置为 true
  • ' show_in_admin_bar':在 WordPress 管理仪表板上显示 CPT 选项卡

有关所有参数及其描述的完整列表,请查看此文档。

3)自定义帖子类型注册

WordPress 函数register_post_type()最终将注册我们新的自定义帖子类型并将其设置为可以使用。

现在您更好地理解了代码,您可以开始发布您的自定义帖子类型。 但除了发布它们之外,您还需要在某处显示您的 CPT。 让我们看看如何做到这一点。

如何在 WordPress 中显示自定义帖子类型

到目前为止,我们已经了解了如何在 WordPress 中以编程方式创建自定义帖子类型。 发布后,您必须决定要在哪里显示它。

有几种方法可以在前端打印 CPT。 您可以在另一个帖子、页面、侧边栏或您想要的任何其他位置显示特定自定义帖子类型的完整列表。

在以下示例脚本中,我们将创建一个自定义简码,以在新页面上显示我们使用上一个函数创建的所有自定义帖子类型。

以下脚本将创建一个名为Movies的短代码,它将在我们添加短代码的任何页面上打印我们添加到 CPT 的所有电影。

 add_shortcode('movies', 'QuadLayers_display_cpt_shortcode');
函数 QuadLayers_display_cpt_shortcode(){
    $args = array('post_type' => 'movies', 'posts_per_page' => 10);
    $the_query = new WP_Query($args);
    如果( $the_query->have_posts() ):
    而 ( $the_query->have_posts() ) : $the_query->the_post();
    $c= the_title( sprintf( '<h2 class="entry-title">', esc_url( get_the_title() ) ), '</h2>')。
    '<div class="entry-content">'。
    内容()。
    '</div>';
结束;
wp_reset_postdata();
别的:
$c = '对不起,没有帖子符合您的条件。';
万一;
返回 $c;
}

因此,如果您将简码放在页面上:

显示 CTP 的简码

你会看到结果:

带有简码的自定义帖子类型

结论

总之,我们已经看到,默认情况下,WordPress 包含一些帖子类型,但您可以根据您的要求添加自定义帖子类型以自定义您的网站。

在本指南中,我们向您展示了如何以编程方式创建 WordPress 自定义帖子类型。 我们已经分析了片段并描述了每个部分,因此您可以对其进行自定义并在您的网站上使用它。 此外,我们还了解了如何创建自定义简码,允许您在网站的任何位置显示自定义帖子类型。

您是否尝试过在您的网站上创建自定义帖子类型? 在评论部分让我们知道您的经验。

要自定义站点的其他区域,请查看以下教程:

  • 如何将自定义上传字段添加到 WooCommerce
  • 如何将自定义字段添加到结帐
  • 编辑 WooCommerce 结帐字段的指南