将URL重写规则添加到WordPress

时间:2015-11-16 作者:user83702

我的链接http://localhost/abm/?ct_city=la-jolla&search-listings=true

我想要这个http://localhost/abm/USA/la-jolla

你能帮忙吗。。

htpaccss文件

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /abm/
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /abm/index.php? [L]
</IfModule>
# END WordPress

1 个回复
SO网友:Bruno Cantuaria

首先你需要register 您期望的变量。类似于:

function my_rewrite() {

    add_rewrite_tag(\'%ct_city%\', \'([^&]+)\');
    add_rewrite_tag(\'%country%\', \'([^&]+)\');

}
add_action(\'init\', \'my_rewrite\', 10, 0);
然后您需要创建规则,该规则将重定向到abm 页请注意,您需要发现abm\'s ID,因为您需要在规则中传递它。

function my_rewrite_rule() {

    add_rewrite_rule(
        \'^abm/([^/]*)/([^/]*)/?\', //each ([^&]+) for each registered variable in their respective order
        \'index.php?page_id=10&country=$matches[1]&ct_city=$matches[2]\', //assign the variable to their respective value and the page_id
        \'top\'
    );

}
add_action(\'init\', \'my_rewrite_rule\', 10, 0);
最后,只需编辑代码即可使用$wp_query->query_vars[\'ct_city\']; 而不是$_GET[\'ct_city\'];

不要忘记在更改后保存永久链接结构,以便应用规则。还要注意,此规则仅适用于精确匹配:/abm/country/city. 所以如果有人访问/abm/country 它不会被捕获,所以您可能也需要为它们创建特殊规则。