WordPress的get_the_excerpt而不是$ post-> post_excerpt

时间:2018-11-03 03:28:02

标签: php wordpress

我正在尝试将下面函数中的$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),
}  

2 个答案:

答案 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);
}

More details on get_the_excerpt() function

答案 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);
}