自定义帖子类型、固定链接、分类和博客帖子

时间:2015-03-27 作者:T G

我正在为一家自行车店创建一个自定义主题,并认为拥有一个自定义的自行车帖子类型会更容易让店员管理他们希望出现在网站上的自行车,而不是有大量的子页面。

首先,这里是我的bikes自定义post-type-in函数代码。php

/*
* Register `bikes` post type
*/
function bikes_post_type() {

   // Labels
    $labels = array(
        \'name\' => _x("Bikes", "post type general name"),
        \'singular_name\' => _x("Bike", "post type singular name"),
        \'menu_name\' => \'Bikes\',
        \'add_new\' => _x("Add New", "bike item"),
        \'add_new_item\' => __("Add New Bike"),
        \'edit_item\' => __("Edit Bike"),
        \'new_item\' => __("New Bike"),
        \'view_item\' => __("View Bike"),
        \'search_items\' => __("Search Bikes"),
        \'not_found\' =>  __("No Bikes Found"),
        \'not_found_in_trash\' => __("No Bikes Found in Trash"),
        \'parent_item_colon\' => \'\'
    );

    // Register post type
    register_post_type(\'bikes\' , array(
        \'labels\' => $labels,
        \'public\' => true,
        \'has_archive\' => false,
        \'rewrite\' => true,
        \'menu_icon\' => get_stylesheet_directory_uri() . \'/images/icon-bikes.png\',
        \'supports\' => array(\'title\', \'editor\', \'thumbnail\'),
        //\'taxonomies\' => array( \'category\', \'post_tag\' ),
        //\'rewrite\' => array(\'slug\' => \'bikes\', \'with_front\' => false,)
    ) );
}
add_action( \'init\', \'bikes_post_type\' );


/*
 * Register `bikes` taxonomy
*/
function bikes_taxonomy() {

    // Labels
    $singular = \'Bikes Category\';
    $plural = \'Bikes Categories\';
    $labels = array(
        \'name\' => _x( $plural, "taxonomy general name"),
        \'singular_name\' => _x( $singular, "taxonomy singular name"),
        \'search_items\' =>  __("Search $singular"),
        \'all_items\' => __("All $singular"),
        \'parent_item\' => __("Parent $singular"),
        \'parent_item_colon\' => __("Parent $singular:"),
        \'edit_item\' => __("Edit $singular"),
        \'update_item\' => __("Update $singular"),
        \'add_new_item\' => __("Add New $singular"),
        \'new_item_name\' => __("New $singular Name"),
    );

    // Register and attach to \'bikes\' post type
    register_taxonomy( \'bikes_category\', \'bikes\', array(
        \'public\' => true,
        \'show_ui\' => true,
        \'show_in_nav_menus\' => true,
        \'hierarchical\' => true,
        \'query_var\' => true,
        \'labels\' => $labels,
        //\'rewrite\' => array(\'slug\' => \'bikes\', \'with_front\' => false),
    ) );
}
add_action( \'init\', \'bikes_taxonomy\');
register\\u post\\u type()和register\\u taxonomy()函数末尾被注释掉的行给我带来了一个问题。

我设置的permalink结构是/blog/%year%/%monthnum%/%postname%/因为这是我希望博客帖子的结构方式。

页面层次结构的设置如下:域。com/自行车/

领域com/自行车/山地自行车/

领域com/自行车/公路自行车/

/bikes/page将是一个登录页,其中包含一些关于自行车的一般文本,以及一个或两个关于山地自行车和公路自行车的句子,并带有指向子登录页/bikes/mountain bikes/和/bikes/road bikes/的链接。

当我创建一辆新自行车时,permalink是/blog/bikes/giant-anthem-x-29er/。我希望permalink是/bikes/giant-anthem-x-29er/或/bikes/mountain/giant-anthem-x-29er/。我通过将permalink设置更改为/%year%/%monthnum%/%postname%/成功地使/bikes/giant-anthem-x-29er/工作,但这给了我一个404错误,给了我一个没有“blog”的博客帖子的permalink,这不是我希望发生的。

我在这个网站上搜索过,但似乎找不到任何可以让我拥有这样一个架构的东西:

/自行车/-标准页面模板

/自行车/山地自行车/标准页面模板

/自行车/公路自行车/标准页面模板

/自行车/山地自行车/标准页面模板

/博客/-默认模板

/博客/%年%/%月%/%帖子名%/-单个帖子模板

/bikes/giant-anthem-x-29er/-自定义自行车模板(带有自定义post类型的slug示例)

/bikes/mountain/giant-anthem-x-29er/-定制自行车模板(permalink中有分类法)

我们将非常感谢为实现这一目标提供的任何帮助。

1 个回复
SO网友:TheDeadMedic

我会按照@cfx的建议做:

register_taxonomy( // Call before register_post_type() to give rewrite rule priority.
    \'bike_category\', // Should be singular, not bikes_category
    \'bike\',
    array(
        \'rewrite\' => array(
            \'with_front\' => false, // This will strip the "blog" prefix 
            \'slug\' => \'bikes\',
        ),

        // Other args
    )   
);

register_post_type(
    \'bike\', // Post type should be singular
    array(
        \'has_archive\' => \'bikes\',
        \'rewrite\' => array(
            \'with_front\' => false, // This will strip the "blog" prefix 
            \'slug\' => \'bike\',
        ),

        // Other args
    )
);
这将为您提供:

  • /bikes/ 全球自行车档案(archive-bike.php)
  • /bikes/category 对于自行车类别存档(taxonomy-bike_category.php)
  • /bike/bike-name 对于一辆自行车(single-bike.php)

结束

相关推荐

Custom permalinks structure

我希望有这样的结构:www.mysite.com/2013 (必须显示2013年的所有职位)www.mysite.com/my-category/2013 (必须显示2013年和“我的类别”类别的所有帖子)www.mysite.com/my-category/my-tag/ (必须显示所有类别为“我的类别”和标记为“我的标记”的帖子)www.mysite.com/my-category/ (必须显示“我的类别”类别的所有帖子)www.mysite.com/my-