You are here:  Home » PHP » 如何在WordPress中创建自定义分类

许多人认为WordPress是一个博客工具,主要是因为它有帖子类别,标签等。大多数人不知道的是,所有帖子,类别,标签都可以被自定义帖子类型和自定义分类法取代。在本文中,我们将向您展示如何在WordPress中创建自定义分类法以及如何在WordPress主题中显示自定义分类。

什么是分类法?

WordPress中的分类法是每个人都使用的东西之一,但他们不知道他们正在使用它。源自Linnaean分类法的生物分类方法,WordPress分类法被用作将帖子和自定义帖子类型组合在一起的方法。WordPress有两个非常流行的分类法,人们定期使用它们:类别和标签(阅读:类别与标签:最佳实践)。您可以使用自定义分类法来创建自定义组并将其置于一个保护伞下。例如,您有一个名为Books的自定义帖子类型。尽管您可以使用类别,但您可能不希望将两者混合使用,因为它们的使用方式不同。您可以注册一个名为Topics的新自定义分类。您可以添加以下主题词:冒险,浪漫,非小说等。这将允许您和您的用户按每个主题对书籍进行排序。分类法也可以是分层的,意味着您可以拥有主题,如:小说,非小说和儿童。然后在每个类别下都有子主题,例如小说会将惊悚片作为子主题。

既然你知道什么是自定义分类法,那么让我们学习如何在WordPress中创建自定义分类法。我们将使用两种方法来创建自定义分类。方法1将为那些选择不处理代码的人使用插件。另一方面,方法2是那些喜欢在没有插件的情况下做所有事情的人的代码方法。

视频教程

订阅WPBeginner

如果你不这样做喜欢视频或需要更多说明,然后继续阅读。

创建自定义分类法 – 更简单的方法

让我们开始创建自定义分类。首先,您需要安装并激活Simple Taxonomy WordPress插件。转到设置»自定义分类法创建新的分类法:

Creating a custom taxonomy in WordPress

创建自定义分类法的第一部分是给它一个名称,它必须全部小写并没有奇怪的人物。第二种选择是该分类法是否是分层的。如果要创建类别的分类,您可以在其中添加父项和子项,然后选择True,如果您希望像标签一样添加术语,则选择false。

第三个选项是将此分类与帖子类型相关联,最后一个选项是您是否要自动添加术语,选择无。

但我们还没有完成。让我们假设您正在创建分类并将其称为主题。现在你需要告诉WordPress它应该如何翻译主题的用户界面。

Translating taxonomy for UI

在为UI提供翻译后,按Add Taxonomy按钮。创建自定义分类后,它将显示在“帖子”下,并且将具有类似“类别”或“标签”的类似界面。自定义分类字段也将出现在帖子编辑区域中。

Custom taxonomy in Post Edit area

手动创建自定义分类法

在主题的 functions.php 文件或站点中添加以下代码 -特定插件(推荐)创建分类自定义分类,如类别:

//hook into the init action and call create_book_taxonomies when it fires
add_action( "init", "create_topics_hierarchical_taxonomy", 0 );

//create a custom taxonomy name it topics for your posts

function create_topics_hierarchical_taxonomy() {

// Add new taxonomy, make it hierarchical like categories
//first do the translations part for GUI

  $labels = array(
    "name" => _x( "Topics", "taxonomy general name" ),
    "singular_name" => _x( "Topic", "taxonomy singular name" ),
    "search_items" =>  __( "Search Topics" ),
    "all_items" => __( "All Topics" ),
    "parent_item" => __( "Parent Topic" ),
    "parent_item_colon" => __( "Parent Topic:" ),
    "edit_item" => __( "Edit Topic" ), 
    "update_item" => __( "Update Topic" ),
    "add_new_item" => __( "Add New Topic" ),
    "new_item_name" => __( "New Topic Name" ),
    "menu_name" => __( "Topics" ),
  ); 	

// Now register the taxonomy

  register_taxonomy("topics",array("post"), array(
    "hierarchical" => true,
    "labels" => $labels,
    "show_ui" => true,
    "show_admin_column" => true,
    "query_var" => true,
    "rewrite" => array( "slug" => "topic" ),
  ));

}

创建分类一样的非分层自定义分类,请在主题的函数中添加此代码.php 或在特定于站点的插件中:

//hook into the init action and call create_topics_nonhierarchical_taxonomy when it fires

add_action( "init", "create_topics_nonhierarchical_taxonomy", 0 );

function create_topics_nonhierarchical_taxonomy() {

// Labels part for the GUI

  $labels = array(
    "name" => _x( "Topics", "taxonomy general name" ),
    "singular_name" => _x( "Topic", "taxonomy singular name" ),
    "search_items" =>  __( "Search Topics" ),
    "popular_items" => __( "Popular Topics" ),
    "all_items" => __( "All Topics" ),
    "parent_item" => null,
    "parent_item_colon" => null,
    "edit_item" => __( "Edit Topic" ), 
    "update_item" => __( "Update Topic" ),
    "add_new_item" => __( "Add New Topic" ),
    "new_item_name" => __( "New Topic Name" ),
    "separate_items_with_commas" => __( "Separate topics with commas" ),
    "add_or_remove_items" => __( "Add or remove topics" ),
    "choose_from_most_used" => __( "Choose from the most used topics" ),
    "menu_name" => __( "Topics" ),
  ); 

// Now register the non-hierarchical taxonomy like tag

  register_taxonomy("topics","post",array(
    "hierarchical" => false,
    "labels" => $labels,
    "show_ui" => true,
    "show_admin_column" => true,
    "update_count_callback" => "_update_post_term_count",
    "query_var" => true,
    "rewrite" => array( "slug" => "topic" ),
  ));
}

注意两个代码之间的区别。对于类别分类法,分层参数的值为true,对于类似标记的分类法,则为false。同样在非分层标签的分类标签数组中,我们为parent_item和parent_item_colon参数添加了null,这意味着UI中不会显示任何内容来创建父项。

显示自定义分类法

以下是在单个帖子页面上显示添加到自定义分类法的术语的方法。在循环中的 single.php 文件中添加以下单行代码:

<?php the_terms( $post->ID, "topics", "Topics: ", ", ", " " ); ?>

您可以将其添加到其他文件中,例如archive.php,index.php以及您想要显示分类的任何其他位置。

默认情况下,您的自定义分类法使用 archive.php 模板来显示帖子。但是,您可以通过创建分类法 - {taxonomy-slug} .php 为它们创建自定义归档显示。

自定义分类法可以以多种方式使用。将它们与自定义帖子类型和自定义元框组合,您可以创建高度自定义的内容管理系统(CMS),以满足您的需求。让我们知道您在网站上如何使用自定义分类法?