将分类法重定向到自定义模板以列出分类法中的术语

时间:2013-03-05 作者:helgatheviking

我正在尝试修改一些代码calling a custom template via rewrite rule.

我有一个称为“状态”的自定义分类法。我想为分类法创建一个归档,列出该分类法中的所有术语。

http://www.site.com/state

将加载我的自定义模板,在那里我可以查询术语并循环浏览它们。

阿拉巴马州阿拉巴马州阿拉巴马州阿拉斯卡利桑纳市阿尔金萨斯等

我知道如果我也有一个名为“state”的页面,可能会发生一些冲突,但这是我可以冒的风险。

教程中的代码对于

http://www.site.com/state/1http://www.site.com/state/2 但如果没有捕获到数字,则返回404。

如果术语列表失控,这个数字将有利于分页。

代码如下:

add_action(\'admin_init\', \'handle_taxonomy_route\');
function handle_taxonomy_route()
{
    add_rewrite_rule(\'^state/([^/]+)/?\', \'index.php?state_var=$matches[1]\', \'top\');
}

add_filter(\'init\', \'declare_vars\');
function declare_vars()
{
    add_rewrite_tag(\'%state_var%\', \'([^&]+)\');
}

add_filter(\'template_include\', \'my_template\', 1, 1);
function my_template($template)
{
    global $wp_query;

    if (isset($wp_query->query_vars[\'state_var\'])) {
        return dirname(__FILE__) . \'/state-list.php\';
    }
    return $template;
}
从我迄今为止的尝试来看,它似乎与

http://www.site.com/state/alabama

阿拉巴马州在州分类学中是一个术语,但它绝对应该只捕捉数字。

去年,一个类似的问题没有得到回答。How do I list terms of a custom taxonomy at i.e. domain.com/brands/

2 个回复
最合适的回答,由SO网友:helgatheviking 整理而成

我需要一个更好的重写规则来正确分页。

function kia_custom_rewrite() {

    // registers the state_var query variable
    add_rewrite_tag(\'%state_var%\',\'([^&]+)\');

    // handles site.com/state and pagination such as site.com/state/page/2
    add_rewrite_rule(
        \'state(/page/([0-9]+)?)?/?$\',
        \'index.php?state_var=all&paged=$matches[2]\',
        \'top\'
    );

}
// refresh/flush permalinks in the dashboard if this is changed in any way
add_action( \'init\', \'kia_custom_rewrite\', 99 );
重写规则在此处添加要检查的query\\u var:

/*
 * Load custom templates
 * 1. Get a custom template for the /state "page"
 * 2. Get a custom template for the /state/some-state term
 */
function kia_template( $template ){
    global $wp_query;


    if ( \'all\' == get_query_var(\'state_var\') ) {
        $template = get_stylesheet_directory() . \'/taxonomy-state-list.php\';
    } 

    return $template;
}
add_filter( \'template_include\', \'kia_template\' );

SO网友:Vivienne

创建404可能是因为正则表达式需要“state/”之后的值。请尝试替换:

function handle_taxonomy_route()
{
    add_rewrite_rule(\'^state/([^/]+)/?\', \'index.php?state_var=$matches[1]\', \'top\');
}
使用:

function handle_taxonomy_route()
{
    add_rewrite_rule(\'^state/([^/]*)/?\', \'index.php?state_var=$matches[1]\', \'top\');
}

结束

相关推荐