Suporte » Plugins » Ajuda com shortcode para galeria de posts

  • Resolvido digofreitas

    (@digofreitas)


    Estou desenvolvendo um shortcode genérico para uma necessidade específica que tenho, assim depois posso compartilhar o código com a comunidade.

    Utilizo o plugin Comic Easel, que cria custom posts com o nome de “comic” e suas categorias são chamadas de “chapter”.
    O que eu quero fazer é uma lista de thumbnails com link dos últimos posts do tipo “comic” e além disso disponibilizar uma série de configurações e filtros para a query do mesmo dentro do shortcode. Por exemplo, alterar o tamanho do thumbnail, aumentar ou reduzir os posts exibidos, filtrar apenas os posts de um determinado “chapter”, etc.

    Consegui tratar os posts da query quando ela responde com algum registro, mas no geral não vem nada quando filtro pelo shortcode. Preciso de ajuda com a correção de algum erro que não encontro no código abaixo.

    Obrigado.

    // Add Shortcode
    function recent_posts_with_thumbnails( $atts ) {
    	// Attributes
    	extract( shortcode_atts(
    		array(
    			'post_count' => '3',
    			'post_type' => 'post',
    			'taxonomy_name' => '',
    			'taxonomy_ids' => '',
    			'order' => 'DESC',
    			'width' => 100,
    			'height' => 100,
    		), $attrs )
    	);
    
    // Code
    
    $tax_query_array = array();
    
    if (!empty($attrs['taxonomy_name'])){
    	$tax_query_array['taxonomy'] = $attrs['taxonomy_name'];
    	$tax_query_array['field'] = 'id';
    
    	if (!empty($attrs['taxonomy_ids'])){
    		$tax_query_array['terms'] = split(',',$attrs['taxonomy_ids']);
    	}
    }
    
    $query_attrs = array(
    	'post_type' => $attrs['post_type'],
    	'posts_per_page' => $attrs['post_count'],
    );
    
    if (!empty($tax_query_array)){
    	$query_attrs['tax_query'] = $tax_query_array;
    }
    
    $the_query = new WP_Query($query_attrs);
    
    $output = "";
    
    while ($the_query -> have_posts()) : $the_query -> the_post();
    	$thumb = wp_get_attachment_image_src( get_post_thumbnail_id(the_ID()), array($attrs['width'],$attrs['height']));
    	$img_src = $thumb['0'];
    	$a_post = get_post(the_ID());
    	$output .= '<a href="'.get_permalink(the_ID()).'" title="'.$a_post->post_title.'"><img src="'.$img_src.'"/></a>';
    endwhile;
    
    return $output;
    }
    add_shortcode( 'recent_posts_with_thumbnails', 'recent_posts_with_thumbnails' );
Visualizando 1 resposta (de um total de 1)
  • Criador do tópico digofreitas

    (@digofreitas)

    Consegui!

    Segue o código:

    function recent_posts_with_thumbnails( $atts ) {
    	// Attributes
    	extract( shortcode_atts(
    		array(
    			'post_count' => 10,
    			'post_type' => 'post',
    			'taxonomy_name' => 'category',
    			'taxonomy_slugs' => '',
    			'order' => 'DESC',
    			'width' => 100,
    			'height' => 100,
    		), $atts )
    	);
    
    // Code
    
    $query_atts = array(
    	'post_type' => $atts['post_type'],
    	'posts_per_page' => $atts['post_count'],
    );
    
    $tax_query_array = array();
    
    if (!empty($atts['taxonomy_name'])){
    	$tax_query_array['taxonomy'] = $atts['taxonomy_name'];
    	$tax_query_array['field'] = 'slug';
    
    	if (!empty($atts['taxonomy_slugs'])){
    		$tax_query_array['terms'] = split(',',$atts['taxonomy_slugs']);
    	}
    }
    
    if (!empty($tax_query_array)){
    	$query_atts['tax_query'] = array($tax_query_array);
    }
    
    //return json_encode($query_atts);
    query_posts( $query_atts );
    
    // The Loop
    while ( have_posts() ) :
    	$a_post = the_post();
    	$thumb = wp_get_attachment_image_src( get_post_thumbnail_id($a_post->ID), array($atts['width'],$atts['height']));
    	$img_src = $thumb['0'];
    	$output .= '<a href="'.get_permalink($a_post->ID).'" title="'.$a_post->post_title.'"><img src="'.$img_src.'"/></a>';
    endwhile;
    
    // Reset Query
    wp_reset_query();
    
    return $output;
    }
    
    add_shortcode( 'recent_posts_with_thumbnails', 'recent_posts_with_thumbnails' );
Visualizando 1 resposta (de um total de 1)
  • O tópico ‘Ajuda com shortcode para galeria de posts’ está fechado para novas respostas.