{"id":274844,"date":"2026-03-03T02:29:48","date_gmt":"2026-03-03T02:29:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/functionalities\/"},"modified":"2026-04-05T09:10:31","modified_gmt":"2026-04-05T09:10:31","slug":"functionalities","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/functionalities\/","author":13255989,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.5","stable_tag":"1.4.5","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Dynamic Functionalities","header_author":"Gaurav Tiwari","header_description":"Modular site-specific plugin with modern dashboard and features.","assets_banners_color":"e1eaf4","last_updated":"2026-04-05 09:10:31","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/gauravtiwari.org\/donate\/","header_plugin_uri":"https:\/\/functionalities.dev","header_author_uri":"https:\/\/gauravtiwari.org","rating":0,"author_block_rating":0,"active_installs":10,"downloads":618,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.1":{"tag":"1.1.1","author":"gauravtiwari","date":"2026-03-03 02:34:22"},"1.2.0":{"tag":"1.2.0","author":"gauravtiwari","date":"2026-03-08 15:54:42"},"1.3.0":{"tag":"1.3.0","author":"gauravtiwari","date":"2026-03-13 03:13:16"},"1.3.1":{"tag":"1.3.1","author":"gauravtiwari","date":"2026-03-21 07:50:51"},"1.4.0":{"tag":"1.4.0","author":"gauravtiwari","date":"2026-03-27 16:59:08"},"1.4.1":{"tag":"1.4.1","author":"gauravtiwari","date":"2026-03-28 16:37:43"},"1.4.2":{"tag":"1.4.2","author":"gauravtiwari","date":"2026-03-31 13:22:21"},"1.4.3":{"tag":"1.4.3","author":"gauravtiwari","date":"2026-04-01 13:45:57"},"1.4.4":{"tag":"1.4.4","author":"gauravtiwari","date":"2026-04-01 13:58:52"},"1.4.5":{"tag":"1.4.5","author":"gauravtiwari","date":"2026-04-05 09:10:31"},"v1.1.0":{"tag":"v1.1.0","author":"gauravtiwari","date":"2026-03-03 02:29:30"}},"upgrade_notice":{"1.4.5":"
Enables WOFF\/WOFF2 font uploads in the media library with magic-byte validation for security.<\/p>","1.4.4":"
Extends Vue\/Alpine.js protection to Schema and Block Cleanup modules. All DOMDocument-based content filters now skip JS framework content.<\/p>","1.4.3":"
Fixes Link Management breaking pages that use Vue.js (MyListing explore page, etc.). DOMDocument no longer corrupts Vue\/React template directives.<\/p>","1.4.2":"
Fixes Code quality and plugin review compliance: WP_Filesystem for all file writes, comprehensive uninstall cleanup (opt-in), shared CSS sanitization trait, and minor fixes.<\/p>","1.4.0":" Bricks Builder font support. Task Manager redesign: cleaner card-based UI, external CSS, improved modals, hover actions on tasks, and polished column view.<\/p>","1.3.3":" Snippets UI polish: collapsible cards with type badges, smoother interactions, and bug fixes.<\/p>","1.3.2":" Header & Footer snippets now support multiple code blocks per location with individual toggles. Fixes CSS output for non-admin users. Removes legacy GT Nofollow Manager compatibility.<\/p>","1.3.1":" Link Management now works with ACF fields and custom templates via process_content() helper. Redirect Manager fixes query string matching and adds loop detection.<\/p>","1.3.0":" WordPress 7 compatibility: editor CSS now loads inside the iframed block editor. Fixes version tag stripping in admin.<\/p>","1.2.0":" All modules now require explicit activation. After updating, visit Functionalities settings and enable the modules you use.<\/p>","1.1.0":" All features are now free and open source. 16 modules for performance, security, SEO, and content management.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3473202,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3473202,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":3473202,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3473202,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3473202,"resolution":"772x250","location":"assets","locale":""},"banner.svg":{"filename":"banner.svg","revision":3473202,"resolution":false,"location":"assets","locale":false}},"assets_blueprints":{},"all_blocks":{"functionalities\/svg-icon-block":{"name":"functionalities\/svg-icon-block","title":"Svg Icon Block"}},"tagged_versions":["1.1.1","1.2.0","1.3.0","1.3.1","1.4.0","1.4.1","1.4.2","1.4.3","1.4.4","1.4.5","v1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3473202,"resolution":"1","location":"assets","locale":""},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3473202,"resolution":"2","location":"assets","locale":""},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3473202,"resolution":"3","location":"assets","locale":""}},"screenshots":{"1":"Dashboard overview with module cards","2":"Content Integrity module","3":"Assumption Detection module"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[3786,247,925,600,186],"plugin_category":[54,55],"plugin_contributors":[90890],"plugin_business_model":[],"class_list":["post-274844","plugin","type-plugin","status-publish","hentry","plugin_tags-cleanup","plugin_tags-performance","plugin_tags-redirection","plugin_tags-security","plugin_tags-seo","plugin_category-security-and-spam-protection","plugin_category-seo-and-marketing","plugin_contributors-gauravtiwari","plugin_committers-gauravtiwari"],"banners":{"banner":"https:\/\/ps.w.org\/functionalities\/assets\/banner-772x250.png?rev=3473202","banner_2x":"https:\/\/ps.w.org\/functionalities\/assets\/banner-1544x500.png?rev=3473202","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/functionalities\/assets\/icon.svg?rev=3473202","icon":"https:\/\/ps.w.org\/functionalities\/assets\/icon.svg?rev=3473202","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/functionalities\/assets\/screenshot-1.png?rev=3473202","caption":"Dashboard overview with module cards"},{"src":"https:\/\/ps.w.org\/functionalities\/assets\/screenshot-2.jpg?rev=3473202","caption":"Content Integrity module"},{"src":"https:\/\/ps.w.org\/functionalities\/assets\/screenshot-3.jpg?rev=3473202","caption":"Assumption Detection module"}],"raw_content":"\n Dynamic Functionalities replaces the stack of single-purpose plugins most WordPress sites depend on. Instead of installing separate plugins for performance cleanup, redirect management, login security, schema markup, external link control, and code snippets, you get 16 purpose-built modules in one package that loads less code than most individual plugins.<\/p>\n\n Every module is independent. Enable what you need, disable what you don't. Disabled modules load zero code.<\/p>\n\n A typical WordPress site runs 5-10 utility plugins that each load their own CSS, JS, options, and database queries on every page load. Dynamic Functionalities consolidates these into a single plugin with shared infrastructure:<\/p>\n\n Here's what you can deactivate after installing Dynamic Functionalities:<\/p>\n\n Some modules solve problems no other free plugin addresses:<\/p>\n\n Each module card shows what it does. Click Configure<\/strong> to access its settings. Modules you don't enable load no code at all.<\/p>\n\n\n No. Dynamic Functionalities uses lazy-loading, static caching, and fast-exit checks across all modules. Most modules add zero frontend assets. The entire plugin loads less code than many single-purpose alternatives.<\/p><\/dd>\n Yes. Every module is independent. Enable only what you need. Disabled modules don't register any hooks, load any files, or run any code.<\/p><\/dd>\n Most modules work alongside other plugins. If you already have a redirect plugin or login limiter, disable that module in Dynamic Functionalities to avoid overlap. The Assumption Detection module actually helps you find these conflicts.<\/p><\/dd>\n Yes. Tested with WP Super Cache, W3 Total Cache, LiteSpeed Cache, and FlyingPress. No special configuration needed.<\/p><\/dd>\n Yes. All modules work with classic themes, block themes, Elementor, Bricks Builder, GenerateBlocks, and other page builders. The Fonts module has native Bricks Builder integration \u2014 custom fonts appear in the Bricks typography picker and load inside the builder canvas.<\/p><\/dd>\n Yes. The Meta & Copyright module detects active SEO plugins and adjusts its behavior to avoid duplicate meta tags. Schema Settings works alongside SEO plugin schemas without conflicts.<\/p><\/dd>\n File-based JSON storage, not database tables. This means redirects load faster and don't bloat your wp_options or create custom tables that survive uninstallation.<\/p><\/dd>\n The Redirect Manager supports manual entry of 301, 302, 307, and 308 redirects. For bulk migration, export your existing redirects as CSV and add them through the interface.<\/p><\/dd>\n All settings are preserved in the database. Reactivate anytime and everything is restored.<\/p><\/dd>\n Before uninstalling, go to the Functionalities dashboard and check \"Delete all plugin data when uninstalling\"<\/strong> under Data Management. This removes all options, post metadata, transients, and files created by the plugin. Without this checkbox, only the generated CSS file is removed \u2014 your settings are preserved in case you reinstall.<\/p><\/dd>\n\n<\/dl>\n\n\ndata-*<\/code> and other attributes being stripped from script\/style\/link tags in Header & Footer snippets for non-admin users.<\/p>","1.4.1":"Replace your plugin stack with one lightweight toolkit<\/h3>\n\n
Why Not Just Use Separate Plugins?<\/h4>\n\n
\n
What It Replaces<\/h4>\n\n
\n
Modules That Don't Have Alternatives<\/h4>\n\n
\n
Performance First<\/h4>\n\n
\n
Developer Friendly<\/h4>\n\n
\n
Functionalities\\Features\\*<\/code>, Functionalities\\Admin\\*<\/code><\/li>\nfunctionalities_<\/code> for safe filtering<\/li>\nDocumentation & Support<\/h4>\n\n
\n
\n
functionalities<\/code> folder to \/wp-content\/plugins\/<\/code><\/li>\n\n
Does this plugin slow down my site?<\/h3><\/dt>\n
Can I use only specific modules?<\/h3><\/dt>\n
Will this conflict with my existing plugins?<\/h3><\/dt>\n
Does it work with caching plugins?<\/h3><\/dt>\n
Does it work with page builders and block themes?<\/h3><\/dt>\n
Is the plugin compatible with Rank Math, Yoast, or other SEO plugins?<\/h3><\/dt>\n
How are redirects stored?<\/h3><\/dt>\n
Can I migrate redirects from another plugin?<\/h3><\/dt>\n
What happens if I deactivate the plugin?<\/h3><\/dt>\n
How do I completely remove all plugin data?<\/h3><\/dt>\n
1.4.5<\/h4>\n\n
\n
1.4.4<\/h4>\n\n
\n
filter_article()<\/code> now skips content with Vue\/Alpine.js directives \u2014 prevents DOMDocument from corrupting JS framework templates<\/li>\nfilter_content_cleanup()<\/code> now skips content with JS framework directives<\/li>\nHas_Dom_Parser<\/code> trait used by Link Management, Schema, and Block Cleanup<\/li>\nthe_content<\/code> filters that use DOMDocument (priorities 12, 14, 999) are now protected against JS framework corruption<\/li>\n<\/ul>\n\n1.4.3<\/h4>\n\n
\n
process_content()<\/code> now skips HTML containing Vue.js directives (v-cloak<\/code>, v-if<\/code>, v-show<\/code>, :class<\/code>, @click<\/code>, {{ }}<\/code>)<\/li>\n1.4.2<\/h4>\n\n
\n
wp_kses<\/code> now preserves data-*<\/code> attributes on <script><\/code>, <style><\/code>, and <link><\/code> tags in Header & Footer snippets<\/li>\nasync<\/code>, defer<\/code>, nomodule<\/code>, id<\/code>, nonce<\/code>, crossorigin<\/code>, and as<\/code> attributes no longer stripped from snippet tags for non-admin users<\/li>\n1.4.1<\/h4>\n\n
\n
1.4.0<\/h4>\n\n
\n
1.3.3<\/h4>\n\n
\n
1.3.2<\/h4>\n\n
\n
<style><\/code> tags no longer stripped by wp_kses()<\/code> for non-admin users<\/li>\ngtnf_*<\/code> filter hooks from Link Management<\/li>\n1.3.1<\/h4>\n\n
\n
Link_Management::process_content()<\/code> helper for applying nofollow\/new-tab rules to ACF fields, shortcode output, and custom templates<\/li>\n\/old-page?utm=x<\/code> correctly matches \/old-page<\/code><\/li>\n1.3.0<\/h4>\n\n
\n
enqueue_block_assets<\/code> handlers so editor CSS loads inside the WP 7 iframed block editor<\/li>\nremove_query_strings<\/code>) no longer strips version tags from admin\/editor assets<\/li>\n1.2.0<\/h4>\n\n
\n
1.1.1<\/h4>\n\n
\n
1.1.0<\/h4>\n\n
\n
1.0.0<\/h4>\n\n
\n
0.15.5<\/h4>\n\n
\n
0.15.4<\/h4>\n\n
\n
0.15.3<\/h4>\n\n
\n
0.15.2<\/h4>\n\n
\n
0.15.1<\/h4>\n\n
\n
0.15.0<\/h4>\n\n
\n
0.14.0<\/h4>\n\n
\n
0.13.0<\/h4>\n\n
\n
0.12.0<\/h4>\n\n
\n
0.11.0<\/h4>\n\n
\n
0.10.0<\/h4>\n\n
\n
0.9.9<\/h4>\n\n
\n
0.9.0<\/h4>\n\n
\n