Global variable 'post' and 'id' clobbered.
-
After the widget is executed, the Global $post and $id are changed to the last post accessed by the widget. This was causing later code, still expecting those globals to be representing the content of the page, to be accessing incorrect values, such as comments.
I changed the widget template (recent-posts-widget.php) to the following:
<?php echo $before_widget; ?> <div class="frp-widget-wrapper frp-widget-<?php print $instance['theme'] ?>"> <?php if ( ! empty( $instance['title'] ) ) { echo $before_title . $instance['title'] . $after_title; if ( $instance['all_posts_link_title'] ): ?> <a href="<?php print $term_link; ?>" class="frp-all-category-news frp-all-category-news-header"><?php print $instance['all_posts_title']; ?></a> <?php endif; } ?> <div class="frp-clear"></div> <ul class="frp-widget"> <?php $old_id = $GLOBALS['id']; $old_post = $GLOBALS['post']; while ( have_posts() ): the_post(); ?> <li class="frp-news"> <?php echo wpautop( do_shortcode( $instance['template'] ) ); ?> </li> <?php endwhile; $GLOBALS['post'] = $old_post; $GLOBALS['id'] = $old_id; ?> </ul> <?php if ( $instance['all_posts_link_footer'] ): ?> <div class="frp-all-category-news frp-all-category-news-footer"><a href="<?php print $term_link; ?>"><?php print $instance['all_posts_title']; ?></a></div> <?php endif; ?> </div> <?php echo $after_widget; ?>
Viewing 2 replies - 1 through 2 (of 2 total)
Viewing 2 replies - 1 through 2 (of 2 total)
- The topic ‘Global variable 'post' and 'id' clobbered.’ is closed to new replies.