如何在Wordpress中将PHP字符串转换为slug

时间:2015-11-13 20:09:03

标签: php wordpress slug

我在wordpress中有一个页面,我正在使用名为Bad-Debt-Recovery-in/的slug。我在该页面上使用自定义php查询,其中包含URL中的字符串

Bad-Debt-Recovery-in/?zipcode=55555&location=Chambers%20County+AL

如何将此网址变成这样的slu

Bad-Debt-Recovery-in/55555/Chambers-County/AL/

作为重写?任何帮助将不胜感激!

更新: 这段代码实际上就是我正在使用的。我也使它变得更简单,并创建了一个名为" state"的第三个变量。一个重写用于City,一个用于County页面:

# 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=$1&city=$2&state=$3 [QSA,L,NC]
RewriteRule ^Bad-Debt-Recovery-And-Collection-Agency-Services-In\/([^\/]+)\/([^\/]+)\/([^\/]+)\/? Bad-Debt-Recovery-And-Collection-Agency-Services-In/?countyid=$1&county=$2&state=$3 [QSA,L,NC]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php

</IfModule>

# END WordPress

2 个答案:

答案 0 :(得分:0)

您可以使用WP function sanitize_title

将它与php循环结合,即

$url = $_SERVER['REQUEST_URI'];
foreach($_GET as $g){
  $url .= '/'.$g;
}
$url = sanitize_title($url);

答案 1 :(得分:0)

您要求并寻求完成的内容称为:将请求路径转换为查询字符串。

使用.htaccess RewriteRule指令修改传入请求

RewriteRule ^Bad-Debt-Recovery-in\/([^\/]+)\/([^\/]+)\/([^\/]+)\/? Bad-Debt-Recovery-in/?a=$1&b=$2&c=$3 [QSA,L,NC]

每个([^\/]+)都会将路径元素捕获到变量$1,$2,$3...

最后的?只表示最后一个/是可选的,否则最后一个匹配可能会失败

\只是逃避&#39; /&#39;字面解释

根据需要添加尽可能多的([^\/]+)并在查询中捕获它们

zipcode=$1&location=$2+$3

末尾[QSA,L,NC]的修饰符称为标志

  • 如果存在
  • ,QSA会将查询字符串附加到重写的末尾
  • L只是说这是最后一次重写
  • NC表示不区分大小写

这是你的最终解决方案:

RewriteRule ^Bad-Debt-Recovery-in\/([^\/]+)\/([^\/]+)\/([^\/]+)\/? Bad-Debt-Recovery-in/?zipcode=$1&location=$2+$3 [QSA,L,NC]