Filtro de loop personalizado do WordPress por meta_key e valor com dados de serialização

Estou tentando executar o loop personalizado para Custom Post Type com filtragem por alguma meta_key e value

Agora, o meta valor simples funciona bem, mas aqui eu tenho um desafio com o tipo abaixo de dados serializados (nesteds).

Estou usando wpalchemy para meta box. meta_key para o tipo de publicação é _event_meta e o value é como abaixo

 a:9:{s:19:"ac_event_operations";a:1:{i:0;s:8:"Training";}s:18:"ac_event_positions";a:1:{i:0;s:10:"Supervisor";}s:18:"ac_event_employees";a:1:{i:0;s:2:"15";}s:13:"ac_event_date";s:10:"2017-06-15";s:19:"ac_event_start_time";s:5:"06:30";s:17:"ac_event_end_time";s:5:"07:00";s:14:"ac_event_place";s:6:"Office";s:18:"ac_event_organizer";s:4:"Jack";s:16:"ac_event_contact";s:4:"Rose";} 

Estou tentando filtrar All Events base em ac_event_operations , ac_event_positions , ac_event_employees

Então, para mim, o desafio é obter events de filtragem com o valor das meta-chaves acima. Aqui está a consulta que usei, mas, claro, não está dando nenhum resultado.

 global $event_mb; $meta = get_post_meta( get_the_ID(), $event_mb->get_the_id(), TRUE ); $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; $args = [ 'post_type' => 'event', 'posts_per_page' => get_option( 'posts_per_page' ), 'paged' => $paged, 'meta_query' => [ 'meta_key' => '_event_meta', 'value' => '%ac_event_employees%', 'compare' => 'LIKE' ], ]; $temp = $wp_query; $wp_query = NULL; $wp_query = new WP_Query( $args ); 

Solutions Collecting From Web of "Filtro de loop personalizado do WordPress por meta_key e valor com dados de serialização"

opinião filosófica, as pessoas que armazenam dados serializados não significam que ele seja usado em pesquisas.

Se você precisa pesquisar save_post dados, você deve conectar o gancho do save_post (ou o que for relevante) e armazenar o que você precisa em um meta diferente, de uma forma que possa ser usada na pesquisa.

Notas laterais:

  1. A pesquisa no meta não é escalável
  2. LIKE tem um desempenho horrível, se você entrar no ponto de usá-lo, você deve se perguntar onde você deu errado;)