带有空摘录的摘录筛选器(_E)

时间:2017-04-22 作者:JSP

当摘录本身为空/空白时,如何调整帖子摘录?我查看了the_excerpt 筛选测试是否为空,如果摘录为空,则返回apply_filters 可能在大多数情况下都有意义。如果可能的话,我想设置一个“默认”摘录。

https://core.trac.wordpress.org/browser/tags/4.7/src/wp-includes/post-template.php#L380

我假设有另一种方法来调整摘录,但我还没有找到它。非常感谢。

根据维诺德·达尔维的要求,我补充了一些细节。我在216th(v1.2)的子主题上使用了这个,但刚刚在一个基本空白的WordPress安装中仅使用父主题进行了测试。我正在使用以下代码:

add_filter( \'the_excerpt\', function( $excerpt ) {
    die( \'the_excerpt filter was called\' );
} );
使用上面的代码,我仍然只能看到在摘录字段不为空时调用的过滤器,并且根据上面的链接代码,似乎有一个空测试和一个返回before 应用过滤器。

我发现了我的问题。主题TwentyEleven(v1.2)使用函数twentysixteen_excerpt 调用函数has_excerpt 在调用之前测试摘录the_excerpt 触发过滤器的函数the_excerpt. 空测试仅在过滤器上进行get_the_excerpt 这是我最初使用的,因此至少是我困惑的一部分。所以VinodDalvi的答案是正确的,这取决于你们使用的主题。

由于最初的问题不在2616主题的背景下,即使Vinod的答案(大多数时候)是正确的,我觉得有必要补充一点,如果你想让这项工作适用于2616主题,你需要覆盖template-parts/content-single.php 子主题中的模板并删除twentysixteen_excerpt (L16)赞成公正the_excerpt() (功能)。

1 个回复
最合适的回答,由SO网友:Vinod Dalvi 整理而成

如果您正在讨论post的摘录字段中手动设置的摘录,那么您可以在函数中使用以下代码。您的子主题或插件的php文件,如果未设置摘录,则显示默认摘录。

function display_default_excerpt( $excerpt ) {

    if ( has_excerpt() ) {
        return $excerpt;
    } else {
        return __( \'There is no excerpt so displaying default excerpt.\' );
    }
}
add_filter( \'the_excerpt\', \'display_default_excerpt\' );

相关推荐

Child page excerpt

我有一个包含一些子页面的父页面。我想做的是在父页面上的自己的单元格中显示每个子页面摘录和一些其他信息。有人知道如何做到这一点吗?<div class=\"parent page\"> <?php $args = array( \'parent\' => $post->ID, \'post_type\' => \'page\', \'post_status\'