{"id":321360,"date":"2026-06-04T09:25:47","date_gmt":"2026-06-04T09:25:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/featured-image-placeholders\/"},"modified":"2026-06-30T11:42:10","modified_gmt":"2026-06-30T11:42:10","slug":"senzastile-featured-image-fallbacks","status":"publish","type":"plugin","link":"https:\/\/ko.wordpress.org\/plugins\/senzastile-featured-image-fallbacks\/","author":23502797,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.1","stable_tag":"1.1.1","tested":"7.0","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Senzastile Featured Image Fallbacks","header_author":"senzastile","header_description":"Automatically display fallback featured images for posts without featured images assigned.","assets_banners_color":"eaf4fc","last_updated":"2026-06-30 11:42:10","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.senzastile.it","header_author_uri":"https:\/\/profiles.wordpress.org\/senzastile\/","rating":0,"author_block_rating":0,"active_installs":20,"downloads":1059,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"senzastile","date":"2026-06-04 09:25:24"},"1.1.1":{"tag":"1.1.1","author":"senzastile","date":"2026-06-30 11:42:10"}},"upgrade_notice":{"1.1.1":"<p>Important fix: resolves a Fatal Error on activation introduced by the 1.1.0 package. Updating is strongly recommended.<\/p>","1.1.0":"<p>Adds per-category placeholder pools, a block-editor checkbox to skip fallbacks on individual posts, and a clearer settings page. Existing settings keep working \u2014 no action required.<\/p>","1.0.2":"<p>Prefix rename for WordPress.org review. Existing settings are migrated automatically; no action required.<\/p>","1.0.1":"<p>Plugin rebranded to Senzastile Featured Image Fallbacks. No functional changes.<\/p>","1.0.0":"<p>Initial release of Senzastile Featured Image Fallbacks.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3560577,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3560577,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3560577,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3560577,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2","1.1.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3584489,"resolution":"1","location":"assets","locale":"","width":977,"height":868},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3584489,"resolution":"2","location":"assets","locale":"","width":977,"height":868},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3591418,"resolution":"3","location":"assets","locale":"","width":977,"height":868},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3591418,"resolution":"4","location":"assets","locale":"","width":1200,"height":868},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3591418,"resolution":"5","location":"assets","locale":"","width":1200,"height":868}},"screenshots":{"1":"Before \/ after: an archive grid with empty thumbnails versus the same grid with automatic fallback images.","2":"The settings page with the global placeholder image pool and drag-and-drop ordering.","3":"Per-category placeholder pools for assigning dedicated images to specific categories.","4":"The per-post opt-out checkbox in the block editor document sidebar.","5":"A modern blog\/archive grid with consistent fallback featured images applied."}},"plugin_section":[61],"plugin_tags":[1794,16607,265772,1795,4887],"plugin_category":[50],"plugin_contributors":[264969],"plugin_business_model":[],"class_list":["post-321360","plugin","type-plugin","status-publish","hentry","plugin_section-featured","plugin_tags-custom-post-type","plugin_tags-default-thumbnail","plugin_tags-fallback-image","plugin_tags-featured-image","plugin_tags-placeholder","plugin_category-media","plugin_contributors-senzastile","plugin_committers-senzastile"],"banners":{"banner":"https:\/\/ps.w.org\/senzastile-featured-image-fallbacks\/assets\/banner-772x250.png?rev=3560577","banner_2x":"https:\/\/ps.w.org\/senzastile-featured-image-fallbacks\/assets\/banner-1544x500.png?rev=3560577","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/senzastile-featured-image-fallbacks\/assets\/icon-128x128.png?rev=3560577","icon_2x":"https:\/\/ps.w.org\/senzastile-featured-image-fallbacks\/assets\/icon-256x256.png?rev=3560577","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/senzastile-featured-image-fallbacks\/assets\/screenshot-1.png?rev=3584489","caption":"Before \/ after: an archive grid with empty thumbnails versus the same grid with automatic fallback images."},{"src":"https:\/\/ps.w.org\/senzastile-featured-image-fallbacks\/assets\/screenshot-2.png?rev=3584489","caption":"The settings page with the global placeholder image pool and drag-and-drop ordering."},{"src":"https:\/\/ps.w.org\/senzastile-featured-image-fallbacks\/assets\/screenshot-3.png?rev=3591418","caption":"Per-category placeholder pools for assigning dedicated images to specific categories."},{"src":"https:\/\/ps.w.org\/senzastile-featured-image-fallbacks\/assets\/screenshot-4.png?rev=3591418","caption":"The per-post opt-out checkbox in the block editor document sidebar."},{"src":"https:\/\/ps.w.org\/senzastile-featured-image-fallbacks\/assets\/screenshot-5.png?rev=3591418","caption":"A modern blog\/archive grid with consistent fallback featured images applied."}],"raw_content":"<!--section=description-->\n<p><strong>Missing featured images make your blog and archive pages look broken.<\/strong> Senzastile Featured Image Fallbacks fixes that automatically: whenever a post, page, or custom post type is published without a featured image, the plugin instantly serves a beautiful fallback image or placeholder image from your Media Library \u2014 so your card grids, archives, and theme layouts always look complete and professional.<\/p>\n\n<p>No more empty boxes. No more inconsistent blog grids. No more editing old posts one by one.<\/p>\n\n<p>Best of all, it is <strong>100% non-destructive<\/strong>: the plugin works on the frontend only and never touches your posts or your database. Deactivate it and everything reverts instantly.<\/p>\n\n<h4>Why you'll love it<\/h4>\n\n<ul>\n<li><strong>Consistent, professional layouts<\/strong> \u2014 every archive, blog grid, and related-posts block looks finished, even for posts without a thumbnail.<\/li>\n<li><strong>Set it once, forget it<\/strong> \u2014 pick your placeholder images, choose your post types, and you're done.<\/li>\n<li><strong>Safe by design<\/strong> \u2014 no database changes, no modified posts, no lock-in.<\/li>\n<li><strong>Works with your theme<\/strong> \u2014 compatible with classic themes and modern block themes that use standard WordPress featured image functions.<\/li>\n<li><strong>Full control<\/strong> \u2014 choose different placeholders per category, or skip fallbacks on individual posts.<\/li>\n<\/ul>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li>Build a pool of default featured images straight from the Media Library<\/li>\n<li>Drag-and-drop ordering for your placeholder images<\/li>\n<li><strong>Stable Random<\/strong> mode \u2014 each post keeps the same fallback image (cache-friendly, recommended)<\/li>\n<li><strong>Pure Random<\/strong> mode \u2014 a different placeholder on each page load for extra variety<\/li>\n<li>Enable fallbacks for any public post type, including custom post types (CPTs)<\/li>\n<li><strong>Per-category placeholder pools<\/strong> \u2014 assign a dedicated image set to specific categories<\/li>\n<li><strong>Per-post opt-out<\/strong> \u2014 a simple checkbox in the block editor to skip fallbacks for a single post<\/li>\n<li>Lightweight, fast, and database-safe<\/li>\n<li>Fully translatable (i18n-ready) with an included POT template<\/li>\n<li>Developer-friendly filters for advanced customization<\/li>\n<\/ul>\n\n<p>Whether you run a magazine, a blog, a WooCommerce store, or a portfolio built on custom post types, Senzastile Featured Image Fallbacks keeps your featured images consistent everywhere.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/senzastile-featured-image-fallbacks<\/code> directory, or install the plugin through the WordPress <strong>Plugins<\/strong> screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Go to <strong>Settings \u2192 Image Fallbacks<\/strong>.<\/li>\n<li>Add one or more placeholder images from the Media Library.<\/li>\n<li>Choose a selection mode and the post types that should use fallbacks, then save.<\/li>\n<\/ol>\n\n<p>That's it \u2014 your missing featured images are now handled automatically.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20this%20modify%20my%20posts%3F\"><h3>Will this modify my posts?<\/h3><\/dt>\n<dd><p>No. The plugin filters featured image data on the frontend only. It never edits your posts, never sets a real featured image, and never changes your database. If you deactivate the plugin, every post returns to its original state immediately.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20custom%20post%20types%3F\"><h3>Does it work with custom post types?<\/h3><\/dt>\n<dd><p>Yes. The plugin supports standard posts, pages, and any public Custom Post Type (CPT) registered on your site. You choose exactly which post types use fallback images on the settings page.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20block%20themes%20%28full%20site%20editing%29%3F\"><h3>Does it work with block themes (Full Site Editing)?<\/h3><\/dt>\n<dd><p>Yes. The plugin hooks into the standard WordPress featured image APIs (such as <code>get_post_thumbnail_id()<\/code>, <code>has_post_thumbnail()<\/code>, and <code>the_post_thumbnail()<\/code>), which are used by both classic themes and modern block themes. As long as your theme displays featured images through these standard functions, fallbacks appear automatically.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%3F\"><h3>Does it work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. WooCommerce products are a custom post type, so you can enable fallbacks for them on the settings page and a placeholder will be shown for any product without a product image on the frontend. Note that WooCommerce also ships its own built-in product placeholder; if you prefer this plugin's images for shop and archive grids, enable the <code>product<\/code> post type here. The plugin does not modify product data.<\/p><\/dd>\n<dt id=\"can%20i%20disable%20fallbacks%20for%20individual%20posts%3F\"><h3>Can I disable fallbacks for individual posts?<\/h3><\/dt>\n<dd><p>Yes. Open any post in the block editor, find the <strong>Featured Image Fallbacks<\/strong> panel in the document sidebar, and check <em>Do not use fallback images for this content<\/em>. Developers can also use the <code>senzfif_enabled<\/code> filter, which takes precedence over the per-post checkbox.<\/p><\/dd>\n<dt id=\"can%20i%20use%20different%20placeholders%20for%20different%20categories%3F\"><h3>Can I use different placeholders for different categories?<\/h3><\/dt>\n<dd><p>Yes. In <strong>Settings \u2192 Image Fallbacks<\/strong>, scroll to <strong>Category Pools<\/strong> and assign a dedicated set of images to any category. A post uses the pool of its first matching category; if no category pool matches, the global pool is used.<\/p><\/dd>\n<dt id=\"what%27s%20the%20difference%20between%20stable%20random%20and%20pure%20random%3F\"><h3>What's the difference between Stable Random and Pure Random?<\/h3><\/dt>\n<dd><p><strong>Stable Random<\/strong> assigns the same fallback image to the same post every time, keeping your layouts consistent and working perfectly with page caching and CDNs (recommended). <strong>Pure Random<\/strong> picks a different image on each uncached page load for more variety. If you use a caching plugin or CDN, choose Stable Random \u2014 cached pages will otherwise \"freeze\" whichever random image was stored at cache time.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20uninstall%20the%20plugin%3F\"><h3>What happens if I uninstall the plugin?<\/h3><\/dt>\n<dd><p>Uninstalling cleanly removes everything the plugin created: its settings, the per-post opt-out data, and any legacy settings from previous versions. Your posts, pages, products, and real featured images are never touched. Simply deactivating (without deleting) keeps your settings for later.<\/p><\/dd>\n<dt id=\"can%20i%20override%20the%20selected%20placeholder%20programmatically%3F\"><h3>Can I override the selected placeholder programmatically?<\/h3><\/dt>\n<dd><p>Yes. Developers can use the <code>senzfif_placeholder_id<\/code> filter to change the attachment ID returned for a given post.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fixed: Fatal Error on activation caused by a 1.1.0 packaging issue (the <code>class-post-meta.php<\/code> file was missing from the published package).<\/li>\n<li>Fixed: the block editor opt-out script (<code>editor.js<\/code>) is now correctly included in the package.<\/li>\n<li>New: live <strong>Plugin Status<\/strong> panel on the settings page (versions, REST API, Gutenberg, engine, post meta, compatibility).<\/li>\n<li>New: one-time <strong>What's New<\/strong> screen after updating, styled like the WordPress About page (administrators only).<\/li>\n<li>New: optional, fully dismissible 5-star review reminder shown only to active administrators (native admin notice, no popups).<\/li>\n<li>Improved: release packaging and the included POT translation template.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: Per-category placeholder pools \u2014 assign a dedicated image set to specific categories; a post uses the first matching category pool, otherwise the global pool (backward-compatible settings schema).<\/li>\n<li>New: Per-post opt-out in the block editor document panel (<code>_senzfif_disabled<\/code> post meta, REST-registered with an auth callback).<\/li>\n<li>New: Included POT translation template for full internationalization.<\/li>\n<li>Improved: Clearer settings page copy, better empty states, and a stronger page-caching warning for Pure Random mode.<\/li>\n<li>Improved: Legacy settings migration now runs once on <code>admin_init<\/code> (guarded by an option flag) instead of on every front-end request; the activation hook is unchanged.<\/li>\n<li>Developer: The <code>senzfif_enabled<\/code> filter still applies and can override the per-post checkbox.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Renamed plugin prefixes from <code>fip<\/code> to <code>senzfif<\/code> for WordPress.org guidelines compliance.<\/li>\n<li>Automatic migration of settings from <code>fip_settings<\/code> to <code>senzfif_settings<\/code> on upgrade.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Rebranded plugin name and slug to Senzastile Featured Image Fallbacks.<\/li>\n<li>Updated text domain to senzastile-featured-image-fallbacks.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Placeholder image pool with drag-and-drop ordering.<\/li>\n<li>Stable Random and Pure Random selection modes.<\/li>\n<li>Post type targeting for public content types.<\/li>\n<li>Developer filters: <code>fip_enabled<\/code>, <code>fip_placeholder_id<\/code>.<\/li>\n<\/ul>","raw_excerpt":"Never show a blank thumbnail again. Automatically display a default featured image, fallback image, or placeholder image for any post, page, or custom &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/321360","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=321360"}],"author":[{"embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/senzastile"}],"wp:attachment":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=321360"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=321360"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=321360"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=321360"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=321360"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=321360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}