在WordPress中为查询变量添加多个值

时间:2017-04-11 08:09:14

标签: php wordpress

我在functions.php中使用以下代码将自定义查询变量添加到我的WordPress项目中。

<?php
function add_custom_query_var( $vars ){
  $vars[] = "brand";
  return $vars;
}
add_filter( 'query_vars', 'add_custom_query_var' );
?>

然后在我正在使用的内容页面上:

<?php echo $currentbrand = get_query_var('brand'); ?>

所以现在我可以传递一个像:

这样的网址

http://myexamplesite.com/store/?brand=nike

并获得结果。

如何为品牌传递多个值。所以我想为品牌说,nike,adidas和林地提供3个价值。

我尝试了以下内容,但没有一个有效:

  1. http://myexamplesite.com/store/?brand=nike&brand=adidas&brand=woodland 它只返回最后一个品牌,在这种情况下是林地。

  2. http://myexamplesite.com/store/?brand=nike+adidas+woodland 这将返回所有三个空格。我认为这不是正确的解决方案。因此,可能有一种正确的方法可以为查询变量传递多个值,并在数组中检索它们,这样可以运行循环。

2 个答案:

答案 0 :(得分:1)

您需要以这种方式传递查询参数;

brand1 =耐克&安培; brand2 =阿迪达斯&安培; brand3 =林地

所以,每个品牌的不同关键

在页面上,收到值

$params = $_GET;
$brands = array();
foreach($params as $k=>$v) {
    if(substr($k,0,5)=="brand") {
        $brands[] = $v;
    }
}

<强>替代地

使用第二种方法 http://myexamplesite.com/store/?brand=nike+adidas+woodland

$brands = explode(" ", $_GET['brand']);

替代方法看起来更容易

答案 1 :(得分:1)

通常,您将传递类似?brand[]=unresponsibleCompany1&brand[]=otherBrandThatDoesNotCareMuch&brand[]=bunchOfCriminals的参数。

在您的WordPress PHP代码中,然后get_query_var( 'brand' )将返回一个数组。

其他所有听起来像是相对便宜但昂贵的解决方法。