Como fazer um Querypost reverso para o campo personalizado tipo relacional no plug-in Advanced Custom Fields


Postado em 26 de maio de 2015 por | Categorias: Advanced Custom Fields | 2 Comentários » | Comentar


Na imagem abaixo temos o exemplo de um post de um blog com duas receitas relacionadas:

exemplo-de-custom-post-relacionado-no-wordpress

Para criar esta função no Blog, primeiro é necessário criar um custom post chamado receitas (não vamos descrever aqui o processo de criação dos custom-post, consulte Function Reference/register post type). Para fazer a relação entre os dois posts foi usado o plug-in Advanced Custom Fields, através dele é possível  criar um campo relacional na área de posts do blog, permitindo o usuário selecionar posts do custom post receitas. Abaixo a imagem da criação do campo relacional no plug-in Advaced Custom Fields:

campo-relacional-Advanced-Custom-Fields-receita-relacionada-no-post
Na tela de edição e criação de posts do WordPress, o campo relacional aparece da seguinte forma:

campo-relacional-Advanced-Custom-Fields-receita-relacionada

Abaixo o código que exibe as receitas relacionadas na página do post. Este código deve ser inserido no arquivo single.php após fechar a query de post que exibe o conteúdo da página.

<?php
// puxa as receitas relacionadas
$posts = get_field('receita_relacionada');
if( $posts ): ?>
<div>
<h3>Receitas relacionadas</h3>
<ul>
<?php foreach( $posts as $post): ?>
<?php setup_postdata($post); ?>
<li>
<div>
<?php if ( has_post_thumbnail() ) { ?>
<?php get_the_image( array( 'custom_key' => array( 'thumbnail' ), 'default_size' => 'thumbnail', 'width' => '310', 'height' => '150' ) );
} else { ?>
<img src="<? bloginfo('stylesheet_directory'); ?>/images/thumb_padrao.jpg" width="310" height="149"/>
<?php } ?>
</div>
<div>
<h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4>
<?php the_excerpt(); ?>
</div>
</li>
<?php endforeach; ?>
</ul>
</div>
<?php wp_reset_postdata(); ?>
<?php endif; ?>

Quando estamos na página da receita temos a exibição do post pai da relação. Deste modo temos que fazer a query inversa ao post relacionado, ou seja, vamos exibir o post que carrega a função de relação entre as duas postagens, exemplo na iamgem:

pagina-receita-post-relacionado

Para criar a área Veja também ilustrada na imagem acima, insira o código abaixo no arquivo single-receitas.php. É importante que o código que faz a relação inversa esteja dentro do loop principal da página (if (have_posts()) : while (have_posts()) : the_post()):

<?php
// loop inicial que pega o conteúdo do custom post receita
if (have_posts()) : while (have_posts()) : the_post(); ?>

<h2><?php the_title(); ?></h2>

<?php the_content(); ?>

<?php
/*
*  Pega post reverso do campo relacionado com o post do blog
*/

$posts_relacionados = get_posts(array(
'post_type' => 'post',
'meta_query' => array(
array(
'key' => 'receita_relacionada', // nome do campo relacional
'value' => '"' . get_the_ID() . '"',
'compare' => 'LIKE'
)
)
));

?>

<?php if( $posts_relacionados ): ?>
<div>
<h3>Veja tamb&eacute;m</h3>
<ul>
<?php foreach( $posts_relacionados as $doctor ): ?>
<li>
<div>
<?php

if ( has_post_thumbnail( $doctor->ID ) ) {
$src = wp_get_attachment_image_src( get_post_thumbnail_id( $doctor->ID ), thumbnail );
?>
<img src="<?php echo $src[0]; ?>" width="310" height="150"/>
<?php
} else {
?>
<img src="<? bloginfo('stylesheet_directory'); ?>/images/thumb_padrao.jpg" width="310" height="149"/>
<?php } ?>
</div>
<div>
<h4><a href="<?php echo get_permalink( $doctor->ID ); ?>"><?php echo get_the_title( $doctor->ID ); ?></a></h4>
<?php the_excerpt(); ?>
</li>
<?php endforeach; ?>

</ul>
</div>
<?php endif; ?>
<?php endwhile;?>
<?php endif; ?>


Categorias

Links

Tags

Autor do post bloginfo() Caminho do tema Campos Personalizados Categorias Codificação UTF8 Contac form 7 CSS Custom fields Custom Post Types data Dividir string explode() Formatação de datas Formatação de Hora get_ get_option() get_page_template() get_the_terms get_the_title() Hora IMG is_single() Janelas Links Lista de Categorias Lista de Posts Lista de ùltimos posts location.href Paginação Post_name Query_posts register_sidebar Sidebar the_author_nickname() the_category() the_tags() the_time() Titulo da página UFT8_encode UTF8 UTF8_decode Widgets wp_list_categories() âncoras

Copyright © 2017  |   W-Pedia – Wikipedia Wordpress BR  |  produzido por Henderson C. Torres