Template Parts | WordPress.org

Hi Bill

I’ve tried following the instructions you laid out here:


But I can’t get it to work. These are the steps I’ve taken so far:

1. I created a partials subdirectory in my theme folder.

2. I created a new partial and added it to the partials subdirectory (for following your example in your docs, this was dps-small.php)

3. I added the following snippet to Code Snippets:


 * Template Parts with Display Posts Shortcode
 * @author Bill Erickson
 * @see https://www.billerickson.net/template-parts-with-display-posts-shortcode
 * @param string $output, current output of post
 * @param array $original_atts, original attributes passed to shortcode
 * @return string $output
function be_dps_template_part( $output, $original_atts ) {

	// Return early if our "layout" attribute is not specified
	if( empty( $original_atts['layout'] ) )
		return $output;
	get_template_part( 'partials/dps', $original_atts['layout'] );
	$new_output = ob_get_clean();
	if( !empty( $new_output ) )
		$output = $new_output;
	return $output;
add_action( 'display_posts_shortcode_output', 'be_dps_template_part', 10, 2 );

4. I updated my shortcode to [display-posts layout="small"]

And nothing happens. I’m missing something…

Appreciate your attention.


This site will teach you how to build a WordPress website for beginners. We will cover everything from installing WordPress to adding pages, posts, and images to your site. You will learn how to customize your site with themes and plugins, as well as how to market your site online.

Buy WordPress Transfer