我正在尝试将下面函数中的$post->post_content
替换为get_the_excerpt
,而该the_content
只是从运行中的function getExcerpt($post) {
$summary = apply_filters('the_content', $post->post_content);
return apply_filters("mc-message", $summary);
}
中摘录。
原始功能:
$post->post_content
我本可以将$post->post_excerpt
替换为get_the_excerpt
,但不会返回任何内容,因为在Wordpress编辑器的摘录元框中没有输入任何严格的摘录。请注意,function getExcerpt($post) {
$deducted_excerpt = get_the_excerpt();
$summary = apply_filters('the_content', $deducted_excerpt);
return apply_filters("mc-message", $summary);
}
会根据帖子内容创建摘要。但是它没有传递任何值
{
"_id" : ObjectId("5af599c632214d9410ada4c4"),
"platform" : "Web",
"sessionId" : "fd91b2c3-1615-4dfd-9fa4-b8aa6fa95747",
"timestamp" : NumberLong(1526045124702),
}
答案 0 :(得分:1)
是的,您是对的。如果没有用户提供的摘录,get_the_excerpt
会生成完整帖子内容的字数精简版本。
但是在这里,您没有在循环内使用get_the_excerpt
。因此,您需要传递一个post对象或post ID作为参数,以摘录。
来自法典:
如果此功能在The Loop之外使用,并且帖子没有自定义摘录,则此函数将使用
wp_trim_excerpt()
生成摘录。该函数使用get_the_content()
,它必须与The Loop一起使用,如果get_the_excerpt()
在The Loop外使用,则会引起问题。为了避免这些问题,请在调用setup_postdata()
之前使用get_the_excerpt()
来设置全局$post
对象。
您的代码应为:
function getExcerpt($post) {
$deducted_excerpt = get_the_excerpt($post);//<==== see here. $post object is passed as parameter.
$summary = apply_filters('the_content', $deducted_excerpt);
return apply_filters("mc-message", $summary);
}
答案 1 :(得分:0)
我最初将帖子ID传递给了它,但仍然没有返回我希望的截断的内容摘录。
由于食品法典委员会建议使用seup_postdata
,因此我在函数之前使用了。
并解决了问题:
function getExcerpt($post) {
setup_postdata($post);
$deducted_excerpt = custom_excerpt($post);
$summary = apply_filters('the_content', $deducted_excerpt);
return apply_filters("mc-message", $summary);
}