_excerpt()、get_the_excerpt()和the_content()都杀死了“The Loop”

时间:2011-06-28 作者:cmcculloh

在调用\\u摘录()之前,\\u permalink()会显示正确的内容。之后,它不会。。。

            <?php 
            global $query_string;

            //strip out the "pagename=blog" so that the query will grab all of the posts instead of the content of the blog page
            $query_string = preg_replace("/pagename=[a-zA-Z0-9]*/", "", $query_string);
            query_posts( $query_string . "posts_per_page=3" );

            if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
                <li class="post-listing"> 
                        <div class="no-col">
                            <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3> 
                            <p class="meta">Posted on <?php print get_the_date(); ?> by <?php the_author(); ?> in <?php the_category(\', \') ?></p>
                        <!--
                        <?php the_permalink(); ?>
                        -->

                            <?php the_excerpt(); ?>
                        <!--
                        <?php the_permalink(); ?>
                        -->

                            <p class="meta"><?php the_tags(\'\') ?></p>
                            <div class="navigation"><a class="alignright" href="<?php the_permalink(); ?>">READ MORE &raquo;</a></div>
                        </div>
                </li> 
            <?php endwhile; else: ?>
                <li><?php _e(\'Sorry, no posts matched your criteria.\'); ?></li>
            <?php endif; ?>
我有一个名为“blog.php”的页面,我将其定义为一个名为“blog”的模板,人们可以将其应用于他们创建的页面(这样他们就可以拥有一个博客列表页面,我知道可能有更好的方法,但这是出于各种原因而采用的解决方案)。

它工作得很好,但现在(在我写完一个月后)它突然停止了工作。我想,我已经将问题缩小到了\\u extract()调用。permalink在此之前显示得很好,但之后会显示出来,而不是为博客显示permalink。php页面。。。我认为,\\u extract()将所有内容完全排除在“循环”之外,然后它看到的当前帖子就变成了使用博客的页面。php模板(它将该页面的内容吐出,然后停止,就好像该页面是循环中的最后一篇文章一样)。

如果我将“the\\u extract()”替换为“the\\u content()”或“get\\u the\\u extract()”,也会发生这种情况

1 个回复
最合适的回答,由SO网友:cmcculloh 整理而成

我已经安装了“Facebook评论WordPress”插件。此插件将筛选器附加到the_content();. 过滤器包含该行wp_reset_query();. 对此进行注释可以解决问题(虽然这是次优的,因为现在客户端将无法更新插件)。

结束

相关推荐

Custom loop off by one post

在我的循环中,我想显示9篇不包括类别X、Y、Z和所有粘性帖子的帖子。在帖子3和5之间,我想放置一个带有自定义模板的粘性帖子。以下操作有效,但它将粘性帖子视为第一个循环中的4个帖子,这会导致丢失一个常规帖子。我必须使用WP 3.0.3<?php if (have_posts()) : ?> <?php $count = 0;?> <?php $sticky_posts = get_option(\'sticky_posts\'