在PHP中更改the_post_thumbnail的输出

时间:2013-07-26 17:49:15

标签: php wordpress

我是PHP的新手。我已经搞砸了wordpress,但实际上并没有使用它背后的代码。我正在努力加快wordpress网站的加载时间,但我遇到了一些麻烦。 PHP使用the_post_thumbnail加载某些帖子图片的HTML代码。我有这个代码来延迟加载图像,以便首先加载页面,然后加载图像:

jQuery(window).load(function() {
jQuery('img[source]').prepend(function(){
    var source = jQuery(this).attr('source');
    jQuery(this).attr('src', source);
});
});

这在我使用coldfusion和普通html编写的另一个网站上非常有效。所以我要做的是将the_post_thumbnail的输出更改为具有实际源路径的'source'属性,并且初始src值将具有默认的加载gif。

我的第一个想法是构建另一个函数,或者我猜想,当PHP调用它时,添加一个像这样的过滤器:

add_filter('post_thumbnail_html', 'thumbnail_filter');
function thumbail_filter() {
$default_attr = array(
    'src'   => $src,
    'class' => "attachment-$size",
    'alt'   => trim(strip_tags( $wp_postmeta->_wp_attachment_image_alt )),
);
the_post_thumbnail($default_attr);
// you can alter the resulted HTML here
$html = the_post_thumbnail($default_attr);
return $html;
}

这实际上没有打破页面,即使我没有调用thumbnail_filter函数也没有显示任何图像。

关于该怎么做的我的下一个猜测是this。那些在PHP和wordpress方面有一点经验的人可以帮助我吗?也许第一个是正确的方法,但我只是做错了。

1 个答案:

答案 0 :(得分:0)

当调用the_post_thumbnail()函数时,将自动调用thumbnail_filter()函数。并且要向img标记添加源属性,您必须使用此过滤器替换过滤器

add_filter( 'post_thumbnail_html', 'my_post_image_html', 10, 3 );

function my_post_image_html( $html, $post_id, $post_image_id ) {

  $html = '<img src="" source="'.get_permalink( $post_id ).'"/>';
  return $html;

}

将此代码粘贴到functions.php文件中。我想这会奏效。