我已经在wp-postmeta表中存储了一些序列化数据,例如:
$data = array(
'details' => $dettagli,
'vernice' => $vernice,
'reperibile' => $reperibile,
'valore2' => $valore2,
'valuta2' => $valuta2,
'subcat' => $subcat
);
add_post_meta($post_ID, 'meta', $data);我想提取关键字为"details“且value = "4”的所有帖子。我该怎么做呢?
我尝试过这样做:
$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();
}
}怎么啦?
发布于 2013-09-09 01:28:41
meta_query是由数组组成的数组。你可以试试这个:
$args = array(
//parameters here
'meta_query' => array(
array(
'key' => 'details',
'value' => '4',
'compare' => 'LIKE'
)
),
//remove meta_key => 'meta'
);然而,我不是100%确定这是否可以帮助你,让我们尝试一下,如果你卡住了,请告诉我。
更新
post meta中的序列化数组不是好的选择。因此,我建议您更改您的save函数,以单独存储自定义字段。
我已经找到了一种方法来反序列化你之前的post元值:
$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;现在,您应该能够根据需要进行查询了。
希望它能帮上忙!
发布于 2013-09-09 00:48:43
你试过这个.Just吗?
$the_query = new WP_Query(array( 'meta_key' => 'open', 'meta_value' => 'yes' ));https://stackoverflow.com/questions/18685391
复制相似问题