[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f4zqtVwixHFDPJwpW5J5d-Wt8QStjGCgteyIv7f6C_4I":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":22,"download_link":23,"security_score":13,"vuln_count":24,"unpatched_count":24,"last_vuln_date":25,"fetched_at":26,"vulnerabilities":27,"developer":28,"crawl_stats":25,"alternatives":36,"analysis":138,"fingerprints":196},"thumbnails","Thumbnails and Featured Images","1.1.8","Stefano Lissa","https:\u002F\u002Fprofiles.wordpress.org\u002Fsatollo\u002F","\u003Cp>WordPress themes need thumbnails in different sizes and they even let the user to change those dimensions.\u003Cbr \u002F>\nBut WordPress has a problem: it does not regenerates the thumbnails when new sizes are registered.\u003C\u002Fp>\n\u003Cp>Thumbnails intercepts the request by themes or plugins to WordPress to get a specific thumbnail, generates it and caches it on disk.\u003Cbr \u002F>\nEfficiently, it produces a perfectly cropped image, with the right dimension avoiding unpleasant stretching.\u003C\u002Fp>\n\u003Cp>Thumbnails does not modify your blog or your media library. When deactivated the blog returns to its old behavior.\u003C\u002Fp>\n\u003Cp>The second important feature is the autoselection of featured image for post which are missing it.\u003Cbr \u002F>\nYou can choose between the on the fly selection without persist it or, for better performances, to persist it once selected.\u003C\u002Fp>\n\u003Cp>Read the \u003Ca href=\"https:\u002F\u002Fwww.satollo.net\u002Fplugins\u002Fthumbnails\" rel=\"nofollow ugc\">Thumbnails\u003C\u002Fa> official page for detailed information.\u003C\u002Fp>\n\u003Cp>Theme developers can find instructions to use it (no code tied to Thumbnails needs to be written!).\u003C\u002Fp>\n\u003Cp>Other plugins by Stefano Lissa:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.satollo.net\u002Fplugins\u002Fhyper-cache\" rel=\"nofollow ugc\">Hyper Cache\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.thenewsletterplugin.com\" rel=\"nofollow ugc\">Newsletter\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.satollo.net\u002Fplugins\u002Fheader-footer\" rel=\"nofollow ugc\">Header and Footer\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.satollo.net\u002Fplugins\u002Finclude-me\" rel=\"nofollow ugc\">Include Me\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.satollo.net\u002Fplugins\u002Fads-bbpress\" rel=\"nofollow ugc\">Ads for bbPress\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Screen shots\u003C\u002Fh3>\n\u003Cp>No screenshots are available at this time.\u003C\u002Fp>\n","Autoselect the featured image and creates pixel perfect resizes on the fly without regenerate all the thumbnails.",1000,39365,100,6,"2026-02-03T11:26:00.000Z","6.9.4","6.1","7.0",[20,21,4],"media","resize","https:\u002F\u002Fwww.satollo.net\u002Fplugins\u002Fthumbnails","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fthumbnails.1.1.8.zip",0,null,"2026-03-15T15:16:48.613Z",[],{"slug":29,"display_name":7,"profile_url":8,"plugin_count":30,"total_installs":31,"avg_security_score":32,"avg_patch_time_days":33,"trust_score":34,"computed_at":35},"satollo",14,515450,94,650,75,"2026-04-04T07:23:10.223Z",[37,59,79,97,118],{"slug":38,"name":39,"version":40,"author":41,"author_profile":42,"description":43,"short_description":44,"active_installs":45,"downloaded":46,"rating":47,"num_ratings":48,"last_updated":49,"tested_up_to":50,"requires_at_least":51,"requires_php":52,"tags":53,"homepage":57,"download_link":58,"security_score":13,"vuln_count":24,"unpatched_count":24,"last_vuln_date":25,"fetched_at":26},"crop-thumbnails","Crop-Thumbnails","1.9.7","Volkmar Kantor","https:\u002F\u002Fprofiles.wordpress.org\u002Fvolkmar-kantor\u002F","\u003Cp>The plugin provides the functionality to adjust the crop region of cropped images. It add buttons to the edit-pages and media-dialog to access a crop-editor.\u003Cbr \u002F>\nIn the crop-editor you can choose one or more (if they have the same ratio) imagesizes and cut-off the part of the image you want.\u003C\u002Fp>\n\u003Cp>The plugin is especially useful for theme developers who want to keep full control over cropped image sizes. If you want to dive even deeper, you can get informations about the hooks and filters on the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvollyimnetz\u002Fcrop-thumbnails\" rel=\"nofollow ugc\">github page of the plugin\u003C\u002Fa>.\u003C\u002Fp>\n","\"Crop Thumbnails\" made it easy to get exacly that specific image-detail you want to show in your featured image or gallery image.",40000,836379,92,67,"2025-12-03T10:59:00.000Z","6.8.5","5.0","7.4.0",[54,55,56],"images","media-library","post-thumbnails","https:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fcrop-thumbnails\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcrop-thumbnails.1.9.7.zip",{"slug":60,"name":61,"version":62,"author":63,"author_profile":64,"description":65,"short_description":66,"active_installs":67,"downloaded":68,"rating":47,"num_ratings":69,"last_updated":70,"tested_up_to":71,"requires_at_least":72,"requires_php":73,"tags":74,"homepage":77,"download_link":78,"security_score":47,"vuln_count":24,"unpatched_count":24,"last_vuln_date":25,"fetched_at":26},"ios-images-fixer","iOS images fixer","1.3.0","Bishoy.A","https:\u002F\u002Fprofiles.wordpress.org\u002Fbishoya\u002F","\u003Cp>By default, thumbnails of photos taken by an iOS device (iPhone or iPad) are flipped 90 degrees to the left, it’s a long image EXIF information story. This plugin takes care of this and fixes the uploaded images orientation’s (if needed, based on EXIF data) using ImageMagic Library if available or PHP GD as a fallback.\u003C\u002Fp>\n\u003Cp>No settings editing required, just activate the plugin and try uploading an image from your idevice!\u003C\u002Fp>\n","Automatically fix iOS-taken images' orientation using ImageMagic\u002FPHP GD upon upload.",7000,59114,30,"2024-06-12T17:02:00.000Z","6.5.8","4.0.0","",[54,75,76,20,4],"ios","iphone","http:\u002F\u002Fbishoy.me\u002Fwp-plugins\u002Fios-images-fixer\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fios-images-fixer.1.3.0.zip",{"slug":80,"name":81,"version":82,"author":83,"author_profile":84,"description":85,"short_description":86,"active_installs":87,"downloaded":88,"rating":13,"num_ratings":89,"last_updated":90,"tested_up_to":16,"requires_at_least":91,"requires_php":92,"tags":93,"homepage":95,"download_link":96,"security_score":13,"vuln_count":24,"unpatched_count":24,"last_vuln_date":25,"fetched_at":26},"disable-generate-thumbnails","Disable Generate Thumbnails","2.21","Katsushi Kawamori","https:\u002F\u002Fprofiles.wordpress.org\u002Fkatsushi-kawamori\u002F","\u003Ch4>Thumbnails\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>thumbnail\u003C\u002Fli>\n\u003Cli>medium\u003C\u002Fli>\n\u003Cli>large\u003C\u002Fli>\n\u003Cli>1536×1536\u003C\u002Fli>\n\u003Cli>2048×2048\u003C\u002Fli>\n\u003Cli>Generated with theme\u003C\u002Fli>\n\u003Cli>Generated with plugin\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Functions\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Large image threshold\u003C\u002Fli>\n\u003Cli>Exif automatic rotation\u003C\u002Fli>\n\u003C\u002Ful>\n","Select the thumbnails and functions to disable it.",6000,53296,15,"2025-11-25T21:50:00.000Z","6.6","8.0",[94,20,4],"disable","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fdisable-generate-thumbnails\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fdisable-generate-thumbnails.2.21.zip",{"slug":98,"name":99,"version":100,"author":101,"author_profile":102,"description":103,"short_description":104,"active_installs":105,"downloaded":106,"rating":47,"num_ratings":107,"last_updated":108,"tested_up_to":109,"requires_at_least":110,"requires_php":73,"tags":111,"homepage":115,"download_link":116,"security_score":117,"vuln_count":24,"unpatched_count":24,"last_vuln_date":25,"fetched_at":26},"otf-regenerate-thumbnails","OTF Regenerate Thumbnails","0.3","Benjamin Intal","https:\u002F\u002Fprofiles.wordpress.org\u002Fbfintal\u002F","\u003Cp>This plugin behaves similarly to \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fregenerate-thumbnails\u002F\" rel=\"ugc\">Regenerate Thumbnails\u003C\u002Fa> except that images are resized automatically \u002F on the fly, when they are used. Once created, they won’t be processed again.\u003C\u002Fp>\n\u003Cp>Your thumbnails will now resize when:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Image Sizes in \u003Cstrong>Settings > Media\u003C\u002Fstrong> is modified,\u003C\u002Fli>\n\u003Cli>Switching themes & plugins with different thumbnail \u002F featured image sizes\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>No settings pages, just install and activate and things should work right away.\u003C\u002Fp>\n\u003Cp>Report bugs and help out in the code from the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgambitph\u002FWP-OTF-Regenerate-Thumbnails\" rel=\"nofollow ugc\">Github repository\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>What are you talking about?\u003C\u002Fh4>\n\u003Cp>Test it out. In your normal WordPress website set up, create a gallery using the \u003Cstrong>Add Media\u003C\u002Fstrong> button while editing a post or page and use thumbnails. Afterwards, check out your gallery.\u003C\u002Fp>\n\u003Cp>Notice the size of your thumbnails, most likely they’re \u003Cstrong>150 x 150\u003C\u002Fstrong>. Do you see it? Great.\u003C\u002Fp>\n\u003Cp>Now head over to \u003Cstrong>Settings > Media\u003C\u002Fstrong> and change your thumbnail size to something cooler, something rectangular, let’s try \u003Cstrong>400 x 200\u003C\u002Fstrong>. Save it.\u003C\u002Fp>\n\u003Cp>Go back to your gallery that you previously created and refresh your browser. Most likely you \u003Cem>won’t\u003C\u002Fem> be seeing \u003Cstrong>400 x 200\u003C\u002Fstrong> thumbnails there.\u003C\u002Fp>\n\u003Cp>OTF Regenerate Thumbnails fixes this for you.\u003C\u002Fp>\n\u003Ch4>Usage\u003C\u002Fh4>\n\u003Cp>OTF Regenerate Thumbnails should work right away, and your images should get resized when the dimensions get changed.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>For developers & tinkerers, ensuring your images get resized properly requires you to use WordPress’ image functions to display featured images and image attachments.\u003C\u002Fstrong> Don’t worry, this is a good thing.\u003C\u002Fp>\n\u003Cp>Make sure you use these WordPress functions \u003Cstrong>every time you display images\u003C\u002Fstrong>:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FFunction_Reference\u002Fwp_get_attachment_image_src\" rel=\"nofollow ugc\">\u003Ccode>wp_get_attachment_image_src\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FFunction_Reference\u002Fwp_get_attachment_image\" rel=\"nofollow ugc\">\u003Ccode>wp_get_attachment_image\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FFunction_Reference\u002Fthe_post_thumbnail\" rel=\"nofollow ugc\">\u003Ccode>the_post_thumbnail\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FFunction_Reference\u002Fget_the_post_thumbnail\" rel=\"nofollow ugc\">\u003Ccode>get_the_post_thumbnail\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>You can also add size \u003Cem>names\u003C\u002Fem> using \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FFunction_Reference\u002Fadd_image_size\" rel=\"nofollow ugc\">\u003Ccode>add_image_size\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Creates Resizes thumbnails on the fly\u003C\u002Fli>\n\u003Cli>Handles Image Size settings changes in \u003Cstrong>Settings > Media\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>Handles thumbnail \u002F image size changes introduced by switching themes & plugins\u003C\u002Fli>\n\u003Cli>Works automatically, no setup needed\u003C\u002Fli>\n\u003Cli>All calls to \u003Ccode>the_post_thumbnail\u003C\u002Fcode> and other thumbnail functions are handled automatically\u003C\u002Fli>\n\u003Cli>Handles image sizes created from \u003Ccode>add_image_size\u003C\u002Fcode>,\u003C\u002Fli>\n\u003Cli>Handles \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FFunction_Reference\u002Fthe_post_thumbnail\" rel=\"nofollow ugc\">2-item array sizes\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","Automatically regenerates your thumbnails on the fly when thumbnail sizes change.",5000,146082,19,"2017-11-28T11:50:00.000Z","4.1.42","3.8",[112,113,21,114,4],"automatic","regenerate","thumbnail","http:\u002F\u002Fgithub.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fotf-regenerate-thumbnails.0.3.zip",85,{"slug":119,"name":120,"version":121,"author":122,"author_profile":123,"description":124,"short_description":125,"active_installs":126,"downloaded":127,"rating":13,"num_ratings":128,"last_updated":129,"tested_up_to":16,"requires_at_least":130,"requires_php":131,"tags":132,"homepage":136,"download_link":137,"security_score":13,"vuln_count":24,"unpatched_count":24,"last_vuln_date":25,"fetched_at":26},"better-image-sizes","Better image sizes","3.9","kubiq","https:\u002F\u002Fprofiles.wordpress.org\u002Fkubiq\u002F","\u003Cp>This plugin is ment mostly for developers. You need to use its functions in your theme or plugin to make it works.\u003C\u002Fp>\n\u003Cp>This plugin offers functionality like \u003Cstrong>face detection crop\u003C\u002Fstrong>, \u003Cstrong>focal point selector\u003C\u002Fstrong> for every image, \u003Cstrong>function to output responsive \u003Cpicture> sizes\u003C\u002Fstrong> and more.\u003C\u002Fp>\n\u003Ch3>Why to use this plugin?\u003C\u002Fh3>\n\u003Cp>WordPress will automatically create a lot of smaller images for every uploaded image.\u003Cbr \u002F>\nYou mostly need just 1 or 2 of them, so this is a waste of your server space and resources.\u003Cbr \u002F>\nAlso cropped images are generated from the center by default, which can be a problem many times.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>This plugin allows you to:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>disable autogenerated image sizes\u003C\u002Fli>\n\u003Cli>dynamically generate only needed image sizes for only needed images\u003C\u002Fli>\n\u003Cli>delete generated image sizes from this plugin individually or all together\u003C\u002Fli>\n\u003Cli>specify different focal point that will be in the focus while creating cropped versions of the image\u003C\u002Fli>\n\u003Cli>automatically detect focal point by face detection algorithm\u003C\u002Fli>\n\u003Cli>disable big image size threshold, so image bigger than 2560x2560px will be NOT scaled down\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>How it works\u003C\u002Fh3>\n\u003Col>\n\u003Cli>if you disable existing autogenerated image sizes, then newly uploaded images will not create its sizes\u003C\u002Fli>\n\u003Cli>you need to specify in your code what size is needed for the image\u003C\u002Fli>\n\u003Cli>image is dynamically created on the first visit of the page and is stored in \u003Ccode>uploads\u003C\u002Fcode> folder\u003C\u002Fli>\n\u003Cli>every next visit of that page will just load already generated image\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Functions\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>bis_get_attachment_image_src( $attachment_id, $size, $crop )\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Function inspired by default \u003Ccode>wp_get_attachment_image_src\u003C\u002Fcode>.\u003Cbr \u002F>\nIf you used \u003Cem>Fly Dynamic Image Resizer\u003C\u002Fem> before, you don’t need to replace \u003Ccode>fly_get_attachment_image_src\u003C\u002Fcode> functions in your code – there is a fallback, so you can deactivate \u003Cem>Fly Dynamic Image Resizer\u003C\u002Fem> and it will still work.\u003C\u002Fp>\n\u003Cp>Parameters:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>attachment_id\u003C\u002Fstrong> (integer)(required)\u003Cbr \u002F>\nThe ID of the image attachment\u003Cbr \u002F>\nExample: \u003Ccode>123\u003C\u002Fcode> or \u003Ccode>get_post_thumbnail_id()\u003C\u002Fcode> or \u003Ccode>get_field('my_image')\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>size\u003C\u002Fstrong> (array)(required)\u003Cbr \u002F>\nAn array with the width and height\u003Cbr \u002F>\nExample: \u003Ccode>[ 1920, 1080 ]\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>crop\u003C\u002Fstrong> (boolean\u002Finteger\u002Farray\u002Fstring)(optional)\u003Cbr \u002F>\nSkip this or pass \u003Ccode>false\u003C\u002Fcode> or \u003Ccode>0\u003C\u002Fcode> if you don’t want to crop, just rescale,\u003Cbr \u002F>\notherwise pass \u003Ccode>true\u003C\u002Fcode> or \u003Ccode>1\u003C\u002Fcode> to use focal point crop that is selected in admin media (by default center),\u003Cbr \u002F>\nor pass array with string x-axis and y-axis parameters like \u003Ccode>[ 'right', 'bottom' ]\u003C\u002Fcode>\u003Cbr \u002F>\nor pass array with numeric x-axis and y-axis parameters like \u003Ccode>[ 0.5, 0.8 ]\u003C\u002Fcode>\u003Cbr \u002F>\nor pass string \u003Ccode>'face'\u003C\u002Fcode> to automatically detect face position (can be exhaustive on server resources)\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Returns:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>array(\n    'src' => (string) url of the image,\n    'width' => (integer) width in pixels,\n    'height' => (integer) height in pixels\n)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>&nbsp;\u003C\u002Fp>\n\u003Cp>\u003Cstrong>bis_get_attachment_image( $attachment_id, $size, $crop, $attr )\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Function inspired by default \u003Ccode>wp_get_attachment_image\u003C\u002Fcode>.\u003Cbr \u002F>\nIf you used \u003Cem>Fly Dynamic Image Resizer\u003C\u002Fem> before, you don’t need to replace \u003Ccode>fly_get_attachment_image\u003C\u002Fcode> functions in your code – there is a fallback, so you can deactivate \u003Cem>Fly Dynamic Image Resizer\u003C\u002Fem> and it will still work.\u003C\u002Fp>\n\u003Cp>Parameters:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>attachment_id\u003C\u002Fstrong> (integer)(required)\u003Cbr \u002F>\nThe ID of the image attachment\u003Cbr \u002F>\nExample: \u003Ccode>123\u003C\u002Fcode> or \u003Ccode>get_post_thumbnail_id()\u003C\u002Fcode> or \u003Ccode>get_field('my_image')\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>size\u003C\u002Fstrong> (array)(required)\u003Cbr \u002F>\nAn array with the width and height\u003Cbr \u002F>\nExample: \u003Ccode>[ 1920, 1080 ]\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>crop\u003C\u002Fstrong> (boolean\u002Finteger\u002Farray\u002Fstring)(optional)\u003Cbr \u002F>\nSkip this or pass \u003Ccode>false\u003C\u002Fcode> or \u003Ccode>0\u003C\u002Fcode> if you don’t want to crop, just rescale,\u003Cbr \u002F>\notherwise pass \u003Ccode>true\u003C\u002Fcode> or \u003Ccode>1\u003C\u002Fcode> to use focal point crop that is selected in admin media (by default center),\u003Cbr \u002F>\nor pass array with string x-axis and y-axis parameters like \u003Ccode>[ 'right', 'bottom' ]\u003C\u002Fcode>\u003Cbr \u002F>\nor pass array with numeric x-axis and y-axis parameters like \u003Ccode>[ 0.5, 0.8 ]\u003C\u002Fcode>\u003Cbr \u002F>\nor pass string \u003Ccode>'face'\u003C\u002Fcode> to automatically detect face position (can be exhaustive on server resources)\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>attr\u003C\u002Fstrong> (array)(optional)\u003Cbr \u002F>\nAn array of attributes\u003Cbr \u002F>\nSpecial attribute \u003Ccode>retina\u003C\u002Fcode> allows you to automatically generate srcset for \u003Ccode>@2x\u003C\u002Fcode> retina devices\u003Cbr \u002F>\nExample: \u003Ccode>array( 'retina' => true, 'alt' => 'Custom alt text', 'class' => 'my-class', 'id' => 'my-id' )\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Returns:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003Cimg src=\"https:\u002F\u002Fweb.com\u002Fwp-content\u002Fuploads\u002Fbis-images\u002F1234\u002Fyour-image-500x500-f50_50.jpg\" width=\"500\" height=\"500\" alt=\"Alt text\">\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>&nbsp;\u003C\u002Fp>\n\u003Cp>\u003Cstrong>bis_get_attachment_picture( $attachment_id, $sizes, $attr )\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Parameters:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>attachment_id\u003C\u002Fstrong> (integer)(required)\u003Cbr \u002F>\nThe ID of the image attachment\u003Cbr \u002F>\nExample: \u003Ccode>123\u003C\u002Fcode> or \u003Ccode>get_post_thumbnail_id()\u003C\u002Fcode> or \u003Ccode>get_field('my_image')\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>sizes\u003C\u002Fstrong> (array)(required)\u003Cbr \u002F>\nAn array with the \u003Ccode>key => value\u003C\u002Fcode> pair\u003Cbr \u002F>\nwhere \u003Ccode>key\u003C\u002Fcode> means \u003Cstrong>breakpoint\u003C\u002Fstrong>\u003Cbr \u002F>\nand \u003Ccode>value\u003C\u002Fcode> is array of \u003Cstrong>width, height, crop and alternative_attachment_id\u003C\u002Fstrong>\u003Cbr \u002F>\nExample: \u003Ccode>[ 767 => [ 767, 400, 1, 987 ], 9999 => [ 1200, 500, 1 ] ]\u003C\u002Fcode>\u003Cbr \u002F>\nThis will generate \u003Ccode>\u003Csource media=\"(max-width:767px)\" srcset=\"image987_767x400.jpg\">\u003C\u002Fcode>\u003Cbr \u002F>\nand \u003Ccode>\u003Csource media=\"(max-width:9999px)\" srcset=\"image_1200x500.jpg\">\u003C\u002Fcode>\u003Cbr \u002F>\nand \u003Ccode>\u003Csource media=\"(min-width:10000px)\" srcset=\"image.jpg\">\u003C\u002Fcode>\u003Cbr \u002F>\nIf you will provide also key \u003Ccode>0\u003C\u002Fcode> then it will replace \u003Ccode>\u003Cimg>\u003C\u002Fcode>.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>attr\u003C\u002Fstrong> (array)(optional)\u003Cbr \u002F>\nAn array of attributes\u003Cbr \u002F>\nSpecial attribute \u003Ccode>retina\u003C\u002Fcode> allows you to automatically generate srcset for \u003Ccode>@2x\u003C\u002Fcode> retina devices\u003Cbr \u002F>\nExample: \u003Ccode>array( 'retina' => true, 'alt' => 'Custom alt text', 'class' => 'my-class', 'id' => 'my-id' )\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Example:\u003Cbr \u002F>\nTo generate perfect fullwidth hero image, that will looks great on 4K devices and also on small phones, but it will load only needed size, you can use:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>echo bis_get_attachment_picture(\n    get_post_thumbnail_id(),\n    [\n        375 => [ 375, 500, 1, 987 ],\n        575 => [ 575, 500, 1, 987 ],\n        767 => [ 767, 500, 1, 987 ],\n        991 => [ 991, 500, 1 ],\n        1199 => [ 1199, 500, 1 ],\n        1399 => [ 1399, 500, 1 ],\n        1600 => [ 1600, 500, 1 ],\n        1920 => [ 1920, 500, 1 ],\n        2560 => [ 2560, 500, 1 ],\n        3440 => [ 3440, 500, 1 ],\n        3840 => [ 3840, 500, 1 ],\n    ]\n);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Returns:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003Cpicture>\n    \u003Csource media=\"(max-width:375px)\" srcset=\"https:\u002F\u002Fweb.com\u002Fwp-content\u002Fuploads\u002Fbis-images\u002F987\u002Fyour-image-375x500-f50_50.jpg\">\n    \u003Csource media=\"(max-width:575px)\" srcset=\"https:\u002F\u002Fweb.com\u002Fwp-content\u002Fuploads\u002Fbis-images\u002F987\u002Fyour-image-575x500-f50_50.jpg\">\n    \u003Csource media=\"(max-width:767px)\" srcset=\"https:\u002F\u002Fweb.com\u002Fwp-content\u002Fuploads\u002Fbis-images\u002F987\u002Fyour-image-767x500-f50_50.jpg\">\n    \u003Csource media=\"(max-width:991px)\" srcset=\"https:\u002F\u002Fweb.com\u002Fwp-content\u002Fuploads\u002Fbis-images\u002F123\u002Fyour-image-991x500-f50_50.jpg\">\n    \u003Csource media=\"(max-width:1199px)\" srcset=\"https:\u002F\u002Fweb.com\u002Fwp-content\u002Fuploads\u002Fbis-images\u002F123\u002Fyour-image-1199x500-f50_50.jpg\">\n    \u003Csource media=\"(max-width:1399px)\" srcset=\"https:\u002F\u002Fweb.com\u002Fwp-content\u002Fuploads\u002Fbis-images\u002F123\u002Fyour-image-1399x500-f50_50.jpg\">\n    \u003Csource media=\"(max-width:1600px)\" srcset=\"https:\u002F\u002Fweb.com\u002Fwp-content\u002Fuploads\u002Fbis-images\u002F123\u002Fyour-image-1600x500-f50_50.jpg\">\n    \u003Csource media=\"(max-width:1920px)\" srcset=\"https:\u002F\u002Fweb.com\u002Fwp-content\u002Fuploads\u002Fbis-images\u002F123\u002Fyour-image-1920x500-f50_50.jpg\">\n    \u003Csource media=\"(max-width:2560px)\" srcset=\"https:\u002F\u002Fweb.com\u002Fwp-content\u002Fuploads\u002Fbis-images\u002F123\u002Fyour-image-2560x500-f50_50.jpg\">\n    \u003Csource media=\"(max-width:3440px)\" srcset=\"https:\u002F\u002Fweb.com\u002Fwp-content\u002Fuploads\u002Fbis-images\u002F123\u002Fyour-image-3440x500-f50_50.jpg\">\n    \u003Csource media=\"(max-width:3840px)\" srcset=\"https:\u002F\u002Fweb.com\u002Fwp-content\u002Fuploads\u002Fbis-images\u002F123\u002Fyour-image-3840x500-f50_50.jpg\">\n    \u003Csource media=\"(min-width:3841px)\" srcset=\"https:\u002F\u002Fweb.com\u002Fwp-content\u002Fuploads\u002F2022\u002F11\u002Fyour-image.jpg\">\n    \u003Cimg width=\"4000\" height=\"2000\" src=\"https:\u002F\u002Fweb.com\u002Fwp-content\u002Fuploads\u002F2022\u002F11\u002Fyour-image.jpg\" alt=\"Some alt\" loading=\"lazy\">\n\u003C\u002Fpicture>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>&nbsp;\u003C\u002Fp>\n\u003Ch3>There is no fallback for \u003Ccode>fly_add_image_size\u003C\u002Fcode> function\u003C\u002Fh3>\n\u003Cp>If you used \u003Cem>Fly Dynamic Image Resizer\u003C\u002Fem> before, you need to remove \u003Ccode>fly_add_image_size\u003C\u002Fcode> functions from your code.\u003Cbr \u002F>\nYou can create your own variables for sizes if you need it, like\u003C\u002Fp>\n\u003Cpre>\u003Ccode>define( 'MY_CUSTOM_SIZE', [ 1000, 200 ] );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>and then just us it inside functions, like:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>echo bis_get_attachment_image( get_post_thumbnail_id(), MY_CUSTOM_SIZE );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>&nbsp;\u003C\u002Fp>\n\u003Ch3>Support other extensions than JPG, PNG and WEBP\u003C\u002Fh3>\n\u003Cp>This plugin works by default only with JPG, PNG and WEBP files,\u003Cbr \u002F>\nbut you can easily allow any other mime types,\u003Cbr \u002F>\njust use this code eg. in \u003Ccode>wp-config.php\u003C\u002Fcode> or in your \u003Ccode>functions.php\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>define( 'BIS_ALLOWED_MIME_TYPES', array( 'image\u002Fjpeg', 'image\u002Fpng', 'any_other\u002Fmime_type' ) );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>&nbsp;\u003C\u002Fp>\n\u003Ch3>Get selected image focal point\u003C\u002Fh3>\n\u003Cp>Focal point data are stored in the attachement post metas.\u003Cbr \u002F>\nThere is also custom sanitize function, that you can use.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$focal_point = sanitize_focal_point( get_post_meta( get_post_thumbnail_id(), 'focal_point', true ) );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Returns:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>array( 0.5, 0.8 )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>which means that focal point is 50% from left and 80% from top\u003C\u002Fp>\n","Dynamically generate only needed image sizes for only needed images, with manually selected focal point for crops",2000,21720,5,"2025-12-01T23:18:00.000Z","3.0.1","5.6",[20,133,134,135,4],"optimize","responsive","retina","https:\u002F\u002Fwp-speedup.eu","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbetter-image-sizes.3.9.zip",{"attackSurface":139,"codeSignals":164,"taintFlows":173,"riskAssessment":192,"analyzedAt":195},{"hooks":140,"ajaxHandlers":160,"restRoutes":161,"shortcodes":162,"cronEvents":163,"entryPointCount":24,"unprotectedCount":24},[141,146,149,154,157],{"type":142,"name":143,"callback":143,"file":144,"line":145},"action","init","plugin.php",24,{"type":142,"name":147,"callback":147,"file":144,"line":148},"admin_menu",33,{"type":150,"name":151,"callback":151,"priority":152,"file":144,"line":153},"filter","image_resize_dimensions",10,36,{"type":150,"name":155,"callback":155,"priority":152,"file":144,"line":156},"image_downsize",37,{"type":150,"name":158,"callback":158,"priority":152,"file":144,"line":159},"get_post_metadata",40,[],[],[],[],{"dangerousFunctions":165,"sqlUsage":166,"outputEscaping":168,"fileOperations":24,"externalRequests":24,"nonceChecks":171,"capabilityChecks":24,"bundledLibraries":172},[],{"prepared":24,"raw":24,"locations":167},[],{"escaped":169,"rawEcho":24,"locations":170},9,[],2,[],[174],{"entryPoint":175,"graph":176,"unsanitizedCount":24,"severity":191},"\u003Coptions> (admin\\options.php:0)",{"nodes":177,"edges":188},[178,183],{"id":179,"type":180,"label":181,"file":182,"line":153},"n0","source","$_SERVER['REQUEST_URI']","admin\\options.php",{"id":184,"type":185,"label":186,"file":182,"line":153,"wp_function":187},"n1","sink","echo() [XSS]","echo",[189],{"from":179,"to":184,"sanitized":190},true,"low",{"summary":193,"deductions":194},"The \"thumbnails\" v1.1.8 plugin exhibits a strong security posture based on the provided static analysis. The absence of any attack surface entry points like AJAX handlers, REST API routes, shortcodes, or cron events significantly limits the plugin's exposure to external manipulation. Furthermore, the code demonstrates excellent security practices by utilizing prepared statements for all SQL queries and ensuring 100% of output is properly escaped. The presence of two nonce checks also indicates a basic level of protection against common WordPress vulnerabilities.\n\nThe taint analysis revealed no flows with unsanitized paths, suggesting that user-supplied input, if any, is being handled safely. The vulnerability history is also clean, with no known CVEs or past vulnerabilities recorded, which generally indicates a well-maintained and secure plugin. The lack of dangerous functions, file operations, and external HTTP requests further bolsters this positive assessment.\n\nOverall, the \"thumbnails\" v1.1.8 plugin appears to be a secure choice. Its strengths lie in its minimal attack surface, robust input sanitization, and clean vulnerability history. The only minor area for potential improvement, though not a critical flaw based on the data, would be the implementation of capability checks, as none were detected. However, given the lack of exposed entry points, this is a very low-priority concern.",[],"2026-03-16T19:04:04.312Z",{"wat":197,"direct":206},{"assetPaths":198,"generatorPatterns":201,"scriptPaths":202,"versionParams":203},[199,200],"\u002Fwp-content\u002Fplugins\u002Fthumbnails\u002Fcss\u002Fstyle.css","\u002Fwp-content\u002Fplugins\u002Fthumbnails\u002Fjs\u002Fscript.js",[],[200],[204,205],"thumbnails\u002Fcss\u002Fstyle.css?ver=","thumbnails\u002Fjs\u002Fscript.js?ver=",{"cssClasses":207,"htmlComments":208,"htmlAttributes":209,"restEndpoints":210,"jsGlobals":211,"shortcodeOutput":212},[],[],[],[],[],[]]