0

我为我的帖子创建了一个元框,它可以保存三个值 0、1、2 之一。使用选择控件选择该值。

我也检查了我的数据库记录,元数据存储在数据库中,但我无法查询元值。

我用来查询包含元值的帖子的代码如下:

$args               =   array(
    'category__in'      =>  array(
        22
    ),
    'posts_per_page'    =>  1,
    'meta_query'        =>  array(
        array(
            'key'          =>  'postStatus',
            'value'        =>  1,
            'compare'      =>  '='
        )
    )
);

$extremely_important    =   new WP_Query($args);

while($extremely_important->have_posts())
{
    $extremely_important->the_post();

    the_title();
}

确切的问题是返回类别 22 的帖子,但返回最新的帖子,即没有将元值设置为 1。

有什么想法吗?

这是我在 SQL 插入语句中的 postmeta 表中的数据:

/*
-- Query: SELECT * FROM wp_postmeta WHERE post_id = 187754
LIMIT 0, 1000

-- Date: 2013-02-14 09:50
*/
INSERT INTO `wp_postmeta` (`meta_id`,`post_id`,`meta_key`,`meta_value`) VALUES (16847,187754,'_edit_last','1');
INSERT INTO `wp_postmeta` (`meta_id`,`post_id`,`meta_key`,`meta_value`) VALUES (16848,187754,'_TIP_protect_images_post','unchecked');
INSERT INTO `wp_postmeta` (`meta_id`,`post_id`,`meta_key`,`meta_value`) VALUES (16849,187754,'_TIP_protect_text_post','unchecked');
INSERT INTO `wp_postmeta` (`meta_id`,`post_id`,`meta_key`,`meta_value`) VALUES (16850,187754,'_thumbnail_id','166897');
INSERT INTO `wp_postmeta` (`meta_id`,`post_id`,`meta_key`,`meta_value`) VALUES (16851,187754,'_fpp_is_scheduled','');
INSERT INTO `wp_postmeta` (`meta_id`,`post_id`,`meta_key`,`meta_value`) VALUES (18502,187754,'_edit_lock','1360791749:1');
INSERT INTO `wp_postmeta` (`meta_id`,`post_id`,`meta_key`,`meta_value`) VALUES (18503,187754,'post_status','extremely_important');
INSERT INTO `wp_postmeta` (`meta_id`,`post_id`,`meta_key`,`meta_value`) VALUES (18504,187754,'postStatus','1');
4

3 回答 3

2

也许试试这个?

$args               =   

    array(
      'category__in'      =>  array(22),
      'posts_per_page'    =>  1,
      'meta_query'        =>  
           array(
                   'key'          =>  'postStatus',
                   'value'        =>  '1',
                   'compare'      =>  '=',
                   'type'        => 'NUMERIC'
                 )
    );
于 2013-02-14T07:40:26.063 回答
2

需要发布类型声明。(每天学习新东西。post_type 默认为 post)。那你的陈述似乎有些不对劲。你确定 meta_key 是'postStatus'。例如不在数组中?

$post_query = new WP_Query( array(
    'post_type' => '',
    'posts_per_page' => 1,
    'category__in' => array( 22 ),
    'meta_query' => array(
        array(
            'key' => 'postStatus',
            'value' => 1
        )
    )
) );
于 2013-02-14T07:42:59.620 回答
1

您的 meta_query 应该如下所示:

   'meta_query' => array(
       array(
           'key' => 'postStatus',
           'value' => 1,
           'compare' => '=',
       )
   )

这是WP_Query类参考的链接

于 2013-02-13T18:37:23.263 回答