# WordPress创建商品类型和商品分类法

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/1502.html | 发布：2021-11-03 | 更新：2021-11-03 | 分类：建站教程

要说WordPress程序对于初学者来说，个人觉得最难的就是 自定义类型 和 自定义分类法 这两个东西，基本掌握了类型和分类法，简单的WordPress 仿站建站就不成问题了。

 

最近小编就被WordPress这分类法给整的稀里糊涂，一般企业站那必须要 产品分类的嘛，但WordPress只有一个文章分类。文章和产品的页面肯定是不太一样的，所以要使用WordPress程序制作企业站就必须创建一个自定义文章类型和自定义分类法。

 

## 什么是 自定义文章类型 ？

 

WordPress给出了一个模板就是后台的文章类型，在代码中程序的形式是 post type。那么我们要创建一个区别于 post type的文章类型，就是自定义文章类型了。

 

## 创建 自定义文章类型 ？

 

依旧的WordPress 给出了 `register_post_type` 这个函数，它可以让我们自由的创建自定义文章类型。

 

```
register_post_type( $post_type, $args );
```

 

`$post_type`参数就是自定义文章类型的名称；`$args`参数用于自定义文章类型的功能，因为可以自定义的功能很多，所以通常会用下面这种格式来注册：

 

```
function my_custom_post_product() {
  $labels = array(
    'name'               => _x( 'products', 'post type 名称' ),
    'singular_name'      => _x( 'product', 'post type 单个 item 时的名称，因为英文有复数' ),
    'add_new'            => _x( '增加产品', '添加新内容的链接名称' ),
    'add_new_item'       => __( '增加一个产品' ),
    'edit_item'          => __( '编辑产品' ),
    'new_item'           => __( '新产品' ),
    'all_items'          => __( '所有产品' ),
    'view_item'          => __( '查看产品' ),
    'search_items'       => __( '搜索产品' ),
    'not_found'          => __( '没有找到有关产品' ),
    'not_found_in_trash' => __( '回收站里面没有相关产品' ),
    'parent_item_colon'  => '',
    'menu_name'          => 'Products'
  );
  $args = array(
    'labels'        => $labels,
    'description'   => '我们网站的产品信息',
    'public'        => true,
    'menu_position' => 5,
    'supports'      => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ),
    'has_archive'   => true
  );
  register_post_type( 'product', $args );
}
add_action( 'init', 'my_custom_post_product' );
```

 

## 创建自定义分类法

 

添加分类功能需要使用函数`register_taxonomy()`，使用方法和注册自定义文章类型函数类似，区别是多了一个参数用来关联对应的自定义文章类型。

 

```
register_taxonomy( $taxonomy, $object_type, $args );
```

 

`$taxonomy` 字符串型，必需，分类法的名称，用英文；

 

`$object_type`数组或字符串，必需，分类法所对应的文章类型（如前面小编创建的自定义文章类型product）

 

`$args`配置参数，可选，跟`register_post_type`函数的`$args`参数类似

 

```
function my_taxonomies_product() {
	$labels = array(
		'name'              => _x( '产品分类', 'taxonomy 名称' ),
		'singular_name'     => _x( '产品分类', 'taxonomy 单数名称' ),
		'search_items'      => __( '搜索产品分类' ),
		'all_items'         => __( '所有产品分类' ),
		'parent_item'       => __( '该产品分类的上级分类' ),
		'parent_item_colon' => __( '该产品分类的上级分类：' ),
		'edit_item'         => __( '编辑产品分类' ),
		'update_item'       => __( '更新产品分类' ),
		'add_new_item'      => __( '添加新的产品分类' ),
		'new_item_name'     => __( '新产品分类' ),
		'menu_name'         => __( '产品分类' ),
	);
	$args = array(
		'labels' => $labels,
		'public'            => true,
		'show_in_nav_menus' => true,
		'hierarchical' => true, //控制自定义分类法的格式，如果值是false，则将分类（category）转化成标签（tags）
		'show_ui'           => true,
		'query_var'         => true,
        'rewrite'           => true,
        'show_admin_column' => true
	);
	register_taxonomy( 'products', 'product', $args );//products是该自定义分类法的名称；product是对应的自定义文章类型名称
}
add_action( 'init', 'my_taxonomies_product', 0 );
```

 

## 调用自定义分类法文章

 

自定义分类法的分类列表页面模板文件是`taxonomy.php`或`taxonomy-{taxonomy_slug}.php`，`taxonomy.php`是所有自定义分类法默认调用的模板文件，`taxonomy-{taxonomy_slug}.php`则是指定自定义分类法调用的模板文件，比如本教程中创建的自定义分类法`products`，使用`taxonomy-products.php`文件即可指定调用。

 

## 问题

 

在小编实际操作下发现一个问题，自定义文章类型是 product 自定义分类法是 products。

 

当访问产品的分类页归档页 链接显示的是： xxx.com/products；

 

当访问产品详情页时链接显示的却是： xxx.com/product/xx.html;

 

这个问题小编到目前为止依旧没有解决，欢迎大家评论帮助小编解决这个问题。

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
