post_thumbnail_size is a WordPress PHP filter that allows you to modify the size of a post thumbnail.
Usage
add_filter( 'post_thumbnail_size', 'your_function_name', 10, 2 );
function your_function_name( $size, $post_id ) {
// your custom code here
return $size;
}
Parameters
- $size (string|int[]): The requested image size, can be any registered image size name or an array of width and height values in pixels (in that order).
- $post_id (int): The post ID for which the thumbnail is being filtered.
More information
See WordPress Developer Resources: https://developer.wordpress.org/reference/hooks/post_thumbnail_size/
Examples
Set a custom thumbnail size for a specific post
This code sets the thumbnail size to 300×200 pixels for the post with ID 42.
add_filter( 'post_thumbnail_size', 'change_thumbnail_size_for_specific_post', 10, 2 );
function change_thumbnail_size_for_specific_post( $size, $post_id ) {
if ( $post_id == 42 ) {
$size = array( 300, 200 );
}
return $size;
}
Set a different thumbnail size for posts in a specific category
This code sets the thumbnail size to ‘medium’ for posts in the ‘Featured’ category.
add_filter( 'post_thumbnail_size', 'change_thumbnail_size_for_featured_category', 10, 2 );
function change_thumbnail_size_for_featured_category( $size, $post_id ) {
if ( has_category( 'Featured', $post_id ) ) {
$size = 'medium';
}
return $size;
}
Set a custom thumbnail size for all posts
This code sets the thumbnail size to 500×300 pixels for all posts.
add_filter( 'post_thumbnail_size', 'change_thumbnail_size_for_all_posts', 10, 2 );
function change_thumbnail_size_for_all_posts( $size, $post_id ) {
$size = array( 500, 300 );
return $size;
}
Set a square thumbnail size for posts with a specific tag
This code sets the thumbnail size to 200×200 pixels for posts with the ‘New’ tag.
add_filter( 'post_thumbnail_size', 'change_thumbnail_size_for_new_tag', 10, 2 );
function change_thumbnail_size_for_new_tag( $size, $post_id ) {
if ( has_tag( 'New', $post_id ) ) {
$size = array( 200, 200 );
}
return $size;
}
Set a custom thumbnail size based on the current user’s role
This code sets the thumbnail size to ‘large’ for administrators and ‘medium’ for other users.
add_filter( 'post_thumbnail_size', 'change_thumbnail_size_based_on_user_role', 10, 2 );
function change_thumbnail_size_based_on_user_role( $size, $post_id ) {
if ( current_user_can( 'manage_options' ) ) {
$size = 'large';
} else {
$size = 'medium';
}
return $size;
}