Suporte » Plugins » Campos Personalizados: Como escrever determinados campos ao listar posts

  • Resolvido Philipe Ribeiro

    (@philiperibeiro)


    Esse site [ http://cinemacearense.com.br/ ] lista filmes de acordo com gênero, categoria, ano, etc…

    Estou tendo dificuldade de listar, por exemplo, os filmes experimentais com determinados campos que cadastrei anteriormente.

    Link: http://cinemacearense.com.br/experimental

    Quero listar assim:

    Título do post (é o nome do filme)
    [imagem]
    Diretor: Fulano de tal
    Minutagem: 15min
    Ano: 2014

    Uso o seguinte:

    <?php
    global $post;
    $myposts = get_posts('numberposts=500&orderby=title&order=ASC&field_name=Gênero&meta_value=Experimental');
    foreach($myposts as $post) :
    ?>
       <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                            <div class="entry">
                                <a class="thumbnail" href="<?php the_permalink() ?>" rel="bookmark"><?php the_post_thumbnail('medium'); ?></a>
                            </div>
    <?php endforeach; ?>

    Isso tem listado o título do post e a imagem, mas não consigo escrever nenhum campo personalizado (Diretor, Minutagem, Ano, …)

    Alguém poderia me ajudar?

Visualizando 4 respostas - 1 até 4 (de um total de 4)
  • Criador do tópico Philipe Ribeiro

    (@philiperibeiro)

    Já testei outras coisas e até agora nada funcionou… =(

    Moderador Miriam de Paula

    (@miriamdepaula)

    Bom dia Philipe!

    Observe o seguinte loop:

    $args = array(
        'post_type' => 'filmes', // supondo que seu post type seja "filmes" altere se for necessário.
        'meta_key'     => 'genero', // sua meta key
        'meta_value'   => 'experimental', // sua meta value
        'order' => 'ASC' // ordenar ascendente
    );
    
    $filmes = new WP_Query( array( $args ) ); // Query!
    
    // inicio do loop
    
    if( $filmes->have_posts() ):
    
       while( $filmes->have_posts() ): $filmes->the_post();
    
         echo '<h2><a href="' . get_permalink() . '">' . get_the_title() . '</a></h2>';
         echo '<div class="entry">';
         echo '<a class="thumbnail" href="' . get_permalink() . '" rel="bookmark">' . get_the_post_thumbnail('medium') . '</a>';
         echo '<p>Diretor: ' . get_post_meta( get_the_ID(), 'diretor', true ) . '</p>'; // supondo que o ID seja "diretor"
         echo '<p>Minutagem: ' . get_post_meta( get_the_ID(), 'minutagem', true ) . '</p>'; // supondo que o ID seja "minutagem"
         echo '<p>Ano: ' . get_post_meta( get_the_ID(), 'ano', true ) . '</p>'; // supondo que o ID seja "ano"
    
         echo '</div>';
    
       endwhile;
    
    else:
    
        echo 'Nenhum filme encontrado';
    
    endif;

    Links para estudos:
    https://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

    get_post_meta()

    Criador do tópico Philipe Ribeiro

    (@philiperibeiro)

    Testei seu code, Miriam, e listava todos os posts… Mas foi muito importante para mesclar com o code que eu já tinha e gerar esse, que era o que eu estava procurando. Muito obrigado!

    <?php
     global $post;
     $myposts = get_posts('numberposts=500&orderby=title&order=ASC&field_name=Gênero&meta_value=Experimental');
     foreach($myposts as $post) :
     ?>
        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br />
        <?php echo '<a class="thumbnail" href="' . get_permalink() . '" rel="bookmark">' . get_the_post_thumbnail() . '</a><br />'; ?>
        <?php echo 'Diretor: ' . get_post_meta( get_the_ID(), 'diretor', true ) . ' | '; ?>
        <?php echo 'Duração: ' . get_post_meta( get_the_ID(), 'duração', true ) . ' | '; ?>
        <?php echo 'Ano: ' . get_post_meta( get_the_ID(), 'ano', true ) . ''; ?>
     <?php endforeach; ?>
    Moderador Miriam de Paula

    (@miriamdepaula)

    Fico feliz que tenha conseguido!!! 😀

Visualizando 4 respostas - 1 até 4 (de um total de 4)
  • O tópico ‘Campos Personalizados: Como escrever determinados campos ao listar posts’ está fechado para novas respostas.