Title: Recent posts loop inside shortcode function
Last modified: August 24, 2016

---

# Recent posts loop inside shortcode function

 *  [IModernDesign](https://wordpress.org/support/users/imoderndesign/)
 * (@imoderndesign)
 * [11 years, 1 month ago](https://wordpress.org/support/topic/recent-posts-loop-inside-shortcode-function/)
 * **Hello,**
 * I’m trying to create a custom recent posts shortcode in a custom theme , but 
   I don’t know how to add the loop inside the shortcode function.
 * please help.
 *     ```
       ///////////////////////////////
       // Recent Posts Shortcode
       //////////////////////////////
   
       add_shortcode( 'recent_posts', 'recent_posts' );
   
       function recent_posts() {
         $atts = array(
       		'cat' => '',
       		'posts' => ''
       	);
   
       	$recent_post_query = new WP_Query($atts);
   
         if ( $demo_posts->have_posts() ) { while( $demo_posts->have_posts() ) { $demo_posts->the_post();
   
       			$output .= 
   
         $recent_post_query = new WP_Query( 'category_name='.$atts['cat'].'&posts_per_page='.$atts['posts'].'.' );
   
       '<div class="content_box">
           <div class="showcase_post">
             <div class="post_thumb"> <a href="'. the_permalink(); ?>.'">
        <?php
   
       	$no_image = '<img src="'.get_bloginfo('template_directory').'/images/blank.gif">' ;
       	// Youtube
       	$youtube_url = get_post_meta($post->ID, '_youtube_url', true);
       	$youtube_thumb = '<iframe class="video_thumb" src="https://www.youtube.com/embed/'.$youtube_url.'?rel=0&modestbranding=1&autohide=1&showinfo=0" frameborder="0" allowfullscreen></iframe>';
   
       	// Vimeo
       	$vimeo_url = get_post_meta($post->ID, '_vimeo_url', true);
       	$vimeo = '<iframe src="//player.vimeo.com/video/'.$vimeo_url.'?title=0&byline=0&portrait=0" width="WIDTH" height="HEIGHT" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
   
           if     ( ( has_post_thumbnail()) and empty($vimeo_url) and empty($youtube_url)) {
       		echo the_post_thumbnail('large') ;
       		} 
   
       	elseif ( !( has_post_thumbnail()) and !empty($youtube_url) and empty($vimeo_url)) {
       		echo $youtube_thumb ;
       		}
   
       	elseif ( !( has_post_thumbnail()) and empty($youtube_url) and !empty($vimeo_url)) {
       		echo $vimeo ;
       		}
   
       	// Order
   
       	elseif ( ( has_post_thumbnail()) and !empty($youtube_url) and !empty($vimeo_url)) {
       		echo $youtube_thumb ;
       		}
   
       	elseif ( ( has_post_thumbnail()) and !empty($youtube_url) and empty($vimeo_url)) {
       		echo $youtube_thumb ;
       		}
   
       	elseif ( ( has_post_thumbnail()) and empty($youtube_url) and !empty($vimeo_url)) {
       		echo $vimeo ;
       		}
   
       	elseif ( !( has_post_thumbnail()) and !empty($youtube_url) and !empty($vimeo_url)) {
       		echo $youtube_thumb ;
       		}
   
       	elseif ( !( has_post_thumbnail()) and empty($youtube_url) and empty($vimeo_url)) {
       		echo $no_image ;
       		}
   
       ?>
       </a>
       </div>
       <!-- End Post Thumb -->
   
       <div class="post_box">
         <div class="post_info"> <a href="<?php the_permalink(); ?>">
           <h3><?php echo substr(the_title('', '', FALSE), 0, 25); ?>..</h3>
           </a>
           </h3>
           <ul>
             <li>
               <p><i class="fa fa-folder-open"></i>
                 <?php the_category(); ?>
               </p>
             </li>
             <li>
               <p>
             <li><i class="fa fa-calendar"></i>
               <?php the_date();?>
               </p>
             </li>
             <li>
               <p><i class="fa fa-user"></i>
               <p>by:
                 <?php the_author_posts_link(); ?>
                 ></p>
               </p>
             </li>
             <li>
               <p><i class="fa fa-comment"></i>
                 <?php comments_number( 'no comments', 'one comment', '% comments' ); ?>
                 .</p>
             </li>
           </ul>
         </div>
         <!-- End post info -->
   
         <div class="the_excerpt_post">
           <p>
             <?php the_excerpt(); ?>
           </p>
         </div>
         <!-- End The Excerpt Post --> 
   
       </div>
       <!-- End The Excerpt -->
   
       </div>
       <!-- End Post Box -->
   
       </div>
       <!-- End Content Box  -->'
   
       <?php endwhile;
        wp_reset_postdata();
        else :
       <p>'. _e( 'Sorry, no posts matched your criteria.' ) .'</p>
        endif;  
   
           ;}
   
         }
   
       	return $output;
       }
       ```
   

The topic ‘Recent posts loop inside shortcode function’ is closed to new replies.

 * In: [Fixing WordPress](https://wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 0 replies
 * 1 participant
 * Last reply from: [IModernDesign](https://wordpress.org/support/users/imoderndesign/)
 * Last activity: [11 years, 1 month ago](https://wordpress.org/support/topic/recent-posts-loop-inside-shortcode-function/)
 * Status: not resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
