2

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:

<?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.

2
  • Indeed, marking solutions is a matter of respecting the invested time into your task by other users.
    – kaiser
    May 12 '11 at 11:04
  • Thanks guys, I have accepted first answer, my fault for not reading the faqs properly. Still kinda mean to vote down my valid question though as it may help others.
    – maikunari
    May 12 '11 at 13:34
5

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
6
  • Thanks very much Bainternet, will give this a try right away!
    – maikunari
    May 12 '11 at 13:35
  • I'm coming up with a fatal errror: Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 17301490 bytes) in \wp-content\themes\ECSE\functions\inventory-shortcode.php on line 30. Any idea what might be the problem? btw, this is line 30 "$output .= '<div class="cat-post-list">';"
    – maikunari
    May 12 '11 at 16:56
  • Im guessing, running out of memory
    – Bainternet
    May 12 '11 at 17:22
  • Do you think that could be caused by the slow Go Daddy hosting my client is using?
    – maikunari
    May 12 '11 at 17:42
  • I think it has to do with server memory settings
    – Bainternet
    May 12 '11 at 18:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.