Suporte » Desenvolvendo com WordPress » Criar uma query com campos personalizados de relação do ACF

  • Olá pessoal, boa noite.
    Estou desenvolvendo um site de cadastro de filmes para um primo aficionado por cinema e preciso de uma ajuda para colocar uma query que liste o nome dos filmes cujo personalidade da página participou ou atuou.
    Estou desenvolvendo (tendo em vista meu pouco conhecimento em programação) utilizando WordPress + Elementor + Custom Post Types UI + ACF.
    Criei os seguintes CPTs: Filmes e Personalidades
    No Post Type Filmes, existem campos como diretores, atores, roteiristas, músicos e fotógrafos que são preenchidos de forma relacional com o Post Type Personalidades, que possuem suas áreas de atuação distinguidas pela taxonomia (diretor, ator, atriz, roteirista, músico e fotografia).
    Até aí tudo está funcionando perfeitamente. Agora gostaria que fosse exibido na single da personalidade, quais filmes ele atuou.
    Pesquisando no Google, e dando muita cabeçada na parede e murro em ponta de faca, cheguei no seguinte código, que se possível fosse inserido na single via shortcode.
    Entretanto mesmo depois de muita pesquisa, hoje completam quase 30 dias, esta função ainda não funciona. Até agora consegui chegar no seguinte código:

    add_shortcode ('filmografia', 'filmografia_ator' );
    
    function filmografia() {
    ob_start();
    
    <?php
    	$post_data = get_post( get_the_ID(),ARRAY_A );
    	$post_data = $post_data['post_name'];
    
            if($post_data){
    		$args = array(
    		          'post_type' 	=> 'filmes',
    			  'meta_query' 	=> array(
    				array( 
    				      'key'     => 'atores',
    				      'value'   => $post_data,
    				      'compare' => '=',
    				     ),
    						),
    				      'posts_per_page'=> -1
    				);
    		$query = new WP_Query( $args );
    							
    		// Loop da Listagem
    		if ( $query->have_posts() ) { ?>
    							
    		<h3>Filmografia</h3>
    
    		<ol>
    		<?php while ( $query->have_posts() ) {
    		$query->the_post(); ?>
    
    		<li>
    		<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> de <?php the_field('ano_lancamento'); ?> 
    										
    		</li>
    		<?php } ?>
    		</ol>
    		
    		<?php }
    		wp_reset_postdata();
    		}
    		?>
    return ob_get_clean();
    }

    Quando rascunhei este código foquei somente num tipo de atuação e se desse certo, partiria para o segundo desafio que era fazer uma busca por atuação.

    Acredito que o seguinte fluxo deve ser observado:
    – Pegar o ID do post (para identificar qual personalidade é)
    – Pegar taxonomia do post (para identificar qual tipo de atuação – diretor, ator, roteirista, etc.)
    – Dependendo do tipo de atuação, buscar informação no campo correspondente do post type filmes;
    – Caso exista post filmes cuja atuação foi definida:
    – Gerar um loop em uma lista ordenadas com o nome do filme e ano.

    Será que alguém poderia me dar um norte? Desde já agradeço a todos que tiraram um tempinho para ler e me ajudar nesta peleja.

    • Este tópico foi modificado 1 semana, 6 dias atrás por  Juxco. Motivo: indentar corretamente o código
Visualizando 1 resposta (de um total de 1)
  • Moderador Ralden Souza

    (@ralden)

    saudações juxco,

    acredito que por conta do WordCamp São Paulo, os voluntários desenvolvedores/programadores estão sem tempo de passar pelo fórum para tentar lhe dar alguma sugestão/ajuda com seu caso. eu sou designer, então não possuo conhecimentos para lhe ajudar com seu tópico.

    mas como já se passou 1 semana que abriu esse tópico (e sei como com 24 horas já ficamos ansioso para resolver, quanto mais 7 dias…), indico o fórum abaixo, que uso muito quando preciso pesquisar sobre algum solução de programação no WP,

    https://wordpress.stackexchange.com/

    como esse fórum é internacional, você precisaria postar em inglês. caso seja complicado para você abrir o tópico nesse idioma, outra possibilidade em português é o fórum abaixo,

    https://pt.stackoverflow.com/

    boa sorte.

Visualizando 1 resposta (de um total de 1)
  • Você deve estar conectado para responder a este tópico.