0

我正在尝试建立一个 Wordpress 3 网站,在该网站中,我通过一个插件创建了一个名为“产品”的自定义帖子类型。除了这种自定义帖子类型,我还创建了一个自定义分类法,因此可以将产品放置在一个类别中而不会干扰博客类别。通过管理系统,这一切都很好。到目前为止,一切都很好。

当我想访问产品和类别时,就会出现问题。理想情况下,我有以下 URL 结构:

/products- 显示包含所有类别的页面。

/products/category- 显示分配给给定“类别”的所有产品。

/products/product- 显示单个产品。

在过去的几天里,我一直在阅读各种来源,而我正在寻找的信息似乎非常零散,这让我对这个问题感到非常困惑,并且不知道我想要的东西是否真的可能在WordPress。

接下来我很困惑的是,上面示例中的 URL 如何与主题引擎相关联。我不完全理解我应该创建哪些模板或者我应该绑定哪些钩子来完成这项工作。

所以,基本问题是;如何使我的自定义帖子类型和自定义分类映射到正确的主题模板?

4

1 回答 1

1

我知道这是一个老问题,但这可能对其他人有帮助……</p>

要完成您的目标,您需要使用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
  • 单品.php
于 2013-08-05T23:22:25.943 回答