我如何做漂亮的URL链接与wordpress


How can I make pretty URL link with wordpress?

我有一些关于制作漂亮的URL链接的问题。

在我的网站主页上,我有一个文本下拉列表(城市和州),这将是我的参数。我通过GET方法发送值到WordPress模板页面,该系统将根据传递的值显示内容。显示内容部分工作成功,但是,我对链接有一些问题。

现在,页面的链接显示

www.mydomain.com/list/? =纽约或状态= NY&城市芝加哥www.mydomain.com/list/?状态= IL&城市=

我希望链接是如下漂亮的格式,…www.mydomain列表/纽约/纽约芝加哥www.mydomain/清单/IL/

我研究了很多网站,找到了使用htaccess的建议。我使用下面的代码,但仍然没有得到链接更改为漂亮的格式。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index'.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([0-9]+)/?$ ?district=$1
RewriteRule ([0-9]+)/([^/]+)/?$ ?district=$1&templename=$2 [L]
</IfModule> 
# END WordPress

你正在寻找的应该使用wordpress' add_rewrite_rule函数完成。你可以在这里阅读更多信息

这里有一个例子,可能是你正在寻找的:

<?php 
add_rewrite_rule('list/([0-9|a-z|A-Z]*)?/?([0-9|a-z|A-Z]*)?/?([0-9|a-z|A-Z]*)?/?([0-9|a-z|A-Z]*)?','index.php?$matches[1]=$matches[2]&$matches[3]=$matches[4]','top');
?>

详细解释:

  1. 首先,我们声明一个正则表达式来匹配"list"段符之后的任何get参数。(例如:www.mydomain.com/list/)
  2. 其次,我们声明wordpress应该如何解释它。对于wordpress,该文件总是index.php。参数将像www.mydomain.com/list/state/IL/city/Chicago一样排列在代码中将转换为www.mydomain.com/list/?state=IL&city=Chicago以便您使用$_GET参数
  3. top告诉Wordpress这些规则比Wordpress自己的规则有优先权

您可能需要调用flush_rewrite_rules( false )$wp_rewrite->flush_rules()来刷新规则并使您的更改生效