Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

For Example,Now I have 3 Categories Like Food,Transport,Technology.Under These Categories I have Many Posts.Now I Want To Show the Latest Post From Each Category.{How to get Recent Post From Each Category with Thumbnail?}Is This is Possible?

I Think No Plugin for This One.If You have a Great Knowledge in Plugin Creation, this is the Greatest Challenge for you.Just try to Found New Things and Become a Great Founder.

My Question is Not Clear Means Ask Me or Edit ...

Thanks All...

share|improve this question
    
The Greatest Challenge? Become a Great Founder? Man, it sounds like an intro to Sid'Meyers Civilization or something! :D You got me hyped! –  Michal Mau Jun 3 '11 at 11:02
add comment

3 Answers

up vote 3 down vote accepted

I'm the developer of the List Category Posts WordPress plugin. The plugin uses a short code to get posts from a category and you can include thumbnails too.

Give it a try and hopefully you'll find it useful.

share|improve this answer
    
@:fernando your Plugin is good but It's Not Showing All Category..Only one category we can use.any more options there? –  Ramkumar Jun 3 '11 at 13:16
2  
@Ramkumar the shortcode can be used as many times as you want in a post. For example, write [catlist name=food], [catlist name=technology] and [catlist name=transport] to display posts from the 3 categories. If you want to display posts from ALL of the categories, just don't pass an id or name, and I think that displays the posts from all of the categories. Is this what you mean? –  Fernando Briano Jun 3 '11 at 13:22
    
yes.you are absolutely correct but i want to show Latest Post(Only One) from Each Category and show it in arranged order(horizontally) in same window(180x100). –  Ramkumar Jun 3 '11 at 14:14
1  
To display just one post from each category, you can use the numberposts parameter and ask for just 1: [catlist name=transport numberposts=1]. Regarding the way to display it, you can use a template system (it still needs some improvement) but with little work you can manage to show the posts the way you need. –  Fernando Briano Jun 3 '11 at 14:24
    
Thank you very much Fernando..i got it but not exactly i want..am looking much better.... –  Ramkumar Jun 4 '11 at 4:12
add comment

I Got Half Part of the code.Yes...Here it is...This Code Show's The Recent Post from Each Category but Not With Thumbnail.Now we Need to Show the Thumbnail from The Post. Will you Start to do Changes? All The Best...

     <?php


    $ddle_version = '1.92';
    // Setup defaults if options do not exist
add_option('ddle_header', '<h2>Latest Post From Each Category</h2>');
add_option('ddle_sort', 'cata');
add_option('ddle_cat_links', TRUE);
add_option('ddle_hide_protected', TRUE);
add_option('ddle_show_date', TRUE);
add_option('ddle_date_format', 'F jS, Y');
add_option('ddle_excerpts', FALSE);
add_option('ddle_chars', 200);
add_option('ddle_comment_link', FALSE);
add_option('ddle_comment_num', FALSE);
add_option('ddle_comments_none', FALSE);
add_option('ddle_limit', 0);
add_option('ddle_exclude', '');
add_option('ddle_include', '');
add_option('ddle_max_per_cat', 1);


function ddle_add_option_pages() {
    if (function_exists('add_options_page')) {
        add_options_page('Latest From Each Category', 'DDLatestFromEach', 8, __FILE__, 'ddle_options_page');
    }       
}


function ddle_options_page() {

    global $ddle_version;

    if (isset($_POST['set_defaults'])) {
        echo '<div id="message" class="updated fade"><p><strong>';

        update_option('ddle_header', '<h2>Latest Post From Each Category</h2>');
        update_option('ddle_sort', 'cata');
        update_option('ddle_cat_links', TRUE);
        update_option('ddle_hide_protected', TRUE);
        update_option('ddle_show_date', TRUE);
        update_option('ddle_date_format', 'F jS, Y');
        update_option('ddle_excerpts', FALSE);
        update_option('ddle_chars', 200);
        update_option('ddle_comment_link', FALSE);
        update_option('ddle_comment_num', FALSE);
        update_option('ddle_comments_none', FALSE);
        update_option('ddle_limit', 0);
        update_option('ddle_exclude', '');
        update_option('ddle_include', '');
        update_option('ddle_max_per_cat', 1);

        echo 'Default Options Loaded!';
        echo '</strong></p></div>';

    } else if (isset($_POST['info_update'])) {

        update_option('ddle_header', (string) $_POST["ddle_header"]);
        update_option('ddle_sort', (string) $_POST["ddle_sort"]);
        update_option('ddle_cat_links', (string) $_POST["ddle_cat_links"]);
        update_option('ddle_hide_protected', (bool)$_POST["ddle_hide_protected"]);
        update_option('ddle_show_date', (bool) $_POST["ddle_show_date"]);
        update_option('ddle_date_format', (string) $_POST["ddle_date_format"]);
        update_option('ddle_excerpts', (bool) $_POST["ddle_excerpts"]);
        update_option('ddle_chars', (string) $_POST["ddle_chars"]);
        update_option('ddle_comment_link', (bool) $_POST["ddle_comment_link"]);
        update_option('ddle_comment_num', (bool) $_POST["ddle_comment_num"]);
        update_option('ddle_comments_none', (bool) $_POST["ddle_comments_none"]);
        update_option('ddle_limit', (string) $_POST["ddle_limit"]);
        update_option('ddle_exclude', (string) $_POST["ddle_exclude"]);
        update_option('ddle_include', (string) $_POST["ddle_include"]);
        update_option('ddle_max_per_cat', (string) $_POST["ddle_max_per_cat"]);

        echo 'Configuration Updated!';
        echo '</strong></p></div>';

    } ?>

    <div class=wrap>

    <h2>Latest Posts From Each Category v<?php echo $ddle_version; ?></h2>

    <p>For information and updates, please visit:<br />
    <a href="http://www.dagondesign.com/articles/latest-post-from-each-category-plugin-for-wordpress/">http://www.dagondesign.com/articles/latest-post-from-each-category-plugin-for-wordpress/</a></p>


    <form method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>">
    <input type="hidden" name="info_update" id="info_update" value="true" />


    <h3>Options</h3>
    <table width="100%" border="0" cellspacing="0" cellpadding="8">

    <tr valign="top"><td width="35%" align="right">
        Header text
    </td><td align="left">
        <input name="ddle_header" type="text" size="50" value="<?php echo get_option('ddle_header') ?>"/>
    </td></tr>

    <tr valign="top"><td width="35%" align="right">
        Sort order
    </td><td align="left">
        <input name="ddle_sort" type="radio" value="cata" <?php if (get_option('ddle_sort') == "cata") echo "checked='checked'"; ?> />&nbsp;&nbsp; By category (ascending)<br />
        <input name="ddle_sort" type="radio" value="catd" <?php if (get_option('ddle_sort') == "catd") echo "checked='checked'"; ?> />&nbsp;&nbsp; By category (descending)<br />
        <input name="ddle_sort" type="radio" value="datea" <?php if (get_option('ddle_sort') == "datea") echo "checked='checked'"; ?> />&nbsp;&nbsp; By date (ascending)<br />
        <input name="ddle_sort" type="radio" value="dated" <?php if (get_option('ddle_sort') == "dated") echo "checked='checked'"; ?> />&nbsp;&nbsp; By date (descending)<br />
    </td></tr>

    <tr valign="top"><td width="35%" align="right">
        Show link to comments
    </td><td align="left">
        <input type="checkbox" name="ddle_comment_link" value="checkbox" <?php if (get_option('ddle_comment_link')) echo "checked='checked'"; ?>/>
    </td></tr>

    <tr valign="top"><td width="35%" align="right">
        Include number of comments
    </td><td align="left">
        <input type="checkbox" name="ddle_comment_num" value="checkbox" <?php if (get_option('ddle_comment_num')) echo "checked='checked'"; ?>/>
    </td></tr>

    <tr valign="top"><td width="35%" align="right">       
        Include link for posts with no comments
    </td><td align="left">
        <input type="checkbox" name="ddle_comments_none" value="checkbox" <?php if (get_option('ddle_comments_none')) echo "checked='checked'"; ?>/>
    </td></tr>       

    </table>

    <table width="100%" border="0" cellspacing="0" cellpadding="6">

    <tr valign="top"><td width="35%" align="right">
        Turn category names into links
    </td><td align="left">
        <input type="checkbox" name="ddle_cat_links" value="checkbox" <?php if (get_option('ddle_cat_links')) echo "checked='checked'"; ?>/>
    </td></tr>   

    <tr valign="top"><td width="35%" align="right">
        Hide password-protected posts
    </td><td align="left">
        <input type="checkbox" name="ddle_hide_protected" value="checkbox" <?php if (get_option('ddle_hide_protected')) echo "checked='checked'"; ?>/>
    </td></tr>

    <tr valign="top"><td width="35%" align="right">
        Show date after listed posts
    </td><td align="left">
        <input type="checkbox" name="ddle_show_date" value="checkbox" <?php if (get_option('ddle_show_date')) echo "checked='checked'"; ?>/>
    </td></tr>

    <tr valign="top"><td width="35%" align="right">
        Date format
    </td><td align="left">
        <input name="ddle_date_format" type="text" size="30" value="<?php echo get_option('ddle_date_format') ?>"/>
        <br />( Use the standard <a href="http://us3.php.net/date">PHP date() format</a> )
    </td></tr>

    <tr valign="top"><td width="35%" align="right">
        Show first X characters of posts
    </td><td align="left">
        <input type="checkbox" name="ddle_excerpts" value="checkbox" <?php if (get_option('ddle_excerpts')) echo "checked='checked'"; ?>/>
    </td></tr>

    <tr valign="top"><td width="35%" align="right">
        Number of characters to show
    </td><td align="left">
        <input name="ddle_chars" type="text" size="10" value="<?php echo get_option('ddle_chars') ?>"/>
    </td></tr>

    <tr valign="top"><td width="35%" align="right">
        Limit list to X categories
    </td><td align="left">
        <input name="ddle_limit" type="text" size="10" value="<?php echo get_option('ddle_limit') ?>"/>
        (0 = unlimited)
    </td></tr>

    <tr valign="top"><td width="35%" align="right">
        Excluded category IDs
    </td><td align="left">
        <input name="ddle_exclude" type="text" size="30" value="<?php echo get_option('ddle_exclude') ?>"/>
        <br />(comma-separated list of cat IDs to exclude from lists)
    </td></tr>

    <tr valign="top"><td width="35%" align="right">       
    </td><td align="left"><strong>* OR *</strong>
    </td></tr>

    <tr valign="top"><td width="35%" align="right">
        Included category IDs
    </td><td align="left">
        <input name="ddle_include" type="text" size="30" value="<?php echo get_option('ddle_include') ?>"/>
        <br />(comma-separated list of cat IDs to use)
    </td></tr>

    <tr valign="top"><td width="35%" align="right">
        Maximum posts per category
    </td><td align="left">
        <input name="ddle_max_per_cat" type="text" size="10" value="<?php echo get_option('ddle_max_per_cat') ?>"/>
        (0 = unlimited)
    </td></tr>


    </table>

    <div class="submit">
        <input type="submit" name="set_defaults" value="<?php _e('Load Default Options'); ?> &raquo;" />
        <input type="submit" name="info_update" value="<?php _e('Update options'); ?> &raquo;" />
    </div>

    </form>
    </div><?php
}



function dd_last_from_each() {

    global $wpdb, $post, $wp_version;

    $ver = (float)$wp_version;

    $tp = $wpdb->prefix;

    $ddle_header = get_option('ddle_header');
    $ddle_sort = get_option('ddle_sort');
    $ddle_cat_links = get_option('ddle_cat_links');
    $ddle_hide_protected = get_option('ddle_hide_protected');
    $ddle_show_date = get_option('ddle_show_date');
    $ddle_date_format = get_option('ddle_date_format');
    $ddle_excerpts = get_option('ddle_excerpts');
    $ddle_chars = (int)get_option('ddle_chars');
    $ddle_comment_link = (bool)get_option('ddle_comment_link');
    $ddle_comment_num = (bool)get_option('ddle_comment_num');
    $ddle_comments_none = (bool)get_option('ddle_comments_none');
    $ddle_limit = (int)get_option('ddle_limit');
    $ddle_exclude = get_option('ddle_exclude');
    $ddle_include = get_option('ddle_include');
    $ddle_max_per_cat = get_option('ddle_max_per_cat');


    $hide_check = '';
    if ($ddle_hide_protected) {
        $hide_check = " AND post_password = '' ";
    }


    $sort_code = 'ORDER BY cat_name ASC, post_date DESC';

    switch ($ddle_sort) {
        case 'cata':
            $sort_code = 'GROUP BY cat_name, post_date DESC';           
            break;
        case 'catd':
            $sort_code = 'ORDER BY cat_name DESC, post_date DESC';       
            break;   
        case 'datea':
            $sort_code = 'ORDER BY post_date ASC';                        
            break;   
        case 'dated':
            $sort_code = 'ORDER BY post_date DESC';                         
            break;   
    }   


    $the_output = NULL;

    $mysqlnow = current_time('mysql');

    if ($ver < 2.3) {

        $cat_list_code = '';
        if (trim($ddle_exclude) != '') {
            $ddle_exclude = (array)explode(',', $ddle_exclude);
            foreach ($ddle_exclude as $de) {
                $cat_list_code .= " AND cat_ID != '" . trim(mysql_escape_string($de)) . "' ";
            }
        } else if (trim($ddle_include) != '') {
            $ddle_include = (array)explode(',', $ddle_include);
            $cat_list_code .= " AND ( ";
            $cat_tmp = array();
            foreach ($ddle_include as $de) {
                $cat_tmp[] .= "  cat_ID = '" . trim(mysql_escape_string($de)) . "' ";
            }           
            $cat_list_code .= implode(" OR ", $cat_tmp);
            $cat_list_code .= " ) ";
        }

        $last_posts = (array)$wpdb->get_results("
            SELECT post_date, ID, post_title, cat_name, cat_ID
            FROM {$tp}posts, {$tp}post2cat, {$tp}categories
            WHERE {$tp}posts.ID = {$tp}post2cat.post_id
            AND {$tp}categories.cat_ID = {$tp}post2cat.category_id
            AND post_status = 'publish'
            AND post_type != 'page'
            AND post_date < '$mysqlnow' 
            {$cat_list_code}
            {$hide_check}
            {$sort_code}
        ");


    } else { // post 2.3

        $cat_list_code = '';
        if (trim($ddle_exclude) != '') {
            $ddle_exclude = (array)explode(',', $ddle_exclude);
            foreach ($ddle_exclude as $de) {
                $cat_list_code .= " AND {$tp}terms.term_id != '" . trim(mysql_escape_string($de)) . "' ";
            }
        } else if (trim($ddle_include) != '') {
            $ddle_include = (array)explode(',', $ddle_include);
            $cat_list_code .= " AND ( ";
            $cat_tmp = array();
            foreach ($ddle_include as $de) {
                $cat_tmp[] .= "  {$tp}terms.term_id = '" . trim(mysql_escape_string($de)) . "' ";
            }           
            $cat_list_code .= implode(" OR ", $cat_tmp);
            $cat_list_code .= " ) ";
        }

        $last_posts = (array)$wpdb->get_results("
            SELECT post_date,
                ID,
                post_title,
                {$tp}terms.name as cat_name,
                {$tp}terms.term_id as cat_ID
            FROM {$tp}posts, {$tp}terms, {$tp}term_taxonomy, {$tp}term_relationships
            WHERE {$tp}posts.ID = {$tp}term_relationships.object_id
            AND {$tp}term_relationships.object_id = {$tp}posts.ID
            AND {$tp}term_relationships.term_taxonomy_id = {$tp}term_taxonomy.term_taxonomy_id
            AND {$tp}terms.term_id  = {$tp}term_taxonomy.term_id
            AND {$tp}term_taxonomy.taxonomy = 'category'
            AND post_status = 'publish'
            AND post_type = 'post'
            AND post_date < '$mysqlnow'   
            {$cat_list_code}
            {$hide_check}
            {$sort_code}
        ");


    }

    if (empty($last_posts)) {
        return NULL;
    }


    $the_output .= stripslashes($ddle_header);



        if ($ddle_sort == 'datea') {
            $last_posts = array_reverse($last_posts);
        }





    if ((int)$ddle_max_per_cat > 0) {

        $used_cats = array();
        foreach ($last_posts as $posts) {
            $used_cats[$posts->cat_ID] = $ddle_max_per_cat;
        }

        $i = 0;
        foreach ($last_posts as $posts) {
            if ($used_cats[$posts->cat_ID] > 0) {
                $used_cats[$posts->cat_ID] -= 1;
            } else {
                unset($last_posts[$i]);
            }
            $i++;
        }

        $last_posts = array_values($last_posts);

    }



    if ($ddle_sort == 'datea') {
        $last_posts = array_reverse($last_posts);
    }






    $the_output .= '<ul>';
    $limit_check = 0;

    $last_cat = NULL;
    $multi_cats = FALSE;
    if ($ddle_max_per_cat > 1)
        $multi_cats = TRUE;

    $result = array();

    foreach ($last_posts as $posts) {

    if (($ddle_limit == 0) || ($limit_check < $ddle_limit)) {



        if ($last_cat != $posts->cat_ID) {

            if ($last_cat != NULL) {
                $the_output .= ($multi_cats) ? '</ul></li>' : '';
            }

            $the_output .= '<li>';

            $the_output .= '<b>';
            if ($ddle_cat_links) {
                $the_output .= '<a href="' . get_category_link($posts->cat_ID) . '">' . $posts->cat_name . '</a>';
            } else {
                $the_output .= $posts->cat_name;
            }
            $the_output .= '</b>: ';


            $the_output .= ($multi_cats) ? '<ul><li>' : '';

        } else {

            $the_output .= '<li>';

        }




        $the_output .= '<a href="' . get_permalink($posts->ID) . '">' . $posts->post_title . '</a>';


        if ($ddle_show_date) {
            $the_output .= ' - ' . date_i18n($ddle_date_format, strtotime($posts->post_date));
        }


        if ($ddle_comment_link) {

            $result = "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = '1' AND comment_post_ID = '" . $posts->ID . "'";

            $num_comments = $wpdb->get_var($result);

            if ($ddle_comments_none || ($num_comments != 0)) {

                $the_output .= ' - <a href="' . get_permalink($posts->ID) . '#comments">';

                if ($ddle_comment_num) {

                    $the_output .= $num_comments . ' Comment';

                    if ($num_comments != 1) {
                        $the_output .= 's';
                    }

                } else {
                    $the_output .= 'Comments';
                }

                $the_output .= '</a>';

            }


        }


        if ($ddle_excerpts) {

            $the_text = $wpdb->get_var("SELECT post_content FROM " . $tp . "posts WHERE ID=" . $posts->ID);
            $the_output .= '<br />';
            $the_output .= substr(strip_tags(trim($the_text)) , 0, $ddle_chars);
            if (strlen(strip_tags(trim($the_text))) > $ddle_chars) {
                $the_output .= "...";
            }
        }




        $the_output .= '</li>';

        $last_cat = $posts->cat_ID;


    } // end limit if

    $limit_check++;

    }

    $the_output .= '</ul>';

    $the_output .= ($multi_cats) ? '</li></ul>' : '';


    return $the_output;


}


function ddle_generate($content) {

    if (strpos($content, "<!-- ddlastfromeach -->") !== FALSE) {
        $content = str_replace("<!-- ddlastfromeach -->", dd_last_from_each(), $content);
    }

    return $content;
}

add_filter('the_content', 'ddle_generate');

add_action('admin_menu', 'ddle_add_option_pages');

?>
share|improve this answer
    
thanks yaar.try to Complete with Thumbanil Option.It's More Important for this plugin.... –  Ramkumar Jun 3 '11 at 7:30
4  
Please stick with single account when answering your own questions. Ramping up reputation via multiple accounts is obviously against the rules. –  Rarst Jun 3 '11 at 11:26
add comment

Just add the below given output next to post title output:

$the_output .=  '<a href="' . get_category_link($posts->cat_ID) . '">' .get_the_post_thumbnail($posts->ID) . '</a>';

post_title output is:

$the_output .= '<a href="' . get_permalink($posts->ID) . '">' . $posts->post_title . '</a>';
share|improve this answer
1  
you should properly format your answer, codes into backtricks or followed by 4 spaces, you can read Editing Help to know how to properly format codes in answers –  amit Sep 15 '12 at 17:29
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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