- Telegram
- Evernote
- Facebook Messenger
- Evernote
- Telegram
- Facebook Messenger
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!
- Telegram