Title: Rendering problem with blog short code
Last modified: August 20, 2016

---

# Rendering problem with blog short code

 *  Resolved [wp-fan](https://wordpress.org/support/users/wp-fan/)
 * (@wp-fan)
 * [13 years, 2 months ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/)
 * Hello
 * I am having a weird issue with TOC+ and the [“construct” theme from mysitemayway](http://mysitemyway.com/theme/construct-wordpress-theme/).
   
   The theme offers shortcode to list all posts of a certain blog-category. Whenever
   I use that shortcode, the Table of content does not work.
 * Please see these two pages as examples:
 * TOC+ working okay, no “show all blogposts” shortcode added:
    [http://wp10600376.server-he.de/test-with-toc/](http://wp10600376.server-he.de/test-with-toc/)
 * TOC not showing with “show all blogposts” shortcode added:
    [http://wp10600376.server-he.de/test-with-toc-and-blog-shortcode/](http://wp10600376.server-he.de/test-with-toc-and-blog-shortcode/)
 * I have had [a conversion about this over at the themes support forum](http://mysitemyway.com/support/topic/rendering-bug-after-adding-blog-short-code)
   with further details. The support over there is asking me to ask about this issue
   here and see what the TOC+ plugin author says. Any opinions on this, Michael 
   T?
 * BTW, great plugin. Wish I could make it work fully on the pages with blog-post
   short code, too. And fyi, [this description from yesterday](http://wordpress.org/support/topic/conflicts-with-list-category-posts?replies=2)
   sounds very much alike the problem I am describing. Michael, any thoughts on 
   this?
 * Regards,
 * Thomas
 * [http://wordpress.org/extend/plugins/table-of-contents-plus/](http://wordpress.org/extend/plugins/table-of-contents-plus/)

Viewing 15 replies - 1 through 15 (of 16 total)

1 [2](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/page/2/?output_format=md)
[→](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/page/2/?output_format=md)

 *  [conjur3r](https://wordpress.org/support/users/conjur3r/)
 * (@conjur3r)
 * [13 years, 2 months ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/#post-3623659)
 * Are you using auto insertion or the [toc] shortcode?
 * My current thought would be the “show all blogposts” shortcode is using WP_Query
   coupled with the_post to create its listings. Doing so is fine but it must be
   followed by wp_reset_postdata to restore the current page’s request ([ref](https://codex.wordpress.org/Class_Reference/WP_Query)).
 * If this is the case then when the real the_content triggers, TOC+ is not being
   presented the correct content for the page. Just a guess at this stage – I don’t
   have the theme and there is no free version to verify but you should be able 
   to provide this train of thought to the authors to follow through?
 *  [conjur3r](https://wordpress.org/support/users/conjur3r/)
 * (@conjur3r)
 * [13 years, 2 months ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/#post-3623660)
 * I checked your support thread and can see that the [suggestion](http://mysitemyway.com/support/topic/rendering-bug-after-adding-blog-short-code#post-117839)
   had been made to use wp_reset_postdata. The thing is, this needs to be at the
   bottom of the function call, not at the top. The extract part normally happens
   before the grunt of the shortcode magic occurs.
 *     ```
       function shortcode_abcd( $atts )
       {
         ...
         ...
         wp_reset_postdata();
         return ...
       }
       ```
   
 *  Thread Starter [wp-fan](https://wordpress.org/support/users/wp-fan/)
 * (@wp-fan)
 * [13 years, 2 months ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/#post-3623700)
 * Hello Michael,
 * > Are you using auto insertion or the [toc] shortcode?
 * I am using the [toc] shortcode.
 * In the function, there is also a ‘wp_reset_query();’
 * I have tried inserting `wp_reset_postdata(); before, after and without it, no
   change yet.
 * The code of the whole function looks like this:
 *     ```
       function _blog_shortcode( $args = array() ) {
       		global $post, $wp_rewrite, $wp_query, $mysite;
   
       		extract( $args['atts'] );
   
       		$out = '';
   
       		$showposts = trim( $showposts );
       		$column = ( !empty( $column ) ) ? trim( $column ) : '3';
       		$thumb = ( !empty( $thumb ) ) ? trim( $thumb ) : 'medium';
       		$offset = ( isset( $offset ) ) ? trim( $offset ) : '';
       		$post_in = ( !empty($post_in) ) ? explode(",", trim( $post_in )) : '';
       		$category_in = ( !empty($category_in) ) ? explode(",", trim( $category_in )) : '';
       		$tag_in = ( !empty($tag_in) ) ? explode(",", trim( $tag_in )) : '';
   
       		if( is_front_page() ) {
       			$_layout = mysite_get_setting( 'homepage_layout' );
       			$images = ( $_layout == 'full_width' ? 'images' : ( $_layout == 'left_sidebar' ? 'small_sidebar_images' : 'big_sidebar_images' ) );
       		} else {
       			$post_obj = $wp_query->get_queried_object();
       			$_layout = get_post_meta( $post_obj->ID, '_layout', true );
       			$template = get_post_meta( $post_obj->ID, '_wp_page_template', true );
       			$images = ( $_layout == 'full_width' ? 'images' : ( $_layout == 'left_sidebar' || $template == 'template-featuretour.php' ? 'small_sidebar_images' : 'big_sidebar_images' ) );
       		}
   
       		$post_img = '';
   
       		$blog_query = new WP_Query();
   
       		if( trim( $pagination ) == 'true' ) {
   
       			if( is_numeric( $offset ) ) {
       				$mysite->offset = $offset;
       				$mysite->posts_per_page = $showposts;
       				add_filter('post_limits', 'my_post_limit');
       			}
   
       			$paged = mysite_get_page_query();
       			$blog_query->query(array(
       				'post__in' => $post_in,
       				'category__in' => $category_in,
       				'tag__in' => $tag_in,
       				'post_type' => 'post',
       				'posts_per_page' => $showposts,
       				'paged' => $paged,
       				'offset' => $offset,
       				'ignore_sticky_posts' => 1
       			));
   
       		} else {
   
       			$blog_query->query(array(
       				'post__in' => $post_in,
       				'category__in' => $category_in,
       				'tag__in' => $tag_in,
       				'post_type' => 'post',
       				'showposts' => $showposts,
       				'nopaging' => 0,
       				'offset' => $offset,
       				'ignore_sticky_posts' => 1
       			));
       		}
   
       		if( $blog_query->have_posts() ) :
   
       		$img_sizes = $mysite->layout[$images];
       		$width = '';
       		$height = '';
   
       		if( $args['type'] == 'blog_grid' ) {
       			switch( $column ) {
       				case 1:
       					$main_class = 'post_grid one_column_blog';
       					$post_class = 'post_grid_module';
       					$content_class = 'post_grid_content';
       					$img_class = 'post_grid_image';
       					$excerpt_lenth = 400;
       					$width = $img_sizes['one_column_blog'][0];
       					$height = $img_sizes['one_column_blog'][1];
       					break;
       				case 2:
       					$main_class = 'post_grid two_column_blog';
       					$post_class = 'post_grid_module';
       					$content_class = 'post_grid_content';
       					$img_class = 'post_grid_image';
       					$column_class = 'one_half';
       					$excerpt_lenth = 150;
       					$width = $img_sizes['two_column_blog'][0];
       					$height = $img_sizes['two_column_blog'][1];
       					break;
       				case 3:
       					$main_class = 'post_grid three_column_blog';
       					$post_class = 'post_grid_module';
       					$content_class = 'post_grid_content';
       					$img_class = 'post_grid_image';
       					$column_class = 'one_third';
       					$excerpt_lenth = 75;
       					$width = $img_sizes['three_column_blog'][0];
       					$height = $img_sizes['three_column_blog'][1];
       					break;
       				case 4:
       					$main_class = 'post_grid four_column_blog';
       					$post_class = 'post_grid_module';
       					$content_class = 'post_grid_content';
       					$img_class = 'post_grid_image';
       					$column_class = 'one_fourth';
       					$excerpt_lenth = 50;
       					$width = $img_sizes['four_column_blog'][0];
       					$height = $img_sizes['four_column_blog'][1];
       					break;
       			}
   
       		} else {
   
       			if( $args['type'] == 'blog_list' ) {
       				switch( $thumb ) {
       					case 'small':
       						$main_class = 'post_list small_post_list';
       						$post_class = 'post_list_module';
       						$content_class = 'post_list_content';
       						$img_class = 'post_list_image';
       						$excerpt_lenth = 180;
       						$width = $img_sizes['small_post_list'][0];
       						$height = $img_sizes['small_post_list'][1];
       						break;
       					case 'medium':
       						$main_class = 'post_list medium_post_list';
       						$post_class = 'post_list_module';
       						$content_class = 'post_list_content';
       						$img_class = 'post_list_image';
       						$excerpt_lenth = 180;
       						$width = $img_sizes['medium_post_list'][0];
       						$height = $img_sizes['medium_post_list'][1];
       						break;
       					case 'large':
       						$main_class = 'post_list large_post_list';
       						$post_class = 'post_list_module';
       						$content_class = 'post_list_content';
       						$img_class = 'post_list_image';
       						$excerpt_lenth = 180;
       						$width = $img_sizes['large_post_list'][0];
       						$height = $img_sizes['large_post_list'][1];
       						break;
       				}
       			}
       		}
   
       		$filter_args = array( 'width' => $width, 'height' => $height, 'img_class' => $img_class, 'link_class' => 'blog_sc_image_load', 'preload' => ( isset( $mysite->mobile ) ? false : true ), 'post_content' => $post_content, 'disable' => $disable, 'column' => $column, 'thumb' => $thumb, 'type' => $args['type'], 'shortcode' => true, 'echo' => false );
   
       		$out .= ( $args['type'] == 'blog_grid' ) ? '<div class="' .  $main_class . '">' : '<ul class="' . $main_class . '">';
   
       		$i=1;
       		while( $blog_query->have_posts() ) : $blog_query->the_post();
   
       		$post_id = get_the_ID();
   
       		$video = get_post_meta( $post_id, '_featured_video', true);
   
       		if ( !empty( $video ) )
       			$filter_args = array_merge( array( 'video' => $video ), $filter_args );
   
       		$out .= ( $args['type'] == 'blog_list' ? '' : ( $column != 1 ? '<div class="' . ( $i%$column == 0 ? $column_class . ' last' : $column_class ) . '">' : '' ) );
   
       		$out .= ( $args['type'] == 'blog_grid' ) ? '<div class="' . join( ' ', get_post_class( $post_class, $post_id ) ) . '">' : '<li class="' . join( ' ', get_post_class( $post_class, $post_id ) ) . '">';
   
       		$out .= mysite_before_post_sc( $filter_args );
   
       		$out .= '<div class="' . $content_class . '">';
   
       		$out .= mysite_before_entry_sc( $filter_args );
   
       		$out .= '<div class="post_excerpt">';
       		if( strpos( $disable, 'content' ) === false ) {
       			ob_start();
       			mysite_post_content( $filter_args );
       			$out .= ob_get_clean();
       		}
       		$out .= '</div>';
   
       		$out .= mysite_after_entry_sc( $filter_args );
   
       		$out .= '</div><!-- .post_class -->';
   
       		$out .= ( $args['type'] == 'blog_grid' ) ? '</div>' : '</li>';
   
       		$out .= ( $args['type'] == 'blog_list' ? '' : ( $column != 1 ? '</div>' : '' ) );
   
       		if( $args['type'] == 'blog_grid' ) {
       			if( ( $i % $column ) == 0 )
       				$out .= '<div class="clearboth"></div>';
       		}
   
       		$i++;
   
       		endwhile;
   
       		$out .= ( $args['type'] == 'blog_grid' ) ? '</div>' : '</ul>';
   
       		if( $pagination == 'true' ) {
       			$out .= mysite_pagenavi( '', '', $blog_query );
       		}
   
       		endif;
   
       		if( ( is_numeric( $offset ) ) && ( trim( $pagination ) == 'true' ) )
       			remove_filter('post_limits', 'my_post_limit');
   
       		wp_reset_query();
   
       		return '<!--start_raw-->' . $out . '<!--end_raw-->';
       	}
       ```
   
 * Any ideas?
 * BTW, could [this problem](http://wordpress.org/support/topic/conflicts-with-list-category-posts?replies=2)(
   ant its solution) have something to do with the issue I am describing?
 *  [conjur3r](https://wordpress.org/support/users/conjur3r/)
 * (@conjur3r)
 * [13 years, 2 months ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/#post-3623705)
 * I tried loading the code into a site but it referenced a few more things provided
   by the theme so didn’t get anywhere.
 * To verify if the content for the page is changing, on line 1499 of the version
   1303.1, add:
 * `var_dump($content);`
 * Reload your browser and see if it is printing out the content for the actual 
   requested page or is it one of the post listings?
 *  [conjur3r](https://wordpress.org/support/users/conjur3r/)
 * (@conjur3r)
 * [13 years, 2 months ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/#post-3623706)
 * Also, I doubt you’ve got the same problem as that other person reported. It may
   be the same kinda problem (eg things altering the main query) but won’t have 
   the same resolution.
 *  Thread Starter [wp-fan](https://wordpress.org/support/users/wp-fan/)
 * (@wp-fan)
 * [13 years, 2 months ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/#post-3623718)
 * Sorry my answer takes that long, I did not have proper internet access for a 
   while.
 * I added `var_dump($content);`to line 1499 of toc.php
 * the “surrounding” of the code looks like this now:
 *     ```
       function the_content( $content )
       		{
       			global $post;
       			$items = $css_classes = $anchor = '';
       			$custom_toc_position = strpos($content, '<!--TOC-->');
       			$find = $replace = array();
       var_dump($content);
       			if ( $this->is_eligible($custom_toc_position) ) {
       ```
   
 * Is this correct?
 * Here are the results (I will not remove the variable until your next reaction
   in this thread):
    [http://wp10600376.server-he.de/test-with-toc/](http://wp10600376.server-he.de/test-with-toc/)
   [http://wp10600376.server-he.de/test-with-toc-and-blog-shortcode/](http://wp10600376.server-he.de/test-with-toc-and-blog-shortcode/)
 * Kind regards,
 * Thomas
 *  [conjur3r](https://wordpress.org/support/users/conjur3r/)
 * (@conjur3r)
 * [13 years, 2 months ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/#post-3623721)
 * I’ve copied the HTML for both pages so you can put it back to normal now.
 * Have you used [no_toc] anywhere? What about in any of the articles it lists at
   the bottom?
 * Checking the source code for the page that doesn’t work, I can see that `<!--
   TOC-->` is inserted at the top. This means that the shortcode part of TOC+ did
   actually trigger as it checks to see if it meets your criteria for insertion,
   then changes from `[toc]` to `<!--TOC-->` when it does.
 * If you see this in the source, it means that `the_content` hasn’t been triggered
   properly. Perhaps the `the_content` filter may have been disabled, or it stopped
   continuing after the theme’s shortcode? Could you check with the theme developers
   to see if they are changing the execution flow in any way when using the ‘show
   all blogposts’ shortcode?
 * Another test would be to use some other plugin that also makes use of the_content,
   such as Jetpack’s sharing buttons, or WP Socializer. Both of these add social
   media sharing buttons to the content.
 *  Thread Starter [wp-fan](https://wordpress.org/support/users/wp-fan/)
 * (@wp-fan)
 * [13 years, 2 months ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/#post-3623732)
 * Here is [what the support has to say](http://mysitemyway.com/support/topic/rendering-bug-after-adding-blog-short-code?replies=14#post-119092):
 * > We create a new WP_Query instance for the blog shortcodes so it shouldn’t be
   > messing with the default query. The code can be found in /wp-content/themes/[
   > your_theme]/lib/shortcodes/14-blog.php.
   > I believe the only place we mess with the default query is in /wp-content/themes/[
   > your_theme]/lib/functions/theme.php on lines 1480 – 1540.
   > We exclude some categories that the user specifies on our blog page and then
   > in the archive / search pages we exclude the same categories and set the post
   > type to only posts.
 * I can provide you with the full code. How could be do that? Email me via the 
   test-site linked above?
 *  [conjur3r](https://wordpress.org/support/users/conjur3r/)
 * (@conjur3r)
 * [13 years, 2 months ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/#post-3623734)
 * What about these things:
 * > Have you used [no_toc] anywhere? What about in any of the articles it lists
   at the bottom?
 * > Another test would be to use some other plugin that also makes use of the_content,
   such as Jetpack’s sharing buttons, or WP Socializer. Both of these add social
   media sharing buttons to the content.
 *  Thread Starter [wp-fan](https://wordpress.org/support/users/wp-fan/)
 * (@wp-fan)
 * [13 years, 2 months ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/#post-3623736)
 * Sorry, I meant to answer those, but I was probably too tired and not concentrated.
 * I have searched the code of the articles listed in the bottom in raw html editor.
   None of those have [no_toc] anywhere. Those who do not show a generated TOC do
   not qualify because they have don’t have the appropriate amount of headlines.
 * I have activated Jetpack’s sharing buttons, please check if you find the behaviour
   or signs you are looking for.
 * This article still has the TOC:
    [http://wp10600376.server-he.de/test-with-toc/](http://wp10600376.server-he.de/test-with-toc/)
 * this one shows the sharing buttons beneath the listed articles in the bottom,
   but still no TOC:
    [http://wp10600376.server-he.de/test-with-toc-and-blog-shortcode/](http://wp10600376.server-he.de/test-with-toc-and-blog-shortcode/)
 * Shall I provide you with the full code of the .php files the theme support mentions?
   If yes, please contact me through the website. And thanks for holding on to this
   matter for so long…
 * Regards,
 * Thomas
 *  [conjur3r](https://wordpress.org/support/users/conjur3r/)
 * (@conjur3r)
 * [13 years, 2 months ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/#post-3623740)
 * Hi Thomas
 * Unfortunately that confirms that the theme, using the show all blogposts shortcode,
   is doing something with the main query loop as it is not printing out the sharing
   buttons for the actual page. The sharing buttons you see at the bottom are actually
   for the ‘Lernen in der Krise’ article. This is confirmed because the post list
   is surrounded by `<!--start_raw-->` and `<!--end_raw-->`. If it was behaving 
   properly, there should have been some share buttons after `<!--end_raw-->` so
   you’ve just identified a problem with the theme.
 * You’ll need to follow it up with the theme developers (particularly as you’ve
   purchased it) as it isn’t a problem with TOC+ nor with Jetpack nor anything else
   that uses the_content.
 *  Thread Starter [wp-fan](https://wordpress.org/support/users/wp-fan/)
 * (@wp-fan)
 * [13 years, 1 month ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/#post-3623741)
 * Hi Michael,
 * thank you so much for your answer. I really very much appreciate your help here.
   I will forward this information to the theme developers.
 * Would you allow one additional question to make sure I fully understand?
 * You mention that
 * > Unfortunately that confirms that the theme, using the show all blogposts shortcode,
   > is doing something with the main query loop as it is not printing out the sharing
   > buttons for the actual page.
 * On other pages and articles, I do see those sharing buttons:
 * Article:
    [http://wp10600376.server-he.de/zukunftskonferenz-moderator-teamentwicklung/](http://wp10600376.server-he.de/zukunftskonferenz-moderator-teamentwicklung/)
 * Page:
    [http://wp10600376.server-he.de/arbeitsfelder/](http://wp10600376.server-he.de/arbeitsfelder/)
 * Does your statement mean that the theme is presumably messing things up only 
   when the “show category articles” shortcode is being used?
 * Thanks for clarification. And let’s see what the developers at mysitemyway say.
 * Kind regards,
 * Thomas
 *  [conjur3r](https://wordpress.org/support/users/conjur3r/)
 * (@conjur3r)
 * [13 years, 1 month ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/#post-3623742)
 * > Does your statement mean that the theme is presumably messing things up only
   > when the “show category articles” shortcode is being used?
 * Yep. If you require further confirmation, try other plugins (like WP Socializer)
   which uses the_content as well. WP Socializer adds buttons to the top of the 
   page.
 *  Thread Starter [wp-fan](https://wordpress.org/support/users/wp-fan/)
 * (@wp-fan)
 * [13 years, 1 month ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/#post-3623748)
 * It seems like I am stuck in the middle of two dev teams….
 * The mysitemyway support says:
 * > Our blog shortcode does not mess with the main query. I don’t know what else
   > to tell you. I would try finding another plugin that does the same thing.
 * What would you do in my shoes? Switch the theme? Try another TOC plugin? Leave
   wordpress as a whole? ;=)
 * Sigh….
 *  [conjur3r](https://wordpress.org/support/users/conjur3r/)
 * (@conjur3r)
 * [13 years, 1 month ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/#post-3623749)
 * It may not mess with the main query, perhaps not triggering the_content, who 
   knows? Essentially, if other plugins that use the_content don’t work under the
   same scenario, then it points at the theme. By all means try other TOC plugins.
 * If I was in your shoes, I’d be experimenting with other plugins that use the_content
   and test. If they all don’t work, then that reaffirms a problem with the theme
   so either persevere with them or find combination that works for you (other plugins,
   or other themes).
 * Another option may be to find a plugin that does post listings so you don’t have
   to use the theme’s shortcode. [http://wordpress.org/extend/plugins/search.php?q=post+list](http://wordpress.org/extend/plugins/search.php?q=post+list)

Viewing 15 replies - 1 through 15 (of 16 total)

1 [2](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/page/2/?output_format=md)
[→](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/page/2/?output_format=md)

The topic ‘Rendering problem with blog short code’ is closed to new replies.

 * ![](https://ps.w.org/table-of-contents-plus/assets/icon-256x256.png?rev=1151771)
 * [Table of Contents Plus](https://wordpress.org/plugins/table-of-contents-plus/)
 * [Support Threads](https://wordpress.org/support/plugin/table-of-contents-plus/)
 * [Active Topics](https://wordpress.org/support/plugin/table-of-contents-plus/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/table-of-contents-plus/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/table-of-contents-plus/reviews/)

## Tags

 * [shortcode](https://wordpress.org/support/topic-tag/shortcode/)

 * 16 replies
 * 2 participants
 * Last reply from: [wp-fan](https://wordpress.org/support/users/wp-fan/)
 * Last activity: [12 years, 10 months ago](https://wordpress.org/support/topic/rendering-problem-with-blog-short-code/page/2/#post-3623795)
 * Status: resolved