过滤器必须always 返回一个值。如果不返回值,则与返回空值相同,null
, 等。这始终是第一个参数,或其修改/替换版本。
因此:
add_filter( \'wp_get_attachment_image_attributes\', function( $attrs ) {
if ( !is_single() && !is_page() && is_front_page() && is_archive() && is_search() ) {
global $wp_query;
if ( $wp_query->current_post === 0 )
$attrs[\'loading\'] = \'eager\';
return $attrs;
}
}
);
与此相同:
add_filter( \'wp_get_attachment_image_attributes\', function( $attrs ) {
if ( !is_single() && !is_page() && is_front_page() && is_archive() && is_search() ) {
global $wp_query;
if ( $wp_query->current_post === 0 )
$attrs[\'loading\'] = \'eager\';
return $attrs;
} else {
// I don\'t want post thumbnails, return nothing
return null;
}
}
// I don\'t want post thumbnails, return nothing
return null;
);
记住,过滤器是WordPress临时向您传递一个值,然后您将其返回给WordPress,允许您更改它。
您的代码所做的相当于在满足某些标准(变懒惰为渴望)的情况下,通过更改将其发回,但如果它不满足这些标准,而不是原封不动地发回,那么您就点燃了它并将其丢弃。
如果我们向函数中添加类型提示,那么PHP致命错误会使错误更加明显:
add_filter( \'wp_get_attachment_image_attributes\', function( $attrs ) : array {
函数需要返回一个值,通过这样做,我们告诉PHP它总是返回一个数组。因此,当加载不是第一篇帖子的帖子或不是搜索存档的页面等时,该功能不会
return
它将生成一个PHP致命错误,而不是警告。
您还应该注意到,PHP错误日志将包含此函数的PHP警告。
要解决此问题,需要更改过滤器,使其始终返回值。由于过滤器不返回任何内容,因此不会获得post缩略图。如果不想更改属性,请按原样返回属性return $attrs;
. 过滤器always 归还一些东西