如何在 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]