为什么_excerpt()函数在主页上返回摘录,在侧边栏中返回裁剪过的内容?

时间:2014-08-11 作者:Macejkou

我有这个代码,可以在主页上显示4篇类型为“推荐”的帖子:

<?php
            $custom_posts = get_posts([
                \'numberposts\' => 4,
                \'post_type\' => \'testimonial\'
            ]);
            ?>

            <?php foreach ($custom_posts as $post) : setup_postdata($post); ?>

                <article>
                    <?php the_excerpt(); ?>

                    <a href="<?php the_permalink(); ?>">Continue reading</a>

                    <p><?php echo get_post_meta($post->ID, \'pacient\', TRUE); ?></p>
                </article>

            <?php endforeach; ?>
这正如预期的那样。摘录如图所示。阳光彩虹。不幸的是,如果我将完全相同的代码移动到另一侧的侧栏,则不会显示摘录。每个帖子的内容都会被删减。

换句话说:主页上完全相同的代码(复制/粘贴)生成摘录。在另一页的侧边栏中,它生成带“[…]”的修剪内容在最后。我不知道为什么。问题是否与调用get\\u post函数的位置有关(在查询或其他操作之后)。

为什么这两种情况下此函数的行为不同?如何强制它只显示摘录而不显示帖子内容。我错过什么了吗?

1 个回复
SO网友:Pieter Goosen

你的问题与the_excerpt(). the_excerpt() 模板标记本身不会更改其行为,也不会根据位置更改其行为。唯一一次the_excerpt() 当您通过自定义函数手动筛选输出时,其行为会发生变化。

我很可能认为你所有的痛苦都是由neglet造成的:-)。Neglet回答您可能会问的问题,简单的答案是,Neglet会在您完成后自行清理,即在完成自定义查询后重置postdata

许多人忽视了这一不重要的作用wp_reset_postdata. 这是一个gloden规则,无论何时使用get_postsWP_Query, 你have to 重置查询,否则以后的其他所有查询都会受到负面影响。

因此,我认为在自定义查询之后重置postdata(添加wp_reset_postdata 就在之后endforeach), 一切都会好起来的

请注意,不要使用:endforeach. 这使得代码难以读取和调试,代码编辑器也无法读取。为了使将来的事情更容易,请使用大括号({})

结束

相关推荐

New_excerpt_more链接不能正常工作

我的“阅读更多”按钮链接到当前页面,而不是它应该链接到的摘录页面。这是我在函数中的函数。php文件:function new_excerpt_more($more) { global $post; return \' <a href=\"\'. get_permalink($post->ID) . \'\"> ...Read More</a>\'; } add_filter(\'excerpt_more\', \'new_excerpt_