如何形成一个数组以从具有多个参数的 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' =&gt; array( *inside here* )

当我使用print_r ($_GET['mytaxonomy']); 时,结果是Array ( [0] =&gt; myterm ),完全正确。我想我只需要将数组形成为'a', 'b' 即可在 WP 查询中工作。我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

对于可能质疑如何解决此问题的其他人:这是一个简单的解决方法。因为正如@Wodka 所建议的那样,我用 [] 括号形成了链接,如下所示:&lt;input type="checkbox" name="mytaxonomy[]" value="myterm"&gt; 并且因为$_GET['mytaxonomy'] 本身输出了array(),所以我可以像下面那样将其放入。

'terms' =&gt; $_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&amp;mytaxonomy[]=myotherterm 一样将数组传递给 php - 您使用的语法来自 java 世界(不适用于 php)

【讨论】:

这实际上是我形成 URL 的方式。在第一页,有一个表格:&lt;label&gt;&lt;input type="checkbox" name="mytaxonomy[]" value="myterm"&gt;myterm&lt;/label&gt;

以上是关于如何形成一个数组以从具有多个参数的 URL 进行查询的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 htaccess 以从用户友好的 URL 获取参数以与 JS 一起使用

如何使用 JavaScript 将包含多个数组的数组作为参数化 URL 传递

我们如何使用具有多个参数的laravel URL?

如何将具有多个对象的状态数组作为参数传递给graphql突变?

在查询参数Angular HttpClient中传递数组

如何从 .map 循环返回以从 API 获取数据 [重复]