所以...我正在开发一个wordpress插件,它应该更改您从wordpress函数get_the_post_thumbnail_url()
获得的图像来源
您有一个主题,并在其中使用get_the_post_thumbnail_url($id)
获取了图像源,它返回了类似https://wordpress/path/to/image.jpg
的内容,我想在该插件内部更改该函数的输出,例如当我对其进行修改时在我的插件中,您可以在主题中使用该功能,然后输出修改后的版本。
我尝试使用add_filter()
,但是它根本不起作用,我也不知道它是否应该起作用。
function my_function_idk( $example ) {
$asd = $example.'lul123';
return $asd;
}
add_filter( 'get_the_post_thumbnail_url', 'my_function_idk' );
// expected output: https://wordpress/path/to/image.jpglul123
实际输出:https://wordpress/path/to/image.jpg
也许我理解您必须使用apply_filters()
来使该过滤器起作用,但是您需要在THAT THEME中使用它,我不希望这样做。我只想修改该功能...有可能吗?
我只是不了解他们的文档...我对wordpress感到愤怒... fkn bulsht。
答案 0 :(得分:1)
使用像add_filter( 'get_the_post_thumbnail_url_hook', 'my_function_idk' );
这样的钩子。在您想要挂钩的函数内部,需要这样做:
function get_the_post_thumbnail_url( $post = null, $size = 'post-thumbnail' ) {
$post_thumbnail_id = get_post_thumbnail_id( $post );
if ( ! $post_thumbnail_id ) {
return false;
}
return apply_filters('get_the_post_thumbnail_url_hook', $post_thumbnail_id, $size );
}
看return apply_filters('get_the_post_thumbnail_url_hook', $post_thumbnail_id, $size );
此函数没有钩子。 Look it inside core。所以你不能“钩”它。
但是您有一个选择:
在get_the_post_thumbnail_url内,我们得到wp_get_attachment_image_url,其中有wp_get_attachment_image_src,其功能是return apply_filters( 'wp_get_attachment_image_src', $image, $attachment_id, $size, $icon );
因此您可以通过功能队列连接到链末尾的一个。
尝试:
add_filter( 'wp_get_attachment_image_src', 'my_function_idk', 90, 4 );
。 Documentation