当摘录本身为空/空白时,如何调整帖子摘录?我查看了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()
(功能)。
最合适的回答,由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\' );