你的get_excerpt()
函数使用global
$post
变量,它超出了函数的范围。
// Changing excerpt length
function get_excerpt($count){
$permalink = get_permalink($post->ID);
$excerpt = get_the_content();
$excerpt = strip_tags($excerpt);
$excerpt = substr($excerpt, 0, $count);
$excerpt = substr($excerpt, 0, strripos($excerpt, " "));
$excerpt = $excerpt.\'... <a href="\'.$permalink.\'">Read More</a>\';
return $excerpt;
}
这意味着当您这样做时:
$id = 6;
$post = get_post( $id );
$excerpt = get_excerpt( $id);
您正在尝试获取该职位
content 对于
current 根据
ID 您试图获取其摘录的帖子,但
$post
将超出范围,因此“未定义”。那么,假设
$post
已设置,。。。
$excerpt = $post->post_excerpt;
。。。然后,您将使用循环中当前帖子的原始摘录数据完全覆盖生成的“摘录”数据。
然后。。。
echo get_excerpt(190);
。。。你抓取摘录
from the current post in the Loop 再次重复,并回应它。
你所做的在几个方面都是错误的。我不得不假设您在不理解代码的情况下复制和粘贴了该代码,这是非常危险的。我警告你不要这样。
WordPress核心功能get_the_title()
将接受ID参数,但get_the_excerpt()
不会,因此,既然您需要两者,那么最好只检索post对象。
$id = 6;
$p = get_post($id);
// var_dump($p);
echo apply_filters(\'the_title\',$p->post_title);
echo apply_filters(\'the_excerpt\',$p->post_excerpt); // for a manually created excerpt
要从帖子内容中生成摘录,您需要如下内容:
$text = $p->post_content;
$text = strip_shortcodes( $text );
$text = apply_filters( \'the_content\', $text );
$text = str_replace(\']]>\', \']]>\', $text);
$excerpt_length = apply_filters( \'excerpt_length\', 55 );
$excerpt_more = apply_filters( \'excerpt_more\', \' \' . \'[…]\' );
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
echo $text;
这实际上只是核心功能的简化版本
wp_trim_excerpt()
您可以使用excerpt_length
滤器根据法典中的示例:
function custom_excerpt_length( $length ) {
return 20;
}
add_filter( \'excerpt_length\', \'custom_excerpt_length\', 999 );