我以这种方式显示我的帖子列表:
[-- IMAGE --]
[-- Title --]
[-- Excerpt --]
[-- "Read more" --]
在index.php
文件中使用代码时,我的代码运行良好,例如:
while(have_posts())
{
the_post();
$link = get_permalink();
$title = the_title();
$excerpt = the_excerpt();
}
然后在functions.php
中,将一个过滤器应用于摘要:
add_filter('excerpt_length', 'custom_excerpt_length');
add_filter('excerpt_more', 'new_excerpt_more');
function custom_excerpt_length()
{
return 14;
}
function new_excerpt_more($more)
{
global $post;
return '... <a href="'. get_permalink($post->ID) . '">Read more</a>';
}
但是,现在我必须遍历functions.php
内的帖子,并且已经找到了标题和链接,但没有摘录。
$posts = get_posts($args);
foreach($posts as $post)
{
$link = get_permalink($post);
$title = get_the_title($post);
$excerpt = get_the_excerpt($post); // Returns empty and I'd like to apply the filters
}
如何将过滤器应用于函数get_the_excerpt
,为什么它为空?
答案 0 :(得分:0)
如果此功能在The Loop之外使用,且帖子没有 自定义摘录,此函数将使用wp_trim_excerpt()生成 摘录。该函数使用get_the_content(),必须使用 使用The Loop,如果正在使用get_the_excerpt(),则会导致问题 在The Loop外使用。为了避免出现问题,请使用 setup_postdata(),然后再调用get_the_excerpt()来设置 全局的$ post对象。
这应该有效:
$posts = get_posts($args);
foreach($posts as $post)
{
setup_postdata($post);
$link = get_permalink($post);
$title = get_the_title($post);
$excerpt = get_the_excerpt($post);
}
wp_reset_postdata();