需要覆盖过滤器wp_get_attachment_thumb_url但不起作用

时间:2015-03-03 12:33:46

标签: wordpress-plugin

我正在开发一个插件,它会将主要图片和缩略图存储在云端存储系统上。我已经使用wp_get_attachment_url过滤器来更改主网址的目的地,但附件会使用与主网址相同的修改路径,这是我不想要的,因为每个网址都需要是唯一的链接

我已尝试使用wp_get_attachment_thumb_url为拇指获得相同的结果,但它根本不会发射。

//This works
add_filter( 'wp_get_attachment_url', array( $this, 'wp_get_attachment_url' ), 9, 2 );       

//This doesn't
add_filter( 'wp_get_attachment_thumb_url', array( $this, 'wp_get_attachment_thumb_url' ), 20, 2 );  

有任何建议 - 或让人们看到这种行为?

1 个答案:

答案 0 :(得分:1)

如果出现同样的问题,则wp_get_attachment_thumb_url过滤器未触发。我们设置了自定义图像尺寸。如果你看一下wp_get_attachment_thumb_url的函数代码,你会发现它在函数中途调用了image_downsize,如果该函数返回一个大小数组,它将第一个用作缩略图并返回它。

因此,它不是在代码块中调用您正在查看的过滤器,而是返回image_downsize过滤器的第一个结果。所以我最后为“image_downsize”添加了一个过滤器,而不是优先级为1

add_filter( 'image_downsize', function($short_circuit, $attachment_id, $size){
    # code to get thumb url here ...
    $thumb_url = ...

    return array($thumb_url);
}, 1, 2 );