_Excerpt显示每个帖子的摘录

时间:2018-01-29 作者:Mike Danthine

我有一个用于输出所有帖子的简单页面(index.php),不幸的是,摘录显示了所有条目的摘录。怎么了?

                    <?php while (have_posts()) : the_post(); ?>
                    <div class="col col-md-6">
                        <div class="thumbnail equalize-content">
                            <?php the_post_thumbnail(); ?>
                            <div class="caption">
                                <span class="date"><time datetime="<?php the_time(\'Y-m-d\'); ?>"
                                                         pubdate><?php the_date(); ?></time></span>
                                <a href="<?php esc_url(the_permalink()); ?>" title="<?php the_title(); ?>"
                                   rel="bookmark">
                                    <h3><?php the_title(); ?></h3></a>
                                <p>

                                    <?php the_excerpt(); ?>
                                </p>
                            </div>
                            <a class="btn" href="<?php esc_url(the_permalink()); ?>">Artikel lesen</a>
                        </div>
                    </div>
                <?php endwhile; ?>

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

看看你的网站,问题似乎有点不同。

对于每个帖子,都会显示第一篇帖子的摘录。不止一次,而是三次。这只发生在网站上,而不是RSS提要或REST API上。

由于您提供的代码看起来不错,所以您的网站上似乎有什么东西在以其他方式干扰摘录。这可以是一个插件或是你的主题中混合了全局$post 对象或挂钩到the_excerptget_the_excerpt 过滤器。

要对此进行调试,您应该首先禁用所有插件,以查看错误是否仍然存在。

之后,你可以get_the_excerpt 查看是否已使用良好的ol修改post对象\'var_dump() (或者只使用Xdebug):

add_filter( \'get_the_excerpt\', function( $excerpt, $post ) {
  var_dump( $excerpt, $post );
  return $excerpt;
}, 10, 2 );
如果输出看起来不正确,请使用以下内容查看哪些其他函数连接到此过滤器:

global $wp_filter;
print_r( $wp_filter[\'get_the_excerpt\'] );
如果一切正常,检查the_excerpt 过滤器:

add_filter( \'the_excerpt\', function( $excerpt ) {
  var_dump( $excerpt, get_post() );
  return $excerpt;
} );

global $wp_filter;
print_r( $wp_filter[\'the_excerpt\'] );

结束