我正在使用:http://www.farinspace.com/how-to-create-custom-wordpress-meta-box/函数创建一些自定义元框。
我的WP_Query看起来像这样:
$args = array(
'post_type' => 'testimonials',
'post_status' => 'publish',
'orderby' => checked((bool) $instance['testimonials_random'], true, false) ? 'rand' : 'id',
'posts_per_page' => $testimonials_number,
'paged' => get_query_var('page'),
'meta_query' => array(
array(
'key' => '_my_meta["addtosidebar"]',
'value' => 'on',
'compare' => 'LIKE'
)
)
);
$query = new WP_Query($args);
输入复选框addtosidebar如下所示:
<input type="checkbox" name="_my_meta[addtosidebar]" <?php checked((bool) $meta['addtosidebar'], true); ?> class="checkbox" />
您是否知道如何在meta_query中访问密钥?
谢谢, CIP
答案 0 :(得分:4)
我认为你不能这样做,因为链接到元值的教程存储在一个数组中,然后将其序列化为一个数据库字段。所以你最终在数据库中得到这样的东西:a:4:{s:12:"addtosidebar";s:2:"on";s:3:"foo";s:3:"bar";}
。
以下元查询可能有效,但最好使用单独的自定义字段。
'meta_query' => array(
array(
'key' => '_my_meta',
'value' => 's:12:"addtosidebar";s:2:"on";',
'compare' => 'LIKE'
)
)
答案 1 :(得分:1)
it was like this: 'meta_query' => array( array( 'key' => '_my_meta', 'value' => 'addtosidebar', 'compare' => 'LIKE' ) ) – CIPPO Design
这对我有用,我认为应该加上答案。有一件事,比如理查德指出,数据库中的条目是序列化的。所以'LIKE'基本上只会在该字符串中查找'value''addtosidebar'。
例如,如果我有这样的元数组:
发布1:
$myMeta = array('medium' => 'video', 'sometext' => 'a beautiful video')
帖子2:
$myMeta = array ('medium' => 'image', 'sometext' => 'a beautiful image of a video button')
这意味着在'视频'上使用比较'LIKE'将返回两者,因为视频也可以在第二篇文章的'sometext'值中找到。为了阻止我必须添加引号以限制它:
$query->set( 'meta_query' , array(
array(
'key' => 'blogInfo',
'value' => '"video"',
'compare' => 'LIKE'
)
));
希望能够帮助某些人并使我能够理解。
ps:抱歉,我不够高调只是评论。