How to call custom taxonomy categories with shortcodes

I’ve just had one questions solved over here: How to display posts from a single category within a custom taxonomy

Now I’m wondering how to take this code:

Read More
<?php
    $args = array(
        'posts_per_page' => 1,
        'post_type' => 'inventory',
        'tax_query' => array(
            array(
                'taxonomy' => 'inventory-category',
                'field' => 'slug',
                'terms' => array( 
                    'bulk-racks' 
                )
            )
        )       
    );
query_posts( $args ); while ( have_posts() ): the_post();

// do stuff here
?>

<?php endwhile; ?>

and call it using shortcodes, for example to display the bulk-racks category by using this or something similar [inventory-category=”bulk-racks”]

I know how to create a basic shortcode but I don’t know how to write the function that would return the posts based on the shortcode category name input.

Once again any help would be greatly appreciated.

Related posts

Leave a Reply

1 comment

  1. Take a look at category post shortcode to get an idea and here is the plugin with minor modifications to call your post type and taxonomy:

    // Taxonomy category shortcode
    function cat_func($atts) {
        extract(shortcode_atts(array(
                'class_name'    => 'cat-post',
                'totalposts'    => '-1',
                'category'      => '',
                'thumbnail'     => 'false',
                'excerpt'       => 'true',
                'orderby'       => 'post_date'
                ), $atts));
    
        $output = '<div class="'.$class_name.'">';
        global $post;
        $args = array(
            'posts_per_page' => $totalposts, 
            'orderby' => $orderby,
            'post_type' => 'inventory',
            'tax_query' => array(
                array(
                    'taxonomy' => 'inventory-category',
                    'field' => 'slug',
                    'terms' => array( $category)
                )
            ));
        $myposts = NEW WP_Query($args);
    
    
        while($myposts->have_posts()) {
            $myposts->the_post();
            $output .= '<div class="cat-post-list">';
            if($thumbnail == 'true') {
            $output .= '<div class="cat-post-images">'.get_the_post_thumbnail($post->ID, 'thumbnail').'</div>';
            }
            $output .= '<div class="cat-content"><span class="cat-post-title"><a href="'.get_permalink().'">'.get_the_title().'</a></span>';
            if ($excerpt == 'true') {
                $output .= '<span class="cat-post-excerpt">'.get_the_excerpt().'</span>';
            }
            $output .= '</div>
                <div class="cat-clear"></div>
            </div>';
        };
        $output .= '</div>';
        wp_reset_query();
        return $output;
    }
    add_shortcode('inventory-category', 'cat_func');
    

    usage:

    just put this shortcode in your post or pages

    [inventory-category totalposts="3" category="bulk-racks" thumbnail="true" excerpt="true" ]
    
    • totalposts – your total number of
      post to display. default is -1
    • category – category slug. use comma ,
      for multiple slugs
    • thumbnail – set true if you want to display thumbnail. default is false
    • excerpt – set true if you want to display excertp. default is true
    • orderby – your post will order by . default post_date . check http://codex.wordpress.org/Template_Tags/get_posts for detail