{"id":145608,"date":"2026-01-05T03:23:28","date_gmt":"2026-01-05T03:23:28","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/text-orphans-remover\/"},"modified":"2026-01-05T03:29:44","modified_gmt":"2026-01-05T03:29:44","slug":"text-orphans-remover","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/text-orphans-remover\/","author":18856024,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.1","stable_tag":"1.0.1","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Text Orphans Remover","header_author":"Jesse Naylor, Alejandro Garc\u00eda (CREMA\u2122)","header_description":"Something that graphic designers have been craving for years! A plugin to remove ugly text orphans from text paragraphs on responsive websites. The plugin executes a code known as #NoMoreOrphans, which runs browser-side after the page has loaded and corrects all unwanted text orphans following criteria gathered from professional graphic designers.","assets_banners_color":"","last_updated":"2026-01-05 03:29:44","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/cremastudio.com","header_author_uri":"https:\/\/cremastudio.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":163,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"jessenaylor","date":"2026-01-05 03:29:44"}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[4072,17741,12158,5126,29742],"plugin_category":[43],"plugin_contributors":[253296],"plugin_business_model":[],"class_list":["post-145608","plugin","type-plugin","status-publish","hentry","plugin_tags-design","plugin_tags-orphan","plugin_tags-readability","plugin_tags-typography","plugin_tags-widows","plugin_category-customization","plugin_contributors-jessenaylor","plugin_committers-jessenaylor"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/text-orphans-remover.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Text Orphans Remover (a.k.a. #NoMoreOrphans\u2122) improves the visual quality of long-form, responsive text by preventing \u201corphan\u201d words on the last line.<\/p>\n\n<p>This plugin adds a lightweight script on the <strong>front-end only<\/strong> (never in wp-admin). It measures each text block and, when appropriate, replaces the last breaking space with a non\u2011breaking space.<\/p>\n\n<p>Default processed elements:\n    p, li, h1\u2013h6, blockquote, figcaption, dd, dt<\/p>\n\n<p>You can override the selector via JavaScript:\n    window.TextOrphansRemoverSelector = 'p, li, .my-class';<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> (or upload the ZIP via Plugins \u2192 Add New).<\/li>\n<li>Activate \u201cText Orphans Remover\u201d.<\/li>\n<li>Done \u2014 it runs automatically on the front-end.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='does%20it%20work%20in%20wp-admin%3F'><h3>Does it work in wp-admin?<\/h3><\/dt>\n<dd><p>No. This plugin never loads in the admin area.<\/p><\/dd>\n<dt id='can%20i%20target%20different%20elements%3F'><h3>Can I target different elements?<\/h3><\/dt>\n<dd><p>Yes. Set <code>window.TextOrphansRemoverSelector<\/code> before the script runs (e.g. in your theme\u2019s footer or a small custom plugin).<\/p><\/dd>\n<dt id='will%20it%20break%20inline%20html%20tags%20%28links%2C%20strong%2C%20em%29%3F'><h3>Will it break inline HTML tags (links, strong, em)?<\/h3><\/dt>\n<dd><p>No. The script updates <strong>text nodes<\/strong> only and does not rewrite your HTML markup.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Rebuilt as a minimal, professional plugin.<\/li>\n<li>Keeps the original measurement-driven approach, but replaces spaces safely via text nodes (no innerHTML rewrites).<\/li>\n<li>Expands default targeting beyond paragraphs.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Original release.<\/li>\n<\/ul>","raw_excerpt":"Prevents typographic \u201corphans\u201d by replacing the final breaking space with a non\u2011breaking space in common text blocks (front\u2011end only).","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/145608","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=145608"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jessenaylor"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=145608"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=145608"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=145608"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=145608"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=145608"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=145608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}