WordPress自定义分类页面

时间:2012-09-01 作者:Crinsane

我有一个以前被问过的问题,但没有一个答案能解决我的问题。这是我以前遇到过的事情,但从未设法解决。

我有一个干净的Wordpress安装,在functions.php 文件我已创建自定义帖子类型

register_nav_menu(\'main\', \'Main navigation menu\');

function add_custom_post_type() {
    $labels = array(
        \'name\' => _x(\'Books\', \'post type general name\'),
        \'singular_name\' => _x(\'Book\', \'post type singular name\'),
        \'add_new\' => _x(\'Add New\', \'book\'),
        \'add_new_item\' => __(\'Add New Book\'),
        \'edit_item\' => __(\'Edit Book\'),
        \'new_item\' => __(\'New Book\'),
        \'all_items\' => __(\'All Books\'),
        \'view_item\' => __(\'View Book\'),
        \'search_items\' => __(\'Search Books\'),
        \'not_found\' =>  __(\'No books found\'),
        \'not_found_in_trash\' => __(\'No books found in Trash\'), 
        \'parent_item_colon\' => \'\',
        \'menu_name\' => __(\'Books\')
    );

    $args = array(
        \'labels\' => $labels,
        \'public\' => true,
        \'publicly_queryable\' => true,
        \'show_ui\' => true, 
        \'show_in_menu\' => true, 
        \'query_var\' => true,
        \'rewrite\' => true,
        \'capability_type\' => \'post\',
        \'has_archive\' => true, 
        \'hierarchical\' => false,
        \'menu_position\' => null,
        \'supports\' => array( \'title\', \'editor\', \'author\', \'thumbnail\', \'excerpt\', \'comments\' )
    ); 

    register_post_type(\'book\', $args);
}
我做了一个archive-book.phpsingle-book.php 模板文件,一切正常。我可以在去的时候看这些书”http://localhost/wordpress/book“现在我想创建一个自定义分类法,所以我在functions.php 以及:

add_action(\'init\', \'add_custom_post_type\');

function add_custom_taxonomy() {
    register_taxonomy(
        \'rating\',
        \'book\',
        array(
            \'label\' => \'Rating\',
            \'hierarchical\' => true,
            \'show_ui\' => true,
            \'query_var\' => \'book\',
            \'has_archive\' => true,
            \'rewrite\' => array(
                \'slug\' => \'book/rating\'
            )
        )
    );
}
分类法显示在管理页面中,我可以添加新术语,并将它们添加到书籍中。但现在问题来了。我想对所有书籍进行概述,比如说,评分为“不错”,我会去“http://localhost/wordpress/book/rating/nice“。我创建了以下模板文件:taxonomy-rating-nice.php、taxonomy-rating.php和taxonomy.php。

但不知怎的,wordpress只是显示了索引。php文件,不列出任何书籍。我尝试用以下内容刷新重写规则:

add_action(\'init\', \'custom_taxonomy_flush_rewrite\');
function custom_taxonomy_flush_rewrite() {
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}
以及:

flush_rewrite_rules(false);
但似乎没有任何帮助。

有谁能帮我吗?如果你需要更多信息,请告诉我,因为我真的很想解决这个问题!

1 个回复
SO网友:Milo

你有一些问题-

您正在设置query_var\'book\' 在自定义分类法中,它与自定义帖子类型的查询变量冲突。将其更改为true 它将默认为分类法的名称,\'rating\'.

没有has_archive 的参数register_taxonomy, 虽然这可能不会产生任何影响。仔细想想,这是有道理的,因为分类术语总是一种存档形式。

您可能遇到的最后一个问题是优先级问题-如果对给定URL应用多个重写规则,将选择优先级最高的规则。如果您先注册帖子类型,然后再注册分类法,请使用您的示例http://localhost/wordpress/book/rating/nice, WordPress会认为您想加载一个名为nice 属于一本名为rating. 如果先注册分类法,然后注册文章类型,那么在这种情况下,分类法将优先,一切都应按预期进行。

结束

相关推荐