The begin_fetch_post_thumbnail_html WordPress PHP action fires before fetching the post thumbnail HTML and provides “just in time” filtering of all filters in wp_get_attachment_image()
.
Usage
add_action('begin_fetch_post_thumbnail_html', 'your_custom_function', 10, 3); function your_custom_function($post_id, $post_thumbnail_id, $size) { // your custom code here return $post_id; }
Parameters
$post_id
(int): The post ID.$post_thumbnail_id
(int): The post thumbnail ID.$size
(string|int[]): Requested image size. Can be any registered image size name, or an array of width and height values in pixels (in that order).
More information
See WordPress Developer Resources: begin_fetch_post_thumbnail_html
Examples
Log Post Thumbnail Fetch
Log each time a post thumbnail is fetched:
add_action('begin_fetch_post_thumbnail_html', 'log_post_thumbnail_fetch', 10, 3); function log_post_thumbnail_fetch($post_id, $post_thumbnail_id, $size) { error_log("Fetching post thumbnail for post ID: {$post_id}, Thumbnail ID: {$post_thumbnail_id}, Size: " . print_r($size, true)); return $post_id; }
Set Default Thumbnail Size
Set a default thumbnail size if no size is specified:
add_action('begin_fetch_post_thumbnail_html', 'set_default_thumbnail_size', 10, 3); function set_default_thumbnail_size($post_id, $post_thumbnail_id, &$size) { if (empty($size)) { $size = 'medium'; } return $post_id; }
Increase Thumbnail Size
Increase the size of the thumbnail by a factor:
add_action('begin_fetch_post_thumbnail_html', 'increase_thumbnail_size', 10, 3); function increase_thumbnail_size($post_id, $post_thumbnail_id, &$size) { if (is_array($size)) { $size[0] = $size[0] * 1.5; $size[1] = $size[1] * 1.5; } return $post_id; }
Change Thumbnail ID
Change the thumbnail ID to a different attachment:
add_action('begin_fetch_post_thumbnail_html', 'change_thumbnail_id', 10, 3); function change_thumbnail_id($post_id, &$post_thumbnail_id, $size) { $new_attachment_id = 123; // Replace with a valid attachment ID $post_thumbnail_id = $new_attachment_id; return $post_id; }
Skip Fetching Thumbnails for Specific Post Types
Skip fetching thumbnails for specific post types:
add_action('begin_fetch_post_thumbnail_html', 'skip_thumbnail_fetch_for_post_types', 10, 3); function skip_thumbnail_fetch_for_post_types($post_id, $post_thumbnail_id, $size) { $post_type = get_post_type($post_id); $skip_post_types = array('custom_post_type'); // Replace with your desired post types to skip if (in_array($post_type, $skip_post_types)) { return false; } return $post_id; }