Imagem em destaque em posts do WordPress é um ótimo recurso, principalmente para blogs de notícias que muitas vezes buscam matérias de fontes RSS ou outros blogs. Na maioria dos temas, quase todos, não é uma função comum poder definir somente posts com fotos aparecerão em determinadas áreas. Para isso você terá que colocar a mão no código! Com WP_Query, você precisa usar o filtro de “meta_query” em sua consulta com o operador de comparação para obter os resultados corretos, todas as outras formas de usar meta_key com os argumentos não funcionaram.
Eu vou mostrar 2 maneiras de fazer isso, uma delas para quem está com pressa e a outra para quem realmente quer ir a fundo no problema.
Opção Rápida
Vamos dizer que você esteja montando um modelo de página que puxará somente posts com imagens destacadas (thumbnail). Para buscar os posts usamos a chamada WP_Query com os $args e dentro da variável de argumentos estará o filtro de metadados:
$args = array(
'post_type' => 'post',
'posts_per_page' => 1 ,
'meta_query' => array(
array(
'key' => '_thumbnail_id',
'value' => '',
'compare' => '!=',
) ));
$posts = new WP_Query( $artgs);
OPÇÃO COMPLETA
O código abaixo pode ser inserido no seu functions.php e chamado de qualquer template ou página que for criar:
function get_posts_with_thumb($posts_per_page=10, $page=1, $user_id='' ){
$offset = ($page * $posts_per_page) - $posts_per_page;
$args = array( 'author'=>$user_id,
'posts_per_page' => $posts_per_page,
'offset' => $offset,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => 'post',
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => '_thumbnail_id',
'value' => '',
'compare' => '!=',
)
)
);
$posts_with_photos = new WP_Query( $args );
foreach($posts_with_photos->posts as $p){
$aTemp = new stdClass();
$thumb_id = (int)get_post_thumbnail_id($p->ID);
$aTemp->post_id = $p->ID;
$aTemp->author = $p->post_author;
$aTemp->post_date = $p->post_date;
$aTemp->title = $p->post_title;
$aTemp->comment_count = $p->comment_count;
$aTemp->image = wp_get_attachment_image_src( $thumb_id, 'thumbnail');
$aTemp->photo = wp_get_attachment_image_src( $thumb_id, 'full');
$aTemp->content = $p->post_content;
$oReturn->posts[] = $aTemp;
}
return $oReturn;
}
E ai você chama a função dessa maneira:
$posts = get_posts_with_thumb();
// ou com argumentos args
$posts = get_posts_with_thumb($posts_per_page=10, $page=1, $user_id=28);
print_r($posts);
Farei mais publicações rápidas e objetivas como essa, geralmente com algo que eu demorei para encontrar a solução e pode facilitar o seu projeto. Deixa seu comentário e contribua para o blog!
Adicionar Comentário