我正在尝试重写WP URL,这里是URL:
http://example.com/?job_listing_region=california&job_listing_category=wordpress
我想将其更改为http://example.com/california/wordpress
我试过了:
add_rewrite_rule('([^/]*)/([^/]*)/?','job_listing_region=$matches[1]&job_listing_category=$matches[2]','top');
但它不起作用。对不起,我不擅长正则表达式它可能是一个小的,但我无法找到解决方案。提前致谢
答案 0 :(得分:0)
<强>正则表达式强>
\??\w+=([^&]+)&?
<强>替换强>
$1/
http://example.com/?job_listing_region=california&job_listing_category=alcohol-abuse-programs
http://example.com/california/alcohol-abuse-programs/
<强>正则表达式强>
\??
确切地匹配?
字符的零和一个\w+=
匹配任何单词字符一次或多次,后跟=
字符(\w
可以替换为[a-zA-Z0-9_]
如果首选/不起作用你的正则表达方式)([^&]+)
一次或多次捕获除&
字符以外的任何字符的捕获组1 &?
字面上零和一个&
字符匹配<强>替换强>
$1/
匹配与第一个捕获组最近匹配的文本相同的文本,然后是/
字面意思答案 1 :(得分:0)
使用http://example.com/ {job_listing_region} / {job_listing_category} /太宽泛 - 会影响您网站上的每个网址,例如/ wp-admin。
我建议使用http://example.com/jobs/ {job_listing_region} / {job_listing_category} /作为您的网址结构,在这种情况下,重写规则将设置如下:
add_rewrite_rule('^jobs/([^/]*)/([^/]*)/?','index.php?page_id=1234&job_listing_region=$matches[1]&job_listing_region=$matches[2]','top');
page_id
应设置为您要将其发送到的页面/帖子的页面ID。
请务必注意,在您查看/保存设置后,重写可能无法使用 - &gt;永久链接页面位于后端。
答案 2 :(得分:0)
感谢上面的回答,他们帮助我最终得到了解决方案。
因此,在将url字符串传递给wordpress时,我们需要在functions.php中注册变量,然后使用php获取,我们需要使用wordpress var查询来获取URL。
正如上面@athms所建议的那样,我改变了url结构。
现在&#34; wordpress&#34;是一个wordpress页面,其中捕获了查询变量。
So my URL is http://example.com/wordpress/?job_listing_region=california
在functions.php中我注册了这些变量:
function custom_query_vars_filter($vars) {
$vars[] = 'job_listing_region';
return $vars;
}
add_filter( 'query_vars', 'custom_query_vars_filter' );
function custom_rewrite_tag1() {
add_rewrite_tag('%job_listing_region%', '([^&]+)');
}
add_action('init', 'custom_rewrite_tag1', 10, 0);
在functions.php中重写规则:
function custom_rewrite_rule3() {
add_rewrite_rule('^wordpress/([^/]*)/?','index.php?page_id=35349&state=$matches[1]','top');
}
add_action('init', 'custom_rewrite_rule3', 10, 0);
此处页面ID是我创建的页面的ID,即&#34; wordpress&#34;
在&#34; wordpress&#34;的页面模板中我使用以下方式捕获了该区域:
$region = get_query_var('job_listing_region');
现在您可以将此变量传递给您的查询。
所以现在你可以开始使用这个漂亮的URL:
http://example.com/wordpress/california
URL california的结尾作为查询字符串,可以在我们的模板中使用。