All-in-one WordPress optimization toolkit with 16 modules for performance, security, SEO, and content management. Built with modern WordPress coding standards and a clean module-based dashboard. Optimized for performance with modular initialization, static property caching, and intelligent transients.
Version: 1.5.0
License: GPL-2.0-or-later
Text Domain: functionalities
Pricing: Free
- Download: Get the latest production-ready ZIP file from GitHub Releases.
- Upload: In your WordPress admin, go to Plugins > Add New > Upload Plugin and select the downloaded file.
- Activate: Activate the plugin through the Plugins menu in WordPress.
- Setup: Navigate to the new Functionalities menu item to enable and configure your modules.
Alternatively, you can manually copy the functionalities/ folder into wp-content/plugins/.
All modules are accessed through a unified dashboard at wp-admin/admin.php?page=functionalities. Click any module card to configure its settings.
Learn more on Functionalities Site
See the public roadmap for planned fixes and features.
This plugin is built with a "Performance First" philosophy. Unlike many all-in-one plugins that slow down your site, Functionalities is designed to be as lightweight as possible:
- Modular Initialization: Each module checks its enabled state before registering its feature hooks. Disabled modules add no frontend assets or feature behavior.
- Minimized Database Load: All module settings are cached in static properties. This ensures that
get_option()is called at most once per module per request, regardless of how many times a feature is accessed. - Zero Frontend Bloat: Most modules are "Zero Footprint" on the frontend, meaning they load no CSS or JS unless explicitly required (like the Components or Fonts modules).
- Intelligent Filtering: Content filters (
the_content, etc.) usestrpos()fast-exit checks. If the specific markers or tags for a feature aren't present in your content, the plugin exits immediately without running expensive regular expressions or DOM parsing. - Efficient HTML Processing: We use targeted regex for lightweight tasks (like Schema injection) and only resort to
DOMDocumentwhen structural manipulation is strictly necessary, ensuring maximum speed. - Aggressive Caching: Heavy operations—such as reading JSON exception lists, calculating file hashes, or managing redirects—are cached using WordPress Transients or versioned options to minimize Disk I/O.
Complete external link control with nofollow automation.
Features:
- Automatic
rel="nofollow"for external links (priority 999) - Applies to content, widgets, and comments
- Exception lists: full URLs, domains, or partial matches
- JSON preset file support for bulk exceptions
- Database update tool for bulk nofollow addition
- Open external/internal links in new tab
- Pattern-based domain matching
- Zero frontend footprint (no CSS/JS)
Navigate to: ?page=functionalities&module=link-management
Strip common wp-block classes from frontend output (.wp-block-heading, .wp-block-list, .wp-block-image). Cleaner HTML markup without the bloat.
Navigate to: ?page=functionalities&module=block-cleanup
Limit link suggestions to selected post types in the block editor. Reduces clutter in link search dialogs.
Navigate to: ?page=functionalities&module=editor-links
Fine-grained control over WordPress default behaviors and performance tweaks:
- Disable emojis scripts/styles
- Disable embeds (oEmbed)
- Remove REST API and oEmbed discovery links
- Remove RSD, WLWManifest, shortlink tags
- Remove WordPress version meta
- Disable XML-RPC (complete or pingbacks only)
- Disable RSS/Atom feeds
- Disable Gravatars
- Disable self-pingbacks
- Remove query strings from static resources
- Remove DNS prefetch
- Remove Recent Comments inline CSS
- Limit post revisions
- Disable Dashicons for non-logged-in users
- Disable Heartbeat API
- Disable admin bar on frontend
- Remove jQuery Migrate
- Load core block styles separately (per-block CSS)
- Disable block-based widget editor
- Enable PrismJS on admin screens
- Enable fullscreen toggle for backend textareas
Navigate to: ?page=functionalities&module=misc
- Google Analytics 4 integration (just enter Measurement ID)
- Custom header code injection
- Custom footer code injection
- Safe sanitization with
wp_ksesfor non-superadmins
Navigate to: ?page=functionalities&module=snippets
Add microdata to your site's HTML:
itemscope/itemtypeon<html>tag- Optional WPHeader and WPFooter microdata
- Article microdata with customizable itemtype
- Automatic headline, dates, and author properties
Navigate to: ?page=functionalities&module=schema
Define reusable CSS components as selector + CSS rules. Auto-enqueued site-wide.
Default components include: cards, buttons, badges, chips, alerts, avatars, grids, accordions.
Navigate to: ?page=functionalities&module=components
Register custom font families with @font-face:
- WOFF2 and WOFF support
- Variable fonts support
- Font-display control (swap, auto, block, fallback, optional)
- Typography assignments for body and headings via theme.json data layer
- Native Bricks Builder integration — fonts appear in the Bricks typography picker
Navigate to: ?page=functionalities&module=fonts
Copyright, Dublin Core, licensing, and SEO plugin integration.
Features:
- Automatic copyright meta tags and Dublin Core metadata
- Creative Commons licensing integration
- Standalone Schema.org output for copyright/license information
- Integration with popular SEO plugins for unified metadata
Navigate to: ?page=functionalities&module=meta
Upload custom SVG icons and insert them inline in the block editor.
Features:
- Custom SVG icon library with secure sanitization
- Inline insertion via RichText toolbar (inherits surrounding font size)
- Standalone metadata-driven SVG Icon block with alignment, native text color, spacing, anchor, and custom class support
- Pixel,
em, andremsizing with bounded values - Monochrome or original-color rendering
- Decorative or informative accessibility modes with custom labels
- Searchable, paginated, keyboard-accessible icon picker with recent icons first
- WordPress 7 Core Icon library source and two-way transforms with the Core Icon block
- Pattern overrides and block bindings for icon names and accessibility labels
- Reusable Icon Callout pattern
- Zero frontend footprint when no icons are used
Navigate to: ?page=functionalities&module=svg-icons
WordPress 7 sites gain progressive platform integrations without adding frontend assets:
- Abilities API operations for diagnostics, module controls, redirects, tasks, assumption scans, and content checks
- DataViews and DataForm workspaces for Redirect Manager, bounded 404 activity, and Task Manager
- Command Palette shortcuts for common Functionalities actions
- Optional WordPress AI Client explanations for individual Assumption Detection and Content Integrity findings
- Core Icon library interoperability in the SVG Icon block
AI explanations are disabled by default. When enabled, the plugin sends only the finding an administrator explicitly submits to the site's configured WordPress AI provider.
Detect structural regressions when posts are updated.
Internal Link Drop Detection:
- Warns when internal links are accidentally removed
- Configurable percentage threshold (default: 30%)
- Configurable absolute threshold (default: 3 links)
- Option to exclude nofollow links
Word Count Regression:
- Alerts when content is shortened significantly
- Configurable drop percentage (default: 35%)
- Minimum content age requirement (default: 30 days)
- Shortcode exclusion support
Heading Structure Analysis:
- Missing H1 detection
- Multiple H1 detection
- Skipped heading level detection (e.g., H2 → H4)
Also includes: rolling snapshot storage, admin column for regression status, block editor integration with pre-publish warnings.
Navigate to: ?page=functionalities&module=content-regression
Monitor when technical assumptions stop being true. Philosophy: "This used to be true. Now it isn't."
Detects:
- Schema collisions (multiple JSON-LD sources)
- Analytics duplication (GA4, GTM, Facebook Pixel)
- Font redundancy (same font from multiple sources)
- Inline CSS growth (performance debt monitoring)
Dashboard UI with acknowledge/ignore actions for each detected issue.
Navigate to: ?page=functionalities&module=assumption-detection
Simple, file-based project task management for content and development workflows within WordPress admin.
Features:
- Track tasks directly in the WordPress dashboard
- Stored in a portable JSON file for version control friendliness
- Organized by status and priority
Navigate to: ?page=functionalities&module=task-manager
Manage URL redirects directly from WordPress admin with high-performance file-based storage.
Features:
- Supports 301, 302, 307, and 308 redirects
- File-based JSON storage for zero database overhead during redirects
- Integrated hit counter for tracking redirect usage
- Normalized path matching
- CSV import/export with a validated dry-run preview
- Optional bounded 404 aggregation without visitor identifiers or full referrers
Navigate to: ?page=functionalities&module=redirect-manager
Enhanced login protection and security measures for your WordPress site.
Features:
- Limit login attempts to prevent brute force attacks
- Configurable lockout durations
- Disable XML-RPC authentication and application passwords
- Hide detailed login errors to prevent user enumeration
- Custom login page logo and background styling
Navigate to: ?page=functionalities&module=login-security
Make the site installable with a web app manifest, service worker, offline fallback, and optional install prompt.
Features:
- Configurable app name, colors, icons, display mode, and orientation
- Offline page and versioned runtime caching
- App shortcuts, screenshots, and advanced manifest fields
- Optional install prompt and Web Share Target support
- Root-level manifest and service worker endpoints
Navigate to: ?page=functionalities&module=pwa
Create exception-urls.json in your theme or plugin directory:
{
"urls": [
"https://example.com/trusted-page",
"https://partner-site.com",
"https://another-trusted-site.com/blog"
]
}Priority order: Custom path → Developer filter → Child theme → Parent theme → Plugin default
// Add exception domains
add_filter( 'functionalities_exception_domains', function( $domains ) {
$domains[] = 'trusted-site.com';
return $domains;
});
// Add exception URLs
add_filter( 'functionalities_exception_urls', function( $urls ) {
$urls[] = 'https://example.com/page';
return $urls;
});
// Custom JSON file path
add_filter( 'functionalities_json_preset_path', function( $path ) {
return get_stylesheet_directory() . '/my-exceptions.json';
});Navigate to Link Management and scroll to "Database Update Tool":
- Enter the URL you want to add nofollow to
- Click "Update Database"
- Confirm the operation
- Results show how many posts were updated
Caution: This directly modifies post content in the database.
You can render any icon from your library using the [func_icon] shortcode.
[func_icon name="car" class="my-custom-class"]
Attributes:
name(required): The slug of the icon as defined in the SVG Icons library.class(optional): Additional CSS classes to add to the<svg>element.
// Disable the SVG Icons module via code
add_filter( 'functionalities_svg_icons_enabled', '__return_false' );
// Filter the list of available icons
add_filter( 'functionalities_svg_icons_list', function( $icons ) {
// Modify $icons array
return $icons;
});
// Filter sanitized SVG content before it is saved to the database
add_filter( 'functionalities_svg_icons_sanitize', function( $svg, $slug ) {
return $svg;
}, 10, 2 );functionalities/
├── assets/
│ ├── css/
│ │ ├── admin.css
│ │ ├── admin-ui.css
│ │ ├── content-regression.css
│ │ └── svg-icons-editor.css
│ └── js/
│ ├── admin.js
│ ├── admin-redirects.js
│ ├── admin-tools.js
│ ├── admin-ui.js
│ ├── content-regression.js
│ └── svg-icons-editor.js
├── includes/
│ ├── admin/
│ │ ├── class-admin.php
│ │ ├── class-admin-ui.php
│ │ ├── class-module-controller.php
│ │ ├── class-module-docs.php
│ │ ├── class-redirect-manager-controller.php
│ │ ├── class-settings-portability-controller.php
│ │ ├── class-site-health-controller.php
│ │ ├── class-svg-icons-controller.php
│ │ └── class-task-manager-controller.php
│ ├── core/
│ │ └── class-module-registry.php
│ ├── features/
│ │ ├── class-assumption-detection.php
│ │ ├── class-block-cleanup.php
│ │ ├── class-components.php
│ │ ├── class-content-regression.php
│ │ ├── class-editor-links.php
│ │ ├── class-fonts.php
│ │ ├── class-link-management.php
│ │ ├── class-login-security.php
│ │ ├── class-meta.php
│ │ ├── class-misc.php
│ │ ├── class-pwa.php
│ │ ├── class-redirect-manager.php
│ │ ├── class-schema.php
│ │ ├── class-snippets.php
│ │ ├── class-svg-icons.php
│ │ └── class-task-manager.php
│ └── storage/
│ └── class-atomic-json-store.php
├── languages/
├── exception-urls.json.sample
├── functionalities.php
├── index.php
└── uninstall.php
- Create a feature class in
includes/features/class-your-module.php - Add its definition to
Core\Module_Registry::get_definitions() - Register its settings in the module controller
- Add focused tests for defaults and any pure helpers
composer install
composer lint
composer phpcs
composer test
node --check assets/js/admin.js
bash -n build.sh
./build.shThe pull-request workflow runs PHP syntax checks on PHP 7.4 through 8.5, coding standards, PHPUnit, JavaScript and shell syntax, version consistency, and distribution ZIP assertions.
Example module definition:
'your-module' => array(
'title' => __( 'Your Module', 'functionalities' ),
'description' => __( 'Brief description', 'functionalities' ),
'icon' => 'dashicons-admin-generic',
),See readme.txt for the full changelog.