Campo Relacional

O Campo Relacional é uma versão bem atrativa do campo de objetos. Com o Campo Relacional, você pode selecionar itens relacionados a uma página / posts / custom post types. É uma ótima forma de parar de usar plugins para posts relacionados, que nunca relacionam com precisão, e deixar seus usuários fazerem este relação manualmente, se preocupando apenas com o front-end.

acf campo relacional
acf-campo-relacional-2

Campos adicionais deste tipo de campo

  • Formato dos dados: Especifique a forma com os valores serão retornados no front-end
  • Tipo de Post: Selecione os post types que devem aparecer para serem escolhidos;
  • Filtro de Taxonomia: Você pode filtrar algumas taxonomias / categorias caso seja necessário;
  • Filtros: Permite adicionar um campo de busca e filtros a serem marcados pelos usuários.
  • Elementos: Quais elementos irão aparecer no resultado dos boxes de seleção.
  • Posts máximos: Quantidade máxima de posts permitidos. Caso você não preencha um valor máximo, o usuário poderá selecionar quantos posts quiser.

Como utilizar este campo em um template WP?

A API irá retornar um array de objetos de posts da mesma forma que a função get_posts faria, ou seus IDs, dependendo da escolha do Formato de Dados.

Loop básico (com setup_postdata)

Este exemplo mostra como carregar os posts selecionados no campo relacional e os exibir em uma lista. Este exemplo utiliza a função setup_postdata, que sobrescreve o objeto da variável global $post e permite que funções como the_title possam ser usadas. Vale lembrar que ao usar esta função, você deve resetar a $post depois para poder voltar a utilizar normalmente. Veja mais sobre isso em https://codex.wordpress.org/Template_Tags/get_posts#Reset_after_Postlists_with_offset

<?php 

$posts = get_field('relacao-posts');

if( $posts ): ?>
    <ul>
    <?php foreach( $posts as $post): ?>
        <?php setup_postdata($post); ?>
        <li>
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
            <span>Custom field from $post: <?php the_field('author'); ?></span>
        </li>
    <?php endforeach; ?>
    </ul>
    <?php wp_reset_postdata(); ?>
<?php endif; ?>

Loop básico (sem setup_postdata)

Vejamos como fazer o mesmo do exemplo anterior, mas sem usar a função setup_postdata para sobrescrever a global $post.

<?php 

$posts = get_field('relacao-posts');

if( $posts ): ?>
	<ul>
	<?php foreach( $posts as $p ): // variable must NOT be called $post (IMPORTANT) ?>
	    <li>
	    	<a href="<?php echo get_permalink( $p->ID ); ?>"><?php echo get_the_title( $p->ID ); ?></a>
	    	<span>Custom field from $post: <?php the_field('author', $p->ID); ?></span>
	    </li>
	<?php endforeach; ?>
	</ul>
<?php endif; ?>

Utilizando o WP_Query

Como vimos nas opções, é possível ter como retorno apenas o IDs de posts, ao invés do objeto de post. Com isso, você utilizar os ID’s em um WP_Query, com argumentos adicionais. Você pode ler mais sobre parâmetros do WP_Query na documentação oficial, em https://codex.wordpress.org/Class_Reference/WP_Query#Parameters.

Note que o get_field possui dos argumentos após o campo, com o valor ‘false’ sendo passado. O primeiro é para informar que o $post_id neste caso é irrelevante, e o segundo diz para o ACF não formatar o valor, retornando da forma que está salva no banco, um array de IDs.

<?php 

// get only first 3 results
$ids = get_field('relacao-posts', false, false);

$query = new WP_Query(array(
	'post_type'      	=> 'conferences',
	'posts_per_page'	=> 3,
	'post__in'		=> $ids,
	'post_status'		=> 'any',
	'orderby'        	=> 'rand',
));

?>

Posts Similares

  • Campo de Seleção (Select)

    Campo de Seleção (Select)

    O Campo de Seleção cria um seletor dropdown ou de múltiplas escolhas. Campos adicionais deste tipo de campo Escolhas: Aqui você vai popular a lista de valores selecionáveis. Cada item desta lista deverá estar em uma linha,  e deverá ser preenchido no formato ‘valor : label’. Se você escrever apenas um item sem os dois…

  • Campo de Área de Texto

    O Campo de Área de texto (Textarea) cria áreas de texto adicionais. Este campo é bem útil para armazenar parágrafos simples a serem utilizados em seu tema.

  • Campo de Upload de Arquivo

    O campo de Upload de arquivo permite que um arquivo seja selecionado e enviada para o servidor, utilizando a API nativa do WordPress para upload, o plupload. Campos adicionais deste tipo de campo Valor Retornado: Define o tipo de retorno dos dados. Você pode escolher entre Objeto (array de dados), URL do arquivo (string), ou ID do arquivo (int); Biblioteca:…

  • Shortcode do ACF

    Shortcode do ACF

    O Shortcode do ACF pode ser utilizado em sua postagem para exibir o valor de um campo personalizado simples, como o de texto. Se você não sabe o que é um shortcode, recomendamos a leitura da documentação oficial do WordPress, no Codex. Requisitos ACF v3.1.1 ou superior Como Utilizar Place the shortcode marker with the desired field within your…

  • get_fields()

    get_fields()

    Esta é uma função do Advanced Custom Fields que irá retornar TODOS os campos personalizados de um post / página (que não comecem com “_”) e os retorna em um array, no formato $field_name => $value. Você só deve usar esta função quando você não souber quais campos que estarão aparecendo em um template ou se você…

  • have_rows()

    have_rows()

    Esta função verifica se o campo (repetidor ou conteúdo flexível) tem quaisquer linhas de dados para executar um loop. Esta é uma função booleana, ou seja, ele retorna VERDADEIRO ou FALSO. Esta função é uma substituição para a função has_sub_field, no entanto, tem algumas diferenças pequenas mas significativas. A principal diferença é que esta função não…

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *