固定链接结构中的层次分类

时间:2015-04-15 作者:user43251

我有一个名为Area的自定义分类法,它的层次结构如下:

UK
 - London
   -- Chelsea
目前,我的permalink设置为这样重写:

\'rewrite\' => array(\'slug\' => \'%area%/%something%\'
结果是:

/Chelsea/Something
我想要的是它像这样出现:

/UK/London/Chelsea/Something
我该怎么办?

1 个回复
SO网友:Phil Johnston

在slug的“有意义”url变量(城市、地区等)之前添加所需的值,如下所示:

"uk/([^/]*)/([^/]*)/?$" => \'index.php?city=$matches[1]&area=$matches[2]&something=$matches[3]\',
这样,如果“uk”在开头,它将只“捕获”那些URL变量(城市、地区)。

更完整的示例可能如下所示

//Set up the additional values in the "rewrite rules" array
function my_rewrites($rules){

        $new_rules = array(

            //uk/London/Chelsea/
            "uk/([^/]*)/([^/]*)/?$" => \'index.php?city=$matches[1]&area=$matches[2]\',

        );

        $new_rules = array_merge($new_rules, $rules);

        return $new_rules;
}
add_filter(\'rewrite_rules_array\', \'my_rewrites\');


/**
 * Add Rewrite Tags 
 */
function my_rewrite_tags(){

    //EG "London"
    add_rewrite_tag(\'%city%\',\'([^/]*)\');

    //EG "Chelsea"
    add_rewrite_tag(\'%area%\',\'([^/]*)\');

}
add_action(\'init\', \'my_rewrite_tags\');

/**
 * Use the information provided in the URL like this:
 */
function my_custom_function_which_does_stuff(){
    global $wp_query;

    if ( isset( $wp_query->query_vars[\'city\'] ) ){

        //EG London
        $city = $wp_query->query_vars[\'city\'];

        //EG Chelsea
        $area = $wp_query->query_vars[\'area\'];

    }

}
add_action( \'init\', \'my_custom_function_which_does_stuff\' );

结束

相关推荐

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-