在自定义post_type
中,我使用永久链接。。。我将在ask循环中通过$_GET
变量进行自定义查询。
例如
www.(domain).com/ask?dates=today
www.(domain).com/ask?rating=5
简单查询是:
<?php
$args = array(
'post_type' => 'ask',
...,
...,
'meta_key' => 'rating',
'meta_value' => $_GET['rating']
);
$the_query = new WP_Query( $args );
1
我如何在404错误中拯救www.(domain).com/ask/rating/5
!并假装www.(domain).com/ask/
2
我是如何在这个链接中得到这个子变量进行自定义查询的?
要匹配两个参数,请尝试以下操作:
<IfModule mod_rewrite.c>
RewriteRule ^ask/([a-z]+)?/(.+)?$ ask/?$1=$2 [NC]
</IfModule>
应将/ask/rating/5
重写为/ask/?rating=5
如果你需要匹配更多,你可以将其扩展到包括四个:
<IfModule mod_rewrite.c>
RewriteRule ^ask/([a-z]+)?/([a-zA-Z0-9]+)?$ ask/?$1=$2 [NC] #matches two variables
RewriteRule ^ask/([a-z]+)?/([a-zA-Z0-9]+)?/([a-z]+)?/([a-zA-Z0-9]+)?$ ask/?$1=$2&$2=$3 [NC] #matches four variables
</IfModule>
这可以根据需要扩展
要将它们放入您的查询中,您正在做正确的事情,使用$_GET["],也许可以尝试
<?php
$args = array('post_type' => 'ask');
foreach (['rating', 'dates'] as $param){
$args[$param] = $_GET[$param];
}
这将产生
$args = array(
'post_type' => 'ask',
'rating' => 5,
'dates' => 'today'
);
这是我能做的最好的事情,因为你不能有两个匹配的密钥