我可以同时使用定制摘录和修剪摘录吗?

时间:2016-03-08 作者:IXN

对于每个帖子,我使用自定义摘录字段为我的每个帖子编写一个自定义摘录(最多180个字符),我将其用作SEO帖子的元描述。

当我显示我的帖子列表(归档页面、类别等)时,每个帖子的摘要都显示为“摘要文本”。问题是这个文本太短,因为它是为元描述目的而写的。

是否有可能在分类和索引页面中显示更长的摘录,同时保留我的自定义摘录作为每篇文章的元描述?

顺便说一句,我的大多数帖子都有一个专门放置的“阅读更多”标签,现在由于我有一个自定义摘录,该标签被忽略了。

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

我们可以尝试通过get_the_excerpt 滤器默认情况下,如果我们有手动摘录,将使用手动摘录,而不是由wp_trim_excerpt() 作用

我们可以改变这种行为。我们要做的是,当我们在主查询中(in_the_loop()),我们将返回wp_trim_excerpt() 作用这样,我们将按照默认设置保留所有过滤器。无论何时在主查询之外,我们都可以返回手动创建的摘录(如果存在),否则返回正常摘录

add_filter( \'get_the_excerpt\', function( $text )
{
    if ( in_the_loop() ) 
        return wp_trim_excerpt();

    return $text;
});

SO网友:thebigtine

这是一个我一直用来创建自定义摘录的函数:

function custom_excerpt( $limit, $post_id=NULL ) 
{
    if ( $post_id == NULL ) { 
        $the_excerpt = get_the_excerpt(); 
    } else { 
        $the_excerpt = get_the_excerpt($post_id); 
    }

    $excerpt = explode( \' \', $the_excerpt, $limit );     

    if ( count( $excerpt ) >= $limit ) {
        array_pop($excerpt);
        $excerpt = implode( " ",$excerpt ) . \'...\';
    } else {
        $excerpt = implode( " ",$excerpt );
    } 
    $excerpt = preg_replace( \'`\\[[^\\]]*\\]`\', \'\', $excerpt );

return $excerpt;
}  
然后,您可以在主题模板中这样使用它,您可以在其中使用自定义摘录长度

echo custom_excerpt(50,1);
或者不定义帖子id

echo custom_excerpt(50,NULL);
其中,第一个数字(50)是摘录的长度,第二个数字(1)是帖子id。

相关推荐

Ordering terms whilst in loop

我有一个页面模板,显示所有;“发布”;在两个自定义分类中,帖子显示在一个表中$type = $_GET[\'type\']; $category = $_GET[\'category\']; args = array( \'post-type\' => \'literature\', \'posts_per_page\' => -1, \'tax_query\' => array(