{"id":312927,"date":"2026-05-19T23:01:42","date_gmt":"2026-05-19T23:01:42","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/manly-fix\/"},"modified":"2026-05-19T23:00:40","modified_gmt":"2026-05-19T23:00:40","slug":"manly-fix","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/manly-fix\/","author":7482918,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5","stable_tag":"1.5","tested":"6.9.4","requires":"4.0","requires_php":"7.2","requires_plugins":null,"header_name":"Manly Fix","header_author":"Manly Electronics","header_description":"Applies configurable HTML fixes to WordPress and WooCommerce page output. Each fix can be individually enabled or disabled.","assets_banners_color":"","last_updated":"2026-05-19 23:00:40","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/manlyelectronics.com.au","rating":0,"author_block_rating":0,"active_installs":0,"downloads":31,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.5":{"tag":"1.5","author":"DimitriAus","date":"2026-05-19 23:00:40"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3538036,"resolution":"256x256","location":"assets","locale":"","width":225,"height":225}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.5"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[203,1119,14060,724,286],"plugin_category":[45],"plugin_contributors":[253003],"plugin_business_model":[],"class_list":["post-312927","plugin","type-plugin","status-publish","hentry","plugin_tags-html5","plugin_tags-markup","plugin_tags-trailing-slash","plugin_tags-validation","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-dimitriaus","plugin_committers-dimitriaus"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/manly-fix\/assets\/icon-256x256.png?rev=3538036","icon_2x":"https:\/\/ps.w.org\/manly-fix\/assets\/icon-256x256.png?rev=3538036","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Applies configurable HTML fixes to WordPress and WooCommerce page output. Each fix can be individually enabled or disabled via <strong>Settings \u2192 Manly Fix<\/strong>.<\/p>\n\n<h3>WordPress &amp; HTML Fixes<\/h3>\n\n<ul>\n<li><p><strong>Remove trailing slashes<\/strong> - Removes XHTML-style trailing slashes (<code>\/&gt;<\/code>) from void elements (<code>&lt;meta&gt;<\/code>, <code>&lt;link&gt;<\/code>, <code>&lt;img&gt;<\/code>, <code>&lt;input&gt;<\/code>, etc.) for clean HTML5 output.\n<em>Validator: \"Info: Trailing slash on void elements has no effect and interacts badly with unquoted attribute values.\"<\/em><\/p><\/li>\n<li><p><strong>Remove intrinsic size CSS<\/strong> - Removes the <code>contain-intrinsic-size<\/code> CSS rule injected by WordPress for auto-sized images.\n<em>Validator: \"CSS: contain-intrinsic-size: Property contain-intrinsic-size doesn't exist.\"<\/em><\/p><\/li>\n<li><p><strong>Remove redundant aria-hidden<\/strong> - Removes <code>aria-hidden=\"true\"<\/code> from elements that already carry the <code>hidden<\/code> attribute.\n<em>Validator: \"Attribute aria-hidden is unnecessary for elements that have attribute hidden.\"<\/em><\/p><\/li>\n<li><p><strong>Move router style to <code>&lt;head&gt;<\/code><\/strong> - Moves the WordPress Interactivity Router animations inline <code>&lt;style&gt;<\/code> tag from <code>&lt;body&gt;<\/code> to <code>&lt;head&gt;<\/code>.\n<em>Validator: \"Element style not allowed as child of element body in this context. (Suppressing further errors from this subtree.)\"<\/em><\/p><\/li>\n<li><p><strong>Remove invalid <code>as<\/code> from prefetch links<\/strong> - Removes the invalid <code>as<\/code> attribute from <code>&lt;link rel=\"prefetch\"&gt;<\/code> elements emitted by WooCommerce.\n<em>Validator: \"A <code>link<\/code> element with an <code>as<\/code> attribute must have a <code>rel<\/code> attribute that contains the value <code>preload<\/code> or the value <code>modulepreload<\/code>.\"<\/em><\/p><\/li>\n<\/ul>\n\n<h3>WooCommerce Fixes<\/h3>\n\n<p>These fixes are only shown when WooCommerce is active.<\/p>\n\n<ul>\n<li><p><strong>Mini-cart role=\"dialog\"<\/strong> - Adds missing <code>role=\"dialog\"<\/code> to the WooCommerce mini-cart drawer div.\n<em>Validator: \"Element div is missing one or more of the following attributes: role.\"<\/em><\/p><\/li>\n<li><p><strong>Add placeholder src to Interactivity API images<\/strong> - Adds a transparent placeholder <code>src<\/code> and an empty <code>alt=\"\"<\/code> to <code>&lt;img&gt;<\/code> elements that use the WordPress Interactivity API but have no static attributes. Real values are set by JavaScript at runtime.\n<em>Validator: \"Element <code>img<\/code> is missing one or more of the following attributes: <code>src<\/code>, <code>srcset<\/code>.\" \/ \"An <code>img<\/code> element must have an <code>alt<\/code> attribute.\"<\/em><\/p><\/li>\n<\/ul>\n\n<h3>Support<\/h3>\n\n<p>For issues, feature requests, or contributions, please contact Manly Electronics.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Go to <strong>Settings \u2192 Manly Fix<\/strong> to enable or disable individual fixes<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20affect%20page%20performance%3F\"><h3>Does this plugin affect page performance?<\/h3><\/dt>\n<dd><p>No. The plugin uses output buffering at the <code>template_redirect<\/code> hook, processing the entire page once before output. On typical sites, the performance impact is negligible.<\/p><\/dd>\n<dt id=\"can%20i%20choose%20which%20fixes%20are%20applied%3F\"><h3>Can I choose which fixes are applied?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Settings \u2192 Manly Fix<\/strong> and toggle each fix on or off.<\/p><\/dd>\n<dt id=\"are%20the%20woocommerce%20fixes%20applied%20if%20woocommerce%20is%20not%20installed%3F\"><h3>Are the WooCommerce fixes applied if WooCommerce is not installed?<\/h3><\/dt>\n<dd><p>No. The WooCommerce fixes section only appears in settings and only runs when WooCommerce is active.<\/p><\/dd>\n<dt id=\"is%20this%20compatible%20with%20all%20wordpress%20versions%3F\"><h3>Is this compatible with all WordPress versions?<\/h3><\/dt>\n<dd><p>Yes, the plugin uses standard WordPress hooks and PHP functions compatible with WordPress 4.0+.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5<\/h4>\n\n<ul>\n<li>Merged all Manly Woo Fix functionality into this plugin<\/li>\n<li>Added WooCommerce fixes: mini-cart role=\"dialog\", Interactivity API image placeholder src\/alt<\/li>\n<li>Added WordPress fixes: redundant aria-hidden, router style to head, prefetch as= attribute<\/li>\n<li>WooCommerce fixes section is only shown\/applied when WooCommerce is active<\/li>\n<\/ul>\n\n<h4>1.4<\/h4>\n\n<ul>\n<li>Added \"Remove intrinsic size CSS\" fix (absorbs remove-contain-intrinsic-size plugin)<\/li>\n<\/ul>\n\n<h4>1.3<\/h4>\n\n<ul>\n<li>Added Settings page (Settings \u2192 Manly Fix) with toggles for each fix<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>Added direct file access protection<\/li>\n<li>Improved code documentation<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>Initial public release<\/li>\n<li>Support for 18 HTML5 void elements<\/li>\n<li>Output buffering implementation<\/li>\n<\/ul>","raw_excerpt":"HTML validatator errors fix in WordPress and WooCommerce.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/312927","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=312927"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dimitriaus"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=312927"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=312927"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=312927"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=312927"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=312927"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=312927"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}