如何在 Wordpress 中将 PHP 字符串变成 slug
How do I turn PHP string into slug in Wordpress
我在 wordpress 中有一个页面,我正在使用一个名为 Bad-Debt-Recovery-in/
的 slug。我在该页面上使用自定义 php 查询,其中 URL 中的字符串像这样
Bad-Debt-Recovery-in/?zipcode=55555&location=Chambers%20County+AL
我怎样才能把这个url变成这样的鼻涕虫
Bad-Debt-Recovery-in/55555/Chambers-County/AL/
重写?如有任何帮助,我们将不胜感激!
更新:
这段代码实际上是我正在使用的。我还简化了它并创建了名为 "state" 的第三个变量。一个重写是城市页面,一个是县页面:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^Bad-Debt-Recovery-And-Collection-Agencies-Services-In\/([^\/]+)\/([^\/]+)\/([^\/]+)\/? Bad-Debt-Recovery-And-Collection-Agencies-Services-In/?zipcode=&city=&state= [QSA,L,NC]
RewriteRule ^Bad-Debt-Recovery-And-Collection-Agency-Services-In\/([^\/]+)\/([^\/]+)\/([^\/]+)\/? Bad-Debt-Recovery-And-Collection-Agency-Services-In/?countyid=&county=&state= [QSA,L,NC]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php
</IfModule>
# END WordPress
您可以使用 WP function sanitize_title
将此与 php 循环结合起来,即
$url = $_SERVER['REQUEST_URI'];
foreach($_GET as $g){
$url .= '/'.$g;
}
$url = sanitize_title($url);
您要求并寻求完成的称为:将请求路径转换为查询字符串。
使用 .htaccess RewriteRule 指令修改传入请求
RewriteRule ^Bad-Debt-Recovery-in\/([^\/]+)\/([^\/]+)\/([^\/]+)\/? Bad-Debt-Recovery-in/?a=&b=&c= [QSA,L,NC]
每个([^\/]+)
捕获路径元素到一个变量,,...
末尾的 ?
只是表示最后一个 /
是可选的,否则最后一个匹配可能会失败
\
简单地转义 '/' 进行字面解释
根据需要添加任意数量的 ([^\/]+)
并在查询中捕获它们
zipcode=&location=+
最后[QSA,L,NC]
的修饰符叫做flags
- QSA 将查询字符串附加到重写的末尾(如果存在)
- L 简单地说这是最后一次重写
- NC表示不区分大小写
这是您的最终解决方案:
RewriteRule ^Bad-Debt-Recovery-in\/([^\/]+)\/([^\/]+)\/([^\/]+)\/? Bad-Debt-Recovery-in/?zipcode=&location=+ [QSA,L,NC]
我在 wordpress 中有一个页面,我正在使用一个名为 Bad-Debt-Recovery-in/
的 slug。我在该页面上使用自定义 php 查询,其中 URL 中的字符串像这样
Bad-Debt-Recovery-in/?zipcode=55555&location=Chambers%20County+AL
我怎样才能把这个url变成这样的鼻涕虫
Bad-Debt-Recovery-in/55555/Chambers-County/AL/
重写?如有任何帮助,我们将不胜感激!
更新: 这段代码实际上是我正在使用的。我还简化了它并创建了名为 "state" 的第三个变量。一个重写是城市页面,一个是县页面:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^Bad-Debt-Recovery-And-Collection-Agencies-Services-In\/([^\/]+)\/([^\/]+)\/([^\/]+)\/? Bad-Debt-Recovery-And-Collection-Agencies-Services-In/?zipcode=&city=&state= [QSA,L,NC]
RewriteRule ^Bad-Debt-Recovery-And-Collection-Agency-Services-In\/([^\/]+)\/([^\/]+)\/([^\/]+)\/? Bad-Debt-Recovery-And-Collection-Agency-Services-In/?countyid=&county=&state= [QSA,L,NC]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php
</IfModule>
# END WordPress
您可以使用 WP function sanitize_title
将此与 php 循环结合起来,即
$url = $_SERVER['REQUEST_URI'];
foreach($_GET as $g){
$url .= '/'.$g;
}
$url = sanitize_title($url);
您要求并寻求完成的称为:将请求路径转换为查询字符串。
使用 .htaccess RewriteRule 指令修改传入请求
RewriteRule ^Bad-Debt-Recovery-in\/([^\/]+)\/([^\/]+)\/([^\/]+)\/? Bad-Debt-Recovery-in/?a=&b=&c= [QSA,L,NC]
每个([^\/]+)
捕获路径元素到一个变量,,...
末尾的 ?
只是表示最后一个 /
是可选的,否则最后一个匹配可能会失败
\
简单地转义 '/' 进行字面解释
根据需要添加任意数量的 ([^\/]+)
并在查询中捕获它们
zipcode=&location=+
最后[QSA,L,NC]
的修饰符叫做flags
- QSA 将查询字符串附加到重写的末尾(如果存在)
- L 简单地说这是最后一次重写
- NC表示不区分大小写
这是您的最终解决方案:
RewriteRule ^Bad-Debt-Recovery-in\/([^\/]+)\/([^\/]+)\/([^\/]+)\/? Bad-Debt-Recovery-in/?zipcode=&location=+ [QSA,L,NC]