要說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;
這個問題小編到目前為止依舊沒有解決,歡迎大家評論幫助小編解決這個問題。