如何在没有[...]的情况下获得未经过滤的摘录或自动摘录

时间:2012-10-12 作者:supertrue

获取摘录的标准方法是使用the_excerpt()get_the_excerpt() 模板标记。我正试图获取摘录字段的实际内容。

如果有摘录,我想完整地显示它(不删节或追加[…])。如果没有摘录,我不想显示任何内容。

在Wordpress中有没有一种简单的方法可以做到这一点?

类似这样:

$real_excerpt = ??? 

if ( $real_excerpt ) {
   echo $real_excerpt;
} // shouldn\'t show anything if there isn\'t a custom excerpt

2 个回复
最合适的回答,由SO网友:Tomas Buteler 整理而成

你为什么不使用global$post 变量它包含一个对象,其内容与该帖子对应的db行上的内容相同。以下是如何使用它:

global $post; // If for some reason it\'s readily accessible, invoke it
if($post->post_excerpt != \'\') {
    echo($post->post_excerpt);
}
或:

$my_post = get_post($post_id);
if($my_post->post_excerpt != \'\') {
    echo($my_post->post_excerpt);
}
非常简单,但如果您在工作中遇到问题,请告诉我们。

SO网友:kaiser

追溯:

the_excerpt()

当您查看the_excerpt(), 然后您将找到以下函数定义:

function the_excerpt() {
    echo apply_filters(\'the_excerpt\', get_the_excerpt());
}
这意味着get_the_excerpt() 保存普通的未过滤内容。

get_the_excerpt()

当您查看get_the_excerpt(), 您将发现以下内容:

function get_the_excerpt( $deprecated = \'\' ) {
    if ( !empty( $deprecated ) )
        _deprecated_argument( __FUNCTION__, \'2.3\' );

    global $post;
    $output = $post->post_excerpt;
    if ( post_password_required($post) ) {
        $output = __(\'There is no excerpt because this is a protected post.\');
        return $output;
    }

    return apply_filters(\'get_the_excerpt\', $output);
}
所以又添加了过滤器get_the_excerpt().

默认筛选器(&M);wp_trim_excerpt()

可以在内部找到连接到某个对象的所有核心过滤器~/wp-includes/default-filters.php.

在那里,您可以找到(WP版本3.4)以下过滤器:wp_trim_excerpt() on Line #147.

这个wp_trim_excerpt() 函数从内部看起来如下所示:

function wp_trim_excerpt($text = \'\') {
    $raw_excerpt = $text;
    if ( \'\' == $text ) {
        $text = get_the_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 );
    }
    return apply_filters(\'wp_trim_excerpt\', $text, $raw_excerpt);
}
我们有什么选择只需移除过滤器,就可以将这些函数中的每一个与所有不需要的过滤器一起使用。但这也意味着,你将把它们从其他一切中移除。

调用平原->excerpt, 在任何情况下都会为您提供摘录,除非没有摘录。也就是说,你can insert scripts and CDATA tags as explained in this answer, 但还必须处理密码后检查,以及返回您需要的所有过滤器。

结束

相关推荐

Using the_excerpt() on a page

我一直在尝试利用PHP摘录函数从她最近的博客文章中调用main landing page 无济于事。有什么想法吗?<div id=\"home_news\" class=\"prefix_9 grid_3\"> <div id=\"newsbox\" style=\"display: block;\"> <div id=\"news\"> <h2>Welcome</h2>&#