Suporte » Temas » Loop para exibir post que tenha imagem na galeria

  • Resolvido franet

    (@franet)


    Olá amigos, estou com dificuldade para fazer o seguinte:

    Preciso Listar o posts q tenha imagem na galeria do post de uma determinada categoria, ele ir buscar até encontrar um post q tenha imagem na galeria.

    Andei vendo a função. has_post_image()

    mas não consegui colocar para funcionar.. se alguém puder ajudar..

    Para exibir a imagem vou usar o get_the_image

    Obrigado..

Visualizando 3 respostas - 1 até 3 (de um total de 3)
  • Posso estar enganado, mas tenho quase que certeza absoluta que não tem como isso ser feito.

    Acho que não tem como porque as imagens usadas na galeria não recebem nenhum campo especial, são somente imagens associadas ao post e nada mais.

    Por exemplo, para a imagem destacada um campo interno recebe _thumbnail_id como parâmetro, já para a galeria nada parecido acorre.

    A única forma de fazer essa separação é pesquisar se o post tem uma galeria inserida nele, mas caso não tenha sido inserida não tem como, mesmo que várias imagens tenham sido inseridas no post e que tenha sido criado a opção de galeria na opção de upload.

    Criador do tópico franet

    (@franet)

    Se eu conseguir, fazendo se existe galeria no post ja ajuda bem… vc tem o código para fazer isso ?

    Aparentemente o que determina se um post pode ter uma galeria ou não é a quantidade de imagens associadas ao post, se o post tiver mais que uma imagem ele pode ter uma galeria.

    Levando isso em conta vc pode usar esta função para determinar isso e dentro do loop fazer com que o post seja exibido caso a função retorne true e não exibir o post caso ela retorne false.

    function wo_has_post_gallery(){
    	global $post, $wpdb;
    
    	$attachments = intval( $wpdb->get_var( $wpdb->prepare( "SELECT count(*) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = %d", $post->ID ) ) );
    
    	if ( empty($attachments) && count($attachments) <= 2 ) {
    		return false;
    	} else {
    		return true;
    	}
    }

    Mas acho essa verificação totalmente errada, porque um post pode ter várias imagens e isso não tem nada haver com a galeria.

    Então usando a mesma lógica da função anterior vc pode fazer a verificação se no post tem o shortcode gallery com a seguinte função

    function wo_has_post_gallery_exists(){
    	global $post;
    
    	if ( stripos( $post->post_content, '[gallery' ) ){
    		return true;
    	} else {
    		return false;
    	}
    }

    Ambas as funções devem ser inseridas no arquivo functions.php do tema e para usá-las como foi sugerida vc pode seguir o seguinte exemplo.

    <?php
    $args = array( 'numberposts' => -1, 'cat' => 20, 'paged' => (get_query_var('paged')), 'posts_per_page' => 10 );
    query_posts($args);
    if (have_posts()): while (have_posts()) : the_post(); ?>
    
    <?php if( wo_has_post_gallery_exists() ) { ?>
    	<div class="post">
    		<?php the_tutle('<h2>', '</h2>'); ?>
    		<?php the_content(); ?>
    	</div>
    <?php } ?>
    
    <?php endwhile; endif; ?>

    Assim só serão exibidos posts que sejam da categoria 20 e que tenham o shortcode [gallery] no corpo do post.

    Obs: O que tive como testar em meu tema atual de trabalho eu testei que foram as funções e a verificação dentro do loop, já o loop apresentado por último eu não testei, mas em teoria se tiver alguma coisa errada é só no query_posts que vc pode personalizar a seu gosto.

Visualizando 3 respostas - 1 até 3 (de um total de 3)
  • O tópico ‘Loop para exibir post que tenha imagem na galeria’ está fechado para novas respostas.