0

我試圖設置一個Wordpress 3網站,我通過插件創建了一個稱爲「產品」的自定義帖子類型。隨着這種自定義帖子類型,我創建了一個自定義分類標準,以便產品可以放入一個類別中,而不會干擾博客類別。這一切都通過管理系統運作良好。到現在爲止還挺好。WordPress的自定義帖子類型,自定義分類法,網址和主題

問題出現在我想訪問產品和類別時。理想情況下,我有以下URL結構:

/products - 顯示包含所有類別的頁面。

/products/category - 顯示分配給定'category'的所有產品。

/products/product - 顯示單個產品。

過去幾天我一直在通過各種渠道閱讀,我所尋找的信息似乎非常分散,這讓我對這個問題非常困惑,並且不知道我想要的是否真的可行在WordPress的上下文中。

我很困惑的下一件事是上面的例子中說明的URL如何與主題引擎配合使用。我不完全理解我應該創建哪些模板,或者我應該使用哪些鉤子來完成這項工作。

所以,基本的問題是;我如何使自定義帖子類型和自定義分類法映射到正確的主題模板?

回答

1

我知道這是一個老問題,但是這可能幫助別人......

要做到你以後,你需要使用register_post_typeregister_taxonomy WordPress的功能。

你需要類似這樣的東西在你的functions.php文件

// Register Custom Post Type 
function products() { 
    $labels = array(
     'name'    => 'Products', 
     'singular_name'  => 'Product', 
     'menu_name'   => 'Product', 
     'parent_item_colon' => 'Parent Product:', 
     'all_items'   => 'All Products', 
     'view_item'   => 'View Product', 
     'add_new_item'  => 'Add New Product', 
     'add_new'    => 'New Product', 
     'edit_item'   => 'Edit Product', 
     'update_item'   => 'Update Product', 
     'search_items'  => 'Search products', 
     'not_found'   => 'No products found', 
     'not_found_in_trash' => 'No products found in Trash' 
    ); 
    $args = array(
     'label'    => 'product', 
     'description'   => 'Product information pages', 
     'labels'    => $labels, 
     'supports'   => array('title', 'editor', 'excerpt',), 
     'taxonomies'   => array('category'), 
     'hierarchical'  => false, 
     'public'    => true, 
     'show_ui'    => true, 
     'show_in_menu'  => true, 
     'show_in_nav_menus' => true, 
     'show_in_admin_bar' => true, 
     'menu_position'  => 5, 
     'menu_icon'   => '', 
     'can_export'   => true, 
     'has_archive'   => true, 
     'exclude_from_search' => false, 
     'publicly_queryable' => true, 
     'capability_type'  => 'post' 
    ); 
    register_post_type('product', $args); 
} 
// Hook into the 'init' action 
add_action('init', 'products', 0); 

// Register Custom Taxonomy 
function product-category() { 
    $labels = array(
     'name'      => 'Product Category', 
     'singular_name'    => 'Product Categories', 
     'menu_name'     => 'Product Category', 
     'all_items'     => 'All Product Categories', 
     'parent_item'    => 'Parent Product Category', 
     'parent_item_colon'   => 'Parent Product Category:', 
     'new_item_name'    => 'New Product Category Name', 
     'add_new_item'    => 'Add New Product Category', 
     'edit_item'     => 'Edit Product Category', 
     'update_item'    => 'Update Product Category', 
     'separate_items_with_commas' => 'Separate product categories with commas', 
     'search_items'    => 'Search product categories', 
     'add_or_remove_items'  => 'Add or remove product categories', 
     'choose_from_most_used'  => 'Choose from the most used product categories', 
    ); 
    $rewrite = array(
     'slug'      => 'product-category', 
     'with_front'     => true, 
     'hierarchical'    => true, 
    ); 
    $args = array(
     'labels'      => $labels, 
     'hierarchical'    => false, 
     'public'      => true, 
     'show_ui'     => true, 
     'show_admin_column'   => true, 
     'show_in_nav_menus'   => true, 
     'show_tagcloud'    => true, 
     'query_var'     => 'product-category', 
     'rewrite'     => $rewrite, 
    ); 
    register_taxonomy('product-category', 'product', $args); 

} 
// Hook into the 'init' action 
add_action('init', 'product-category', 0); 

您可以使用自定義生成後像http://generatewp.com/post-type/做出過所有的選擇工作時,你的生活更輕鬆。

一旦您添加此代碼或對URL結構進行任何修改,註冊自定義發佈類型和分類以刷新DNS規則就很重要。通過訪問WordPress的管理設置 - >永久鏈接頁面來實現這一點,它會自動刷新DNS規則。

編輯在你的主題文件夾來控制顯示模板中的以下文件:

  • 歸檔product.php
  • 分類 - 產品 - category.php
  • 單product.php
相關問題