我在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();
}
}
有什么问题?
答案 0 :(得分:1)
meta_query
是一个数组数组。
你可以试试这个:
$args = array(
//parameters here
'meta_query' => array(
array(
'key' => 'details',
'value' => '4',
'compare' => 'LIKE'
)
),
//remove meta_key => 'meta'
);
然而,我不是百分百确定这是否可以帮助你,让我们试试吧,如果你遇到困难,请告诉我。
<强>更新强>
post meta中的序列化数组不是很好的交易。因此,我建议您更改保存功能以单独存储自定义字段。
我找到了一种方法来反序列化之前的后元值:
$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 :(得分:0)
你试过这个。试一试
$the_query = new WP_Query(array( 'meta_key' => 'open', 'meta_value' => 'yes' ));