Problema estranho na afirmação if

Estou enfrentando uma questão estranha tentando fazer o que vou explicar agora.

Contexto

Plugins que estou usando: Custom UI / Advanced Custom Fields Funcionalidade: Eu tenho um tipo de postagem personalizado chamado “vendedores”. Dentro deste tipo de publicação, eu tenho vários campos personalizados feitos no ACF. Um desses campos é chamado “Promover para a Página inicial”, que é definido como uma checkbox de seleção. Então, a idéia é simples, se essa checkbox de seleção estiver marcada, mostre essa publicação na página inicial.

Então, isso parecia funcionar bem, mas quando eu tentei mudar esse “Vendedor destacado” para outro (uma corrente não verificada, checada desejada para evitar conflitos, descobri que a publicação que eu estava configurada como mostrada não estava mostrando, nada foi mostrado.

Eu comecei a testar, em seguida, tentando com outras postagens de vendedor, para descobrir que esse comportamento é completamente random, alguns deles publicados corretamente na página inicial, outros não. Tentei descobrir um padrão para identificar o que poderia estar causando e falhar. Também tentou replicar as configurações de um fornecedor que estava falhando em publicar dentro de um fornecedor que estava publicando bem, e mesmo definindo exatamente as mesmas coisas, o vendedor ainda estava publicando.

Finalmente, devo mencionar que eu tenho uma página onde eu estou listando algum tipo de “diretório” onde todos os vendedores estão sendo exibidos. Eu adicionei um código simples para verificar se a saída “promover_to_homepage” estava correta, algo como “se a checkbox de seleção estiver marcada, diga oi” e descobriu que as postagens que não estão sendo exibidas na página inicial passam o teste na página do diretório.

Estou ficando sem idéias sobre o que isso poderia ser, por isso estou tentando aqui se alguém me puder ajudar.

O código que estou usando na página inicial é simples:

 ID, true); if ($featured){?>  

Isso é tudo.

Agradeço antecipadamente a qualquer um que possa me ajudar nisso.

Juan.-

Solutions Collecting From Web of "Problema estranho na afirmação if"

Não há um terceiro parâmetro para get_field , pode estar causando seu erro.

EDITAR-

No seu código atual, se as 10 postagens mais recentes não contiverem uma postagem com sua meta-chave, você verá nada, uma vez que você apenas recebe 10 posts e depois filtra-los. Qualquer consulta que não especifique o número de postagens padrão para suas configurações de leitura, que você diz ser 10.

Além disso, se este não for o loop primário da sua página, você deve usar WP_Query e não query_posts . Se for o loop primário da sua página, você deve usar um gancho de ação pre_get_posts vez de query_posts . basicamente, não há nenhum motivo para usar os query_posts 🙂

um meio muito mais eficiente de selecionar suas postagens através do WP_Query é consultar especificamente para aqueles com a chave ao invés de filtrá-los após o fato:

 $args = array( 'posts_per_page' => -1, // get all of them 'post_type' => 'vendors', 'meta_key' => 'promote_to_homepage' ); $homepage_posts = new WP_Query( $args ); while( $homepage_posts->have_posts() ): $homepage_posts->the_post(); // all your normal loop stuff here the_title(); endwhile; 

Não consigo ver onde você verifica se a afirmação é verdadeira ou não. Você deveria ter algo como:

 < ?php query_posts('post_type=vendors'); while ( have_posts() ):the_post(); $featured = get_field( 'promote_to_homepage', $post->ID, true ); if ( $featured == 1 ){ echo 'Checked'; } else { echo 'Not Checked'; } endwhile; ?> 

A afirmação if poderia ser $featured == true ou $feature == 1 como eu costumo ir com.

Ah, olhei para o códice e não há verdade no get_field: http://www.advancedcustomfields.com/docs/functions/get_field/

 $value = get_field( 'promote_to_homepage', $post->ID ); if( $value ) { echo 'Checked'; } else { echo 'Not Checked'; }