当$ _POST与Wordpress中的作者数组一起使用时,没有wp_query

时间:2017-05-09 13:47:39

标签: php ajax wordpress post

我的表单是将复选框中的内容发布到基于ajax的Wordpress wp_query。复选框用作显示帖子的过滤器。其中一个复选框设置了如下的author-id:

<label>
    <input type="checkbox" name="check_author[]" id="<?php echo $author['name']; ?>" value="<?php echo $author['id']; ?>" checked>
    <span class="checkName"><?php echo $author['name']; ?></span>
</label>

$_POST['check_author']输出以下内容(取决于选中的复选框):

Array ( [0] => 2 [1] => 1 )

这些id确实是正确的并且与作者相对应。

接下来,我在查询中插入数组。

$filters = $_POST['check_location'] || $_POST['check_themes'] || $_POST['check_author'] ;

    if( isset( $filters ) )

        //print_r($_POST['check_author']);

        $args = array(
            'post_type' => 'post',
            'tax_query' => array(
            'relation' => 'OR',
                array(
                    'taxonomy' => 'location',
                    'field'    => 'slug',
                    'terms'    => $_POST['check_location'],
                ),
                array(
                    'taxonomy' => 'category',
                    'field'    => 'slug',
                    'terms'    => $_POST['check_themes'],
                )
            ),
            'author'=> $_POST['check_author'],

        );

    //print_r($args);

    $query = new WP_Query( $args );

但是$_POST['check_location']$_POST['check_themes']的工作方式就像魅力一样,正在过滤我的查询。

我似乎无法让作者部分工作。我做错了什么?

3 个答案:

答案 0 :(得分:1)

您是否在没有'relation' => 'OR'...的情况下尝试过?因为,我不确定'operator' => 'IN'

答案 1 :(得分:1)

而不是author作为键,请使用author__in

答案 2 :(得分:0)

$_POST['check_author']的值是一个数组,但是你正在使用author参数,它需要一个整数。

author用于单个作者ID,而author__in接受一组作者ID。更新您的参数名称以解决问题。

文档:https://codex.wordpress.org/Class_Reference/WP_Query#Author_Parameters