如何形成一个数组以从具有多个参数的 URL 进行查询
Posted
技术标签:
【中文标题】如何形成一个数组以从具有多个参数的 URL 进行查询【英文标题】:How to form an array for query from URL with multiple parameters 【发布时间】:2019-06-13 23:41:09 【问题描述】:这是我正在制作的过滤器的第二页,在第一页上,用户可以选择复选框。复选框的值通过 URL 中的参数传递到第二页:
filter-result/?mytaxonomy=myterm&mytaxonomy=myotherterm
如何形成此数据的数组以在 (WP) 查询中使用?
我可以通过这样做来显示来自 URL 的数据:
if( isset( $_GET['mytaxonomy'] ) )
foreach( $_GET['mytaxonomy'] as $term )
echo $term . '<br>';
我还可以查询帖子(自定义帖子类型):
$query = new WP_Query( array(
'post_type' => 'mycustomposttype',
'tax_query' => array(
array(
'taxonomy' => 'mytaxonomy',
'field' => 'slug',
'terms' => array( 'myterm', 'myotherterm' ),
'operator' => 'AND',
),
),
) );
我想将数据从$_GET['mytaxonomy']
传递到'terms' => array( *inside here* )
。
当我使用print_r ($_GET['mytaxonomy']);
时,结果是Array ( [0] => myterm )
,完全正确。我想我只需要将数组形成为'a', 'b'
即可在 WP 查询中工作。我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:对于可能质疑如何解决此问题的其他人:这是一个简单的解决方法。因为正如@Wodka 所建议的那样,我用 [] 括号形成了链接,如下所示:<input type="checkbox" name="mytaxonomy[]" value="myterm">
并且因为$_GET['mytaxonomy']
本身输出了array()
,所以我可以像下面那样将其放入。
'terms' => $_GET['mytaxonomy'],
导致:
$query = new WP_Query( array(
'post_type' => 'mycustomposttype',
'tax_query' => array(
array(
'taxonomy' => 'mytaxonomy',
'field' => 'slug',
'terms' => $_GET['mytaxonomy'],
'operator' => 'AND',
),
),
) );
【讨论】:
【参考方案2】:您可以像filter-result/?mytaxonomy[]=myterm&mytaxonomy[]=myotherterm
一样将数组传递给 php - 您使用的语法来自 java 世界(不适用于 php)
【讨论】:
这实际上是我形成 URL 的方式。在第一页,有一个表格:<label><input type="checkbox" name="mytaxonomy[]" value="myterm">myterm</label>
。以上是关于如何形成一个数组以从具有多个参数的 URL 进行查询的主要内容,如果未能解决你的问题,请参考以下文章
如何设置 htaccess 以从用户友好的 URL 获取参数以与 JS 一起使用
如何使用 JavaScript 将包含多个数组的数组作为参数化 URL 传递