meta_query在wp_query中不起作用

时间:2014-05-11 14:01:09

标签: php mysql wordpress printf wp-query

我的帖子类型是product。我使用meta keyht_featured的复选框字段,当print_r为数组([0] =>要素)时的元数值。
我的WP_Query:

$the_query = new WP_Query(
    'post_type'     => 'product',
    'showposts'     => 12,
    'meta_query'    => array(
            array(
                    'key'       => 'ht_featured',
                    'value'     => array('featured'),
                    'compare'   => 'IN'
            )
    )
);

它没有显示任何帖子。 我尝试使用value => 'featured''compare' => 'EXISTS',但无效。

4 个答案:

答案 0 :(得分:5)

WP_query需要在数组中传递。使用以下代码,如果有任何问题,请告诉我。

$the_query = new WP_Query (array (
        'post_type'     => 'product',
        'showposts'     => 12,
        'meta_query' => array(
            array(
                'key'       => 'ht_featured',
                'value'     => array('featured'),
                'compare'   => 'IN'
            )
        )
    ));

您可以参考wordpress论坛上的讨论:

http://wordpress.org/support/topic/how-to-wp_query-meta_query-value-string-contain-in-key-string

答案 1 :(得分:1)

当它们应该包含在数组中时,你将所有这些作为单独的参数传递给WP_Query。

$the_query = new WP_Query( array( 
    'post_type'     => 'product',
    'showposts'     => 12,
    'meta_query'    => array(
        array(
            'key'       => 'ht_featured',
            'value'     => array('featured'),
            'compare'   => 'IN',
        ),
    ),
) );

您能澄清一下您对复选框的看法吗?我建议您在保存产品时使用“是”或“否”更新“ht_featured”。然后将元查询中的“值”更改为“是”并删除“比较”。

答案 2 :(得分:0)

你确定没有php错误吗? 我认为WP_Query需要在一个数组中传递

  $the_query = new WP_Query(
    array(
      'post_type'     => 'product',
      'showposts'     => 12,
      'meta_query'    => array(
              array(
                      'key'       => 'ht_featured',
                      'value'     => array('featured'),
                      'compare'   => 'IN'
              )
      )
  ));

答案 3 :(得分:0)

在我使用函数get_posts()而不是创建新的WP_Query之前,我遇到了类似的问题。看看是否有帮助...