为什么使用excerpt_more筛选器会更改链接位置?

时间:2017-06-01 作者:Alex

我将以下内容添加到functions.php 文件以更改之后显示的“read more>”链接the_excerpt() 被调用。

add_filter( \'excerpt_more\', \'edit_more_link\', 11 );

function edit_more_link() { ?>
        <a class="read-more" href="<?php the_permalink() ?>?template=iframe">read more &raquo;</a>
    <?php
}
现在的问题是,链接出现在摘录文本之前。如果不添加代码,默认链接将出现在摘录之后,这正是我想要的。为什么会这样?

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

过滤器用于在输出值之前修改值。通常会向函数传递一些值,您可以在其中修改或覆盖它,然后将结果传递回。您的链接显示不正确,因为您正在直接输出值,请将其更改为return 相反

还请注意,大多数模板标记都有输出其值的版本和返回值的版本。在您的功能中the_permalink 已更改为get_permalink.

add_filter( \'excerpt_more\', \'edit_more_link\', 11 );
function edit_more_link() {
    return \'<a class="read-more" href="\' . get_permalink() . \'?template=iframe">read more &raquo;</a>\';
}

结束

相关推荐

get_post_fields as an excerpt

我有一个奇怪的问题,我已经建立了我的网站和我的循环等。但在我的侧边栏上,我想添加一种随机的帖子显示,但我不想显示整个帖子,我在实现这一点上遇到了一些困难,所以如果你有任何其他方法想要共享,请让我知道:)我现在想做的是缩短显示的内容,我知道你可以用excerpt() 但是如果你看看我必须要做的方法,你就会明白我的意思,因为我在用典型的方法做这件事时遇到了问题。我的索引:if(have_posts()){ while(have_posts()):the_post();