首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Wp-query与序列化的postmeta值一起使用

将Wp-query与序列化的postmeta值一起使用
EN

Stack Overflow用户
提问于 2013-09-08 23:25:06
回答 2查看 2.1K关注 0票数 1

我已经在wp-postmeta表中存储了一些序列化数据,例如:

代码语言:javascript
复制
$data = array(
    'details'    => $dettagli,
    'vernice'    => $vernice,
    'reperibile' => $reperibile,
    'valore2'    => $valore2,
    'valuta2'    => $valuta2,
    'subcat'     => $subcat
);

add_post_meta($post_ID, 'meta', $data);

我想提取关键字为"details“且value = "4”的所有帖子。我该怎么做呢?

我尝试过这样做:

代码语言:javascript
复制
$args = array(
    'post_type' => 'custom-post-type',
    'posts_per_page' => -1,
    'meta_query' => 
        array(
            'key' => 'details',
            'value' => '4',
            'compare' => 'LIKE'
        ),
    'meta_key' => 'meta',    
);
$query = new WP_Query( $args );
if ($query->have_posts()) {
    while ($query->have_posts()) {
       $query->the_post();
       the_ID();
    }                          
}

怎么啦?

EN

回答 2

Stack Overflow用户

发布于 2013-09-09 01:28:41

meta_query是由数组组成的数组。你可以试试这个:

代码语言:javascript
复制
$args = array(
  //parameters here
  'meta_query' => array(
       array(
           'key' => 'details',
           'value' => '4',
           'compare' => 'LIKE'
       )
   ),
   //remove meta_key => 'meta'
);

然而,我不是100%确定这是否可以帮助你,让我们尝试一下,如果你卡住了,请告诉我。

更新

post meta中的序列化数组不是好的选择。因此,我建议您更改您的save函数,以单独存储自定义字段。

我已经找到了一种方法来反序列化你之前的post元值:

代码语言:javascript
复制
$args = array(
    'post_type'      => 'collectable',
    'meta_key'       => 'meta',
    'posts_per_page' => -1
);

$query = new WP_Query( $args );
if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post();
   //Get data for each post
   $data = get_post_meta( $post->id, 'meta', true );
   //Add post meta value individually for each field
   add_post_meta( $post->ID, 'details', $data['details'] );
   add_post_meta( $post->ID, 'vernice', $data['vernice'] );
   add_post_meta( $post->ID, 'reperibile', $data['reperibile'] );
   add_post_meta( $post->ID, 'valore2', $data['valore2'] );
   add_post_meta( $post->ID, 'valuta2', $data['valuta2'] );
   add_post_meta( $post->ID, 'subcat', $data['subcat'] );
   //Delete serialized data
   delete_post_meta( $post->ID, 'meta', $data );

endwhile; endif;

现在,您应该能够根据需要进行查询了。

希望它能帮上忙!

票数 1
EN

Stack Overflow用户

发布于 2013-09-09 00:48:43

你试过这个.Just吗?

代码语言:javascript
复制
$the_query = new WP_Query(array( 'meta_key' => 'open', 'meta_value' => 'yes' ));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18685391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档