使用插件重写QUERY_VAR URL参数

时间:2016-12-21 作者:Ryan Dorn

我有一个query_var 设置搜索结果页,其中query_var 是在WP_Query 循环,如:

~/results/?my_taxoqueryvar=123

我想实现一个重写规则,这样我就可以重写它,从而使其对SEO更加友好,比如:

~/results/my-taxo-slug/ (其中,“my taxo slug”是ID为123的分类对应的slug。

我还希望能够访问我的查询变量(即。$qv_exp_type = get_query_var(\'my_taxoqueryvar\');

到目前为止,这就是我所拥有的,但它似乎不起作用

// Add Query Var
function my_queryvar_params( $query_v ) {
    $query_v[] = "my_taxoqueryvar";
    return $query_v;
};
add_filter(\'query_vars\',  \'my_queryvar_params\');


// Add Endpoint
function my_endpoint(){
    add_rewrite_endpoint( \'my_taxoqueryvar\', EP_PAGES );
}
add_action( \'init\', \'my_endpoint\' );

function  my__rewrite_rule() {
    add_rewrite_rule(
        \'results/([a-z]+)/?$\',
        \'index.php?pagename=results&my_taxoqueryvar=$matches[1]\',
        \'top\'
    );
}
add_action(\'init\',  \'my_rewrite_rule\' );
非常感谢!

1 个回复
SO网友:Tunji

您的重写规则和查询变量筛选器错误。下面是一个基于您的查询变量的示例my_taxoqueryvar

function add_query_vars_filter( $vars ){
    $vars[] = "my_taxoqueryvar";
    return $vars;
}
add_filter( \'query_vars\', \'add_query_vars_filter\' );

add_action(\'init\', \'myplugin_rewrite_rule\' );
function myplugin_rewrite_rule() {
    add_rewrite_rule(
        \'results/([a-z]+)/?$\',
        \'index.php?pagename=results&my_taxoqueryvar=$matches[1]\',
        \'top\'
    );
}

相关推荐

将wp_Query替换为wp_User_Query

我在插件中制作了一些订阅者档案和单曲(个人资料页),其中我还包括了一个“用户单曲”模板,通过template_include. 不过,我正在尝试从插件中删除一些模板,以使其使用主题模板。我用了locate_template( \'single.php\' ) 从活动主题中选择单个模板。我没有使用全局wp_query 在本例中显示我的内容,但页面显示了基于查询默认值的循环(十篇帖子)。我想知道的是,我是否可以完全放弃默认查询,用wp_user_query 我可以将查询到的用户ID输入其中。然后我想筛选the