Loops WordPress avançados com campos personalizados avançados

Recentemente, lançamos um site para o Departamento de Comércio do Alabama . Um dos objetivos principais do site gira em torno do conceito de jornalismo de marca. Isso significava levar as publicações tradicionais do WordPress além do normal, a fim de maximizar o controle e a flexibilidade que poderiam ser fornecidos ao departamento de RP.

Um dos principais recursos que fornecemos foi o nível substancial de controle sobre a colocação das histórias em todo o site. Qualquer postagem pode ter colocação primária ou secundária (e às vezes, terciária) na página inicial, “Central de notícias” e / ou na página da categoria.

Embora não seja muito difícil colocar algumas opções de campos personalizados no wp-admin, o plugin Advanced Custom Fields faz um excelente trabalho ao fornecer uma interface extremamente amigável para nossos amigos do Departamento de Relações Públicas. Com uma combinação de caixas de seleção, botões de opção e menus suspensos, um autor pode selecionar as páginas (incluindo categorias) e o posicionamento da postagem.

Cenário

Então, como é a consulta? Este é o loop que consulta notícias secundárias em nossa página da Central de notícias:

<?php 
$news_secondary_args
= array(
'post_type' => 'post',
// Fetch two posts to go right of Primary Featured story
'posts_per_page' => 2,
// Query posts' meta
'meta_query' => array(
array
(
// Require post to have Featured Image
'key' => '_thumbnail_id'
),
array
(
// Key = ACF Field Name (True/False field)
'key' => 'feature_on_news_center',
// Value = 1, so 'True' radio button is selected
'value' => '1'
),
array
(
// Key = ACF Field Name (Radio Button)
'key' => 'news_placement',
// The value selected (other options include 'primary' & 'tertiary')
'value' => 'secondary'
)
)
);

// The Loop
$news_secondary_query
= new WP_Query( $news_secondary_args );
while ( $news_secondary_query->have_posts() ) :
$news_secondary_query
->the_post();

?>

<!-- <html> -->

<?php
endwhile
; // End Loop
wp_reset_postdata
(); // Reset post data in order to run additional loops such as this
?>