WP_QUERY和自定义字段筛选的缓存问题

时间:2013-04-06 作者:hannu

我在一个页面上有三个单独的WP\\U查询。它们中的每一个都返回选中某个复选框的自定义帖子类型项目,然后随机显示其中一个。已使用添加该复选框Custom Metaboxes and Fields for WordPress.

<?php
$front1_args = array(
    \'post_type\' => \'work-item\',
    \'meta_key\' => \'_cmb_work_front_large\',
    \'meta_value_num\' => 1,
    \'orderby\' => \'rand\',
    \'posts_per_page\' => \'1\'
);
$front1_query = new WP_Query($front1_args);
while ($front1_query->have_posts()) : $front1_query->the_post();    
?>
<div> 
  post content comes here
</div>
<?php 
endwhile; 
wp_reset_postdata();
?>
然而,在某个帖子上取消勾选复选框有时没有效果。查询仍然会返回在某个时候选中了复选框的所有项目,无论它们现在是否选中了复选框。背景cache_results, update_post_meta_cacheupdate_post_term_cache 设置为false无效。

你知道这是什么原因吗?这到底是缓存问题,还是CMB可能有错?

1 个回复
最合适的回答,由SO网友:hannu 整理而成

找到修复程序。显然,CMB在将值从自定义复选框保存到数据库时不使用整数,而是添加了on 选中复选框时的字符串。

此外,如果取消选中以前选中的复选框,则不会从中删除相应的行wp_postmeta 表,但保留为空值。

因此,这将返回在某个时候复选框处于活动状态的所有帖子:

\'meta_key\' => \'_cmb_work_front_large\',
\'meta_value_num\' => 1
这将仅显示活动的:

\'meta_key\' => \'_cmb_work_front_large\',
\'meta_value\' => \'on\'

结束

相关推荐

使用wp-Super-cache和Amazon CloudFront-我可以直接提供文件(无CDN)吗?

我正在使用启用cdn支持的wp super cache插件(aws cloudfront)。我也在使用重新加载的wp表。后一个插件通过ajax包含一个文本文件,该文件由cdn提供服务。该插件不执行任何类型的jsonp操作,因此文件会遇到访问控制允许源问题。在我去修改插件以正确提取文件之前,有人知道我如何限制cdn存储此文件,并直接提供它吗?