过滤器不是PHP。
第二,您已致电thumbnail_filter
作用你把它钩住了post_thumbnail_html
因此,每当应用该过滤器的函数运行时,如the_post_thumbnail
, 您的函数运行。如果你想一想,你会发现这里有一个循环。过滤器调用应用过滤器的函数(两次)。
第三the_post_thumbnail
将回显图像。那不是你想要的。我有点困惑这两行是什么(不包括评论)。。。
the_post_thumbnail($default_attr);
// you can alter the resulted HTML here
$html = the_post_thumbnail($default_attr);
。。。都是注定要做的。
我想你对过滤器的工作原理有些困惑。
这particular filter passes several parameters:
return apply_filters( \'post_thumbnail_html\', $html, $post_id, $post_thumbnail_id, $size, $attr );
对于你正在做的事情,你只需要第一个。您需要更改该输入并返回它,如下所示:
function thumbnail_filter($html) {
$pattern = \'|src="([^"]*)"|\';
$html = preg_replace($pattern,\'src="/absolute/loading/gif/path.gif" source="$1"\',$html);
return $html;
}
add_filter(\'post_thumbnail_html\', \'thumbnail_filter\');
请确保使用以下函数加载gif时使用绝对URL
get_stylesheet_directory_uri
, 或者任何适合你的情况。不要使用相对URL。这会引起麻烦。