在WordPress中,我像这样在ajax中设置了一个查询arg
add_action( 'wp_ajax_get_prepare_link', 'prepare_link');
add_action( 'wp_ajax_nopriv_get_prepare_link', 'prepare_link');
function prepare_link() {
//Do some logic and get the models name
$url = add_query_arg( array(
'models' => aaa-and-bbb-and-ccc,
), 'http://example.com/cars/compare/' );
echo $url;
wp_die();
}
所以在此之后,我得到了这样的网址
http://example.com/cars/compare/?models=aaa-and-bbb-and-ccc
所以从jQuery中,我正在将页面重定向到这样的响应URL
jQuery('a.compare-vechicles').click(function(e){
jQuery.ajax({
type: "POST",
url: script.ajax_url,
data: {
action : 'get_prepare_link',
},
success: function(data){
window.location = data; //Redirect to the prepared link
}
});
});
现在,我想将其设置为seo友好的url。因此输出网址应显示如下
http://example.com/cars/compare/models/aaa-and-bbb-and-ccc
因此,我做到了这样
add_action('init', 'custom_rewrite_basic' );
function custom_rewrite_basic() {
add_rewrite_rule('^compare/([^/]*)/?',
'index.php?pagename=$matches[1]',
'top');
}
但是它根本不起作用。那么有人可以告诉我如何实现这一目标吗?还有如何访问模型值?任何帮助或建议都是非常有意义的。
谢谢
答案 0 :(得分:0)
只需对您的重写功能进行一些修改:
add_action('init', 'custom_rewrite_basic' );
function custom_rewrite_basic() {
add_rewrite_rule('^compare/([^/]+)/?$',
'index.php?page=compare&models=$matches[1]',
'top');
我们通过添加query_vars过滤器来告诉WordPress我们要使用那些GET参数
add_filter('query_vars', function( $vars ){
$vars[] = 'page';
$vars[] = 'models';
return $vars;
});
然后使用GET参数“用户”获取值:
get_query_var( 'models' )