Fábio Bastos - Desenvolvedor WordPress em BH. Desenvolvimento Front-end e Back-End

Desenvolvedor WordPress, Web Designer e Programador

Advanced Custom Fields – Repeater – Filtrar os posts com valor específico de um repeater field


Esse post é mais como uma dica para quem precisar filtrar posts por algum valor de repeater field do plugin Advanced Custom Fields do WordPress.

Recentemente me deparei com o problema de ter que criar um Repeater Field de datas (datepicker) para uma área de eventos de um portal que desenvolvi. O usuário precisava colocar quantas datas quisesse e não podia ser só marcar a data inicial e a final (já que alguns eventos aconteceriam sazonalmente). Então a minha solução foi colocar um repeater no qual o usuário adiciona quantas datas quiser ao evento. Ao mesmo tempo, precisava mostrar esses eventos separados por mês no front-end. Então eu tive que buscar os posts, porém filtrando pelos valores das datas inseridas no Repeater. Se houvesse alguma data no mês indicado, esse post era colocado no Loop.

Nesse exemplo, os posts do post_type “cpt_programacao” serão trazidos se algum dos sub_fields “data” do repeater “adicionar_data_evento” tiver um valor datetime dentro do mês desejado. Sendo assim, dá pra evoluir essa query e trazer os posts filtrados por qualquer valor do Repeater Field.
Perceba que $_REQUEST["month"] não é uma forma segura de colocar isso ali, só usei para exemplificar que seria algo dinâmico.

$programacao = $wpdb->get_results($wpdb->prepare( 
            "SELECT wp_posts.* FROM wp_posts  
		INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) WHERE 1=1  
		AND wp_posts.post_type = 'cpt_programacao' 
		AND wp_posts.post_status = 'publish' 
		AND wp_postmeta.meta_key LIKE %s
		AND MONTH(wp_postmeta.meta_value) = %s
		GROUP BY wp_posts.ID 
		ORDER BY wp_posts.post_date DESC",
	'adicionar_data_evento_%_data',
         $_REQUEST["month"]                       
        ) );

 


Tags: , ,

Deixe uma resposta