在url的开头添加查询变量(在base url之后)

时间:2017-10-23 17:08:53

标签: wordpress

我试图在我的网址开头添加一个查询变量。比如在语言管理模块通常做的url中添加语言代码。

例如我想要这个网址:

  

http://example.com/cities/newyork/?p=1

显示这一个:

  

http://example.com/?p=1

并将城市视为变量和纽约,因为它在流动的功能中具有价值:

get_query_var('city_name');

我实际上希望wordpress忽略城市/纽约,并按照以前的方式工作。

我在我的function.php中尝试了这段代码,但它的工作不正确:

add_action('init', function() {
    add_rewrite_rule( '^cities/([a-z]+)/?',
        'index.php?city_name=$matches[1]',
        'top' );
}, 10, 0);
add_filter( 'query_vars', 'wpse26388_query_vars' );
function wpse26388_query_vars( $query_vars ){
    $query_vars[] = 'city_name';
    return $query_vars;
}

1 个答案:

答案 0 :(得分:0)

重写规则的技巧是当它们被修改时(如果你添加,修改或删除它们),你需要告诉WordPress刷新并重建列表。为此,您可以访问管理区域中的“永久链接选项”页面,也可以使用函数flush_rewrite_rules()

// Add the rewrite rule and flush on plugin activation
add_action('init', function() {
add_rewrite_rule( '^cities/([a-z]+)/?', 'index.php?city_name=$matches[1]', 'top' );
flush_rewrite_rules();
    }, 10, 0);