Problema de cache com WP_Query e filtragem de campo personalizada

Eu tenho três WP_Queries em uma página. Cada um deles retorna itens de postagem personalizados que possuem uma determinada checkbox marcada e, em seguida, exibem uma daquelas aleatoriamente. A checkbox de seleção foi adicionada usando Metaboxes e campos personalizados para o WordPress .

 '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(); ?> 
post content comes here

No entanto, desativar a checkbox de seleção em uma determinada postagem às vezes não tem efeito. A consulta ainda retorna todos os itens que, em algum momento, tiveram a checkbox de seleção marcada, independentemente se eles tiverem agora. Configurar cache_results , update_post_meta_cache e update_post_term_cache para false não tem efeito.

Alguma idéia do que isso pode causar isso? Isso é uma questão de cache, ou o CMB está em falta?

Solutions Collecting From Web of "Problema de cache com WP_Query e filtragem de campo personalizada"

Encontrou uma solução. Aparentemente, o CMB não usa inteiros ao salvar valores no database das checkboxs de seleção personalizadas, mas sim adiciona uma seqüência on caracteres quando uma checkbox de seleção está marcada.

Além disso, quando uma checkbox de seleção marcada anteriormente é desmarcada, a linha correspondente não é removida da tabela wp_postmeta , mas permanece lá com um valor vazio.

Então, isso retornará todas as postagens que em algum momento tiveram a checkbox de seleção ativa:

 'meta_key' => '_cmb_work_front_large', 'meta_value_num' => 1 

E isso mostrará apenas os ativos:

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