要說WordPress程序?qū)τ诔鯇W(xué)者來說,個(gè)人覺得最難的就是 自定義類型 和 自定義分類法 這兩個(gè)東西,基本掌握了類型和分類法,簡(jiǎn)單的WordPress 仿站建站就不成問題了。
最近小編就被WordPress這分類法給整的稀里糊涂,一般企業(yè)站那必須要 產(chǎn)品分類的嘛,但WordPress只有一個(gè)文章分類。文章和產(chǎn)品的頁面肯定是不太一樣的,所以要使用WordPress程序制作企業(yè)站就必須創(chuàng)建一個(gè)自定義文章類型和自定義分類法。
什么是 自定義文章類型 ?
WordPress給出了一個(gè)模板就是后臺(tái)的文章類型,在代碼中程序的形式是 post type。那么我們要?jiǎng)?chuàng)建一個(gè)區(qū)別于 post type的文章類型,就是自定義文章類型了。
創(chuàng)建 自定義文章類型 ?
依舊的WordPress 給出了 register_post_type
這個(gè)函數(shù),它可以讓我們自由的創(chuàng)建自定義文章類型。
register_post_type( $post_type, $args );
$post_type
參數(shù)就是自定義文章類型的名稱;$args
參數(shù)用于自定義文章類型的功能,因?yàn)榭梢宰远x的功能很多,所以通常會(huì)用下面這種格式來注冊(cè):
function my_custom_post_product() {
$labels = array(
'name' => _x( 'products', 'post type 名稱' ),
'singular_name' => _x( 'product', 'post type 單個(gè) item 時(shí)的名稱,因?yàn)橛⑽挠袕?fù)數(shù)' ),
'add_new' => _x( '增加產(chǎn)品', '添加新內(nèi)容的鏈接名稱' ),
'add_new_item' => __( '增加一個(gè)產(chǎn)品' ),
'edit_item' => __( '編輯產(chǎn)品' ),
'new_item' => __( '新產(chǎn)品' ),
'all_items' => __( '所有產(chǎn)品' ),
'view_item' => __( '查看產(chǎn)品' ),
'search_items' => __( '搜索產(chǎn)品' ),
'not_found' => __( '沒有找到有關(guān)產(chǎn)品' ),
'not_found_in_trash' => __( '回收站里面沒有相關(guān)產(chǎn)品' ),
'parent_item_colon' => '',
'menu_name' => 'Products'
);
$args = array(
'labels' => $labels,
'description' => '我們網(wǎng)站的產(chǎn)品信息',
'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' );
創(chuàng)建自定義分類法
添加分類功能需要使用函數(shù)register_taxonomy()
,使用方法和注冊(cè)自定義文章類型函數(shù)類似,區(qū)別是多了一個(gè)參數(shù)用來關(guān)聯(lián)對(duì)應(yīng)的自定義文章類型。
register_taxonomy( $taxonomy, $object_type, $args );
$taxonomy
?字符串型,必需,分類法的名稱,用英文;
$object_type
數(shù)組或字符串,必需,分類法所對(duì)應(yīng)的文章類型(如前面小編創(chuàng)建的自定義文章類型product)
$args
配置參數(shù),可選,跟register_post_type
函數(shù)的$args
參數(shù)類似
function my_taxonomies_product() {
$labels = array(
'name' => _x( '產(chǎn)品分類', 'taxonomy 名稱' ),
'singular_name' => _x( '產(chǎn)品分類', 'taxonomy 單數(shù)名稱' ),
'search_items' => __( '搜索產(chǎn)品分類' ),
'all_items' => __( '所有產(chǎn)品分類' ),
'parent_item' => __( '該產(chǎn)品分類的上級(jí)分類' ),
'parent_item_colon' => __( '該產(chǎn)品分類的上級(jí)分類:' ),
'edit_item' => __( '編輯產(chǎn)品分類' ),
'update_item' => __( '更新產(chǎn)品分類' ),
'add_new_item' => __( '添加新的產(chǎn)品分類' ),
'new_item_name' => __( '新產(chǎn)品分類' ),
'menu_name' => __( '產(chǎn)品分類' ),
);
$args = array(
'labels' => $labels,
'public' => true,
'show_in_nav_menus' => true,
'hierarchical' => true, //控制自定義分類法的格式,如果值是false,則將分類(category)轉(zhuǎn)化成標(biāo)簽(tags)
'show_ui' => true,
'query_var' => true,
'rewrite' => true,
'show_admin_column' => true
);
register_taxonomy( 'products', 'product', $args );//products是該自定義分類法的名稱;product是對(duì)應(yīng)的自定義文章類型名稱
}
add_action( 'init', 'my_taxonomies_product', 0 );
調(diào)用自定義分類法文章
自定義分類法的分類列表頁面模板文件是taxonomy.php
或taxonomy-{taxonomy_slug}.php
,taxonomy.php
是所有自定義分類法默認(rèn)調(diào)用的模板文件,taxonomy-{taxonomy_slug}.php
則是指定自定義分類法調(diào)用的模板文件,比如本教程中創(chuàng)建的自定義分類法products
,使用taxonomy-products.php
文件即可指定調(diào)用。
問題
在小編實(shí)際操作下發(fā)現(xiàn)一個(gè)問題,自定義文章類型是 product? 自定義分類法是 products。
當(dāng)訪問產(chǎn)品的分類頁歸檔頁 鏈接顯示的是: xxx.com/products;
當(dāng)訪問產(chǎn)品詳情頁時(shí)鏈接顯示的卻是: xxx.com/product/xx.html;
這個(gè)問題小編到目前為止依舊沒有解決,歡迎大家評(píng)論幫助小編解決這個(gè)問題。