{"id":278284,"date":"2026-01-27T12:13:30","date_gmt":"2026-01-27T12:13:30","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/clear-media-title-on-upload\/"},"modified":"2026-01-27T12:13:06","modified_gmt":"2026-01-27T12:13:06","slug":"runthings-empty-media-title","status":"publish","type":"plugin","link":"https:\/\/fa-af.wordpress.org\/plugins\/runthings-empty-media-title\/","author":20973379,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.0.1","stable_tag":"2.0.1","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Clear Media Title On Upload","header_author":"runthingsdev","header_description":"Clears the image title attribute field on upload, instead of setting it to the slugified filename.","assets_banners_color":"e6edf2","last_updated":"2026-01-27 12:13:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/runthings.dev\/wordpress-plugins\/empty-media-title\/","header_author_uri":"https:\/\/runthings.dev\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":118,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.1":{"tag":"2.0.1","author":"runthingsdev","date":"2026-01-27 12:13:06"}},"upgrade_notice":{"2.0.1":"<p>Improved bulk action messages and security fix for nonce verification.<\/p>","2.0.0":"<p>Added bulk action, and added filters.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3447837,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3447837,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3447837,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3447837,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3447837,"resolution":"1","location":"assets","locale":""}},"screenshots":{"1":"Before: Image uploaded with auto-generated slugified title. After: Image uploaded with empty title field."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2264,163,84,1460,259],"plugin_category":[50],"plugin_contributors":[228895],"plugin_business_model":[],"class_list":["post-278284","plugin","type-plugin","status-publish","hentry","plugin_tags-attachment","plugin_tags-images","plugin_tags-media","plugin_tags-title","plugin_tags-upload","plugin_category-media","plugin_contributors-runthingsdev","plugin_committers-runthingsdev","plugin_support_reps-rtpharry"],"banners":{"banner":"https:\/\/ps.w.org\/runthings-empty-media-title\/assets\/banner-772x250.png?rev=3447837","banner_2x":"https:\/\/ps.w.org\/runthings-empty-media-title\/assets\/banner-1544x500.png?rev=3447837","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/runthings-empty-media-title\/assets\/icon-128x128.png?rev=3447837","icon_2x":"https:\/\/ps.w.org\/runthings-empty-media-title\/assets\/icon-256x256.png?rev=3447837","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/runthings-empty-media-title\/assets\/screenshot-1.png?rev=3447837","caption":"Before: Image uploaded with auto-generated slugified title. After: Image uploaded with empty title field."}],"raw_content":"<!--section=description-->\n<p>When you upload media to WordPress, the title field is automatically set to a slugified version of the filename. This often results in messy, unoptimized titles like \"IMG-20240115-photo-final-v2\" appearing in gallery captions, alt tags, or title attributes.<\/p>\n\n<p>This plugin clears the title field for newly uploaded media, ensuring that if a title is displayed anywhere, it's one you've intentionally set yourself.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Automatically clears the title field for new media uploads<\/li>\n<li>Bulk action to clear titles on existing media library items<\/li>\n<li>Lightweight with no settings page required<\/li>\n<li>Developer-friendly with filters<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<p>The plugin hooks into WordPress's <code>wp_insert_attachment_data<\/code> filter and clears the <code>post_title<\/code> field for new uploads before they are saved to the database.<\/p>\n\n<h3>Filters<\/h3>\n\n<h4>runthings_emt_skip<\/h4>\n\n<p>Skip clearing the title for specific attachments.<\/p>\n\n<p><strong>Parameters:<\/strong><\/p>\n\n<ul>\n<li><code>$skip<\/code> (bool) - Whether to skip clearing the title. Default false.<\/li>\n<li><code>$data<\/code> (array) - Attachment post data (slashed, sanitized, processed).<\/li>\n<li><code>$postarr<\/code> (array) - Sanitized post data (not processed).<\/li>\n<li><code>$unsanitized_postarr<\/code> (array) - Unsanitized post data.<\/li>\n<li><code>$update<\/code> (bool) - Whether this is an update (always false for new uploads).<\/li>\n<\/ul>\n\n<p><strong>Example:<\/strong><\/p>\n\n<pre><code>\/\/ Skip clearing title for uploads by specific user\nadd_filter('runthings_emt_skip', function($skip, $data, $postarr) {\n    if (get_current_user_id() === 1) {\n        return true; \/\/ Admin keeps auto-generated titles\n    }\n    return $skip;\n}, 10, 3);\n\n\n\n\/\/ Skip clearing title if filename contains \"keep-title\"\nadd_filter('runthings_emt_skip', function($skip, $data, $postarr) {\n    $filename = $postarr['post_title'] ?? '';\n    if (strpos($filename, 'keep-title') !== false) {\n        return true;\n    }\n    return $skip;\n}, 10, 3);\n<\/code><\/pre>\n\n<h4>runthings_emt_mime_types<\/h4>\n\n<p>Filter which MIME types should have their title cleared. By default, all media types are affected.<\/p>\n\n<p><strong>Parameters:<\/strong><\/p>\n\n<ul>\n<li><code>$allowed_mime_types<\/code> (array) - Array of MIME type patterns. Default <code>[]<\/code> (all types).<\/li>\n<li><code>$attachment_mime_type<\/code> (string) - The attachment's MIME type.<\/li>\n<li><code>$postarr<\/code> (array) - Sanitized post data.<\/li>\n<\/ul>\n\n<p><strong>Example:<\/strong><\/p>\n\n<pre><code>\/\/ Restrict to images only\nadd_filter('runthings_emt_mime_types', function($allowed_mime_types) {\n    return ['image'];\n});\n\n\n\n\/\/ Restrict to images and PDFs only\nadd_filter('runthings_emt_mime_types', function($allowed_mime_types) {\n    return ['image', 'application\/pdf'];\n});\n<\/code><\/pre>\n\n<h3>Additional Notes<\/h3>\n\n<p>Built by Matthew Harris of runthings.dev, copyright 2022-2026.<\/p>\n\n<p>Visit <a href=\"https:\/\/runthings.dev\/\">runthings.dev<\/a> for more WordPress plugins and resources.<\/p>\n\n<p>Contribute or report issues at the <a href=\"https:\/\/github.com\/runthings-dev\/runthings-empty-media-title\">GitHub repository<\/a>.<\/p>\n\n<p>Insert space by Xinh Studio from Noun Project, https:\/\/thenounproject.com\/browse\/icons\/term\/insert-space\/ (CC BY 3.0) - https:\/\/thenounproject.com\/icon\/insert-space-239543\/<\/p>\n\n<p>Image by David Khai from Noun Project, https:\/\/thenounproject.com\/browse\/icons\/term\/image\/ (CC BY 3.0) - https:\/\/thenounproject.com\/icon\/image-661355\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/runthings-empty-media-title<\/code> directory, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>That's it! New media uploads will now have an empty title field.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20affect%20existing%20media%20in%20my%20library%3F\"><h3>Does this affect existing media in my library?<\/h3><\/dt>\n<dd><p>New uploads are cleared automatically. For existing media, you can use the bulk action in the Media Library to clear titles on selected items.<\/p><\/dd>\n<dt id=\"can%20i%20restrict%20this%20to%20certain%20file%20types%3F\"><h3>Can I restrict this to certain file types?<\/h3><\/dt>\n<dd><p>Yes! Use the <code>runthings_emt_mime_types<\/code> filter to limit which MIME types are affected. See the Filters section below.<\/p><\/dd>\n<dt id=\"can%20i%20exclude%20certain%20uploads%20from%20having%20their%20title%20cleared%3F\"><h3>Can I exclude certain uploads from having their title cleared?<\/h3><\/dt>\n<dd><p>Yes! Use the <code>runthings_emt_skip<\/code> filter to conditionally skip clearing the title. See the Filters section below.<\/p><\/dd>\n<dt id=\"why%20would%20i%20want%20an%20empty%20title%3F\"><h3>Why would I want an empty title?<\/h3><\/dt>\n<dd><p>Many themes and plugins display the media title in various places - gallery captions, lightbox overlays, or HTML title attributes. An auto-generated slugified filename like \"DSC-0042-final-edit\" looks unprofessional. With an empty title, you're in control of what gets displayed.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.1 - 23rd January 2026<\/h4>\n\n<ul>\n<li>Improved bulk action messages<\/li>\n<li>Add confirmation prompt to bulk edit list view<\/li>\n<li>Fixed nonce verification in bulk action processing<\/li>\n<\/ul>\n\n<h4>2.0.0 - 23rd January 2026<\/h4>\n\n<ul>\n<li>Complete plugin refactor with namespaced class structure<\/li>\n<li>Added bulk action \"Clear media title\" to clear titles on existing media items<\/li>\n<li>Changed default from <code>['image']<\/code> to <code>[]<\/code> (all media types)<\/li>\n<li>Added <code>runthings_emt_skip<\/code> filter for developer customization<\/li>\n<li>Added <code>runthings_emt_mime_types<\/code> filter to extend beyond images<\/li>\n<\/ul>\n\n<h4>1.0.0 - 6th January 2022<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Clears the media title field on upload, instead of setting it to the slugified filename.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/278284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=278284"}],"author":[{"embeddable":true,"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/runthingsdev"}],"wp:attachment":[{"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=278284"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=278284"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=278284"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=278284"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=278284"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fa-af.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=278284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}