3

我需要显示不同长度的摘录,所以我使用

function custom_excerpt($length) {    
get_the_content();
... clean up and trim
return $excerpt;
}

但是,我想检测是否输入了手动摘录以便使用它而不是自定义摘录。有没有办法做到这一点?

我尝试使用

$wp_excerpt = get_the_excerpt();

但这会返回手动摘录,如果手动摘录为空,它会自动生成 55 个字符的摘录,这无济于事,因为它将始终为“真”(无法检查是否为空)。

以这种方式处理它的原因是因为我在一个页面上有多个摘录(不同的长度),如果需要的长度比 WordPress 摘录(55)长,我想展示我的摘录,除非手动摘录被写,在这种情况下,我想证明这一点。

如果我能简单的就完美了

if ( manual_excerpt() == true ) {
}
4

3 回答 3

3

你只需要替换excerp_length wordpress默认函数,按照上面的代码,就可以调用这个自定义函数并设置长度:

<?php
// custom excerpt length
function custom_excerpt_length( $length = 20 ) {
   return $length;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
?>   

答案更新二

在函数内部使用:

<?php
function custom_excerpt( $length = 55 ) {    
    if( $post->post_excerpt ) {
        $content = get_the_excerpt();
    } else {
        $content = get_the_content();
        $content = wp_trim_words( $content , $length );
    }
    return $excerpt;
}
?>
于 2013-11-12T17:10:32.117 回答
1

检查post_excerptpost 对象中的插槽是否为空:

global $post;

if( '' == $post->post_excerpt )
{
    // this post does NOT have a manual excerpt
}

要将其转换为函数:

function so19935351_has_manual_excerpt( $post )
{
    if( '' == $post->post_excerpt )
        return false;

    return true;
}
于 2013-11-12T19:23:59.103 回答
-1

这是一个老问题,但我一直在寻找这个,最终到这里并没有在答案中看到以下功能。要知道帖子是否有自定义摘录,您可以使用has_excerpt函数:

<?php has_excerpt( $id ); ?>

$id帖子ID在哪里。如果没有给出,那么将使用当前的帖子 ID。

于 2019-08-24T09:18:28.503 回答