This Functionalities developer reference collects the constants, option names, file layout, and hooks you need to extend or debug the plugin. Everything on this page is verified against version 1.4.7.
If you only remember one thing: every module stores its settings in exactly one option, every module is filterable, and nothing here requires touching plugin files.
Requirements and Constants
The plugin requires WordPress 5.8 or newer and PHP 7.4 or newer, and is tested up to WordPress 7.0. Four constants are defined at load:
FUNCTIONALITIES_VERSION: current plugin versionFUNCTIONALITIES_FILE: absolute path to the main plugin fileFUNCTIONALITIES_DIR: plugin directory pathFUNCTIONALITIES_URL: plugin directory URL
File Structure
functionalities/
├── assets/
│ ├── css/ # admin styles
│ └── js/ # admin scripts
├── includes/
│ ├── admin/
│ │ ├── class-admin.php # menu, dashboard, settings UI
│ │ ├── class-admin-ui.php # reusable UI helpers
│ │ └── class-module-docs.php
│ ├── features/ # one class per module
│ └── class-functionalities-loader.php
├── languages/
├── uninstall.php
└── functionalities.php # bootstrap + constantsClasses autoload from the Functionalities\ namespace; the loader only instantiates feature classes whose module is enabled.
Where Settings Live
One option per module, all prefixed functionalities_:
functionalities_misc(Performance & Cleanup),functionalities_snippets,functionalities_link_management,functionalities_redirect_manager,functionalities_schema,functionalities_block_cleanupfunctionalities_login_securityplusfunctionalities_login_lockoutsfor lockout logsfunctionalities_content_regression,functionalities_assumption_detection,functionalities_assumptions_last_runfunctionalities_fonts,functionalities_components,functionalities_meta,functionalities_editor_links,functionalities_svg_icons,functionalities_pwa,functionalities_task_managerfunctionalities_delete_data_on_uninstall: the opt-in uninstall flag
File-based data lives under wp-content/functionalities/: redirects.json for the Redirect Manager and a tasks/ directory with one JSON file per Task Manager project. All file writes go through the WP_Filesystem API.
The Filter Surface
Around 30 filters cover the plugin; these are the ones I reach for, by module:
- Link Management:
functionalities_exception_domains,functionalities_exception_urls,functionalities_json_preset_path,functionalities_link_update_batch_limit - Snippets:
functionalities_snippets_output_enabledfor conditional output - Schema:
functionalities_schema_site_itemtype,functionalities_schema_article_itemtype,functionalities_schema_enabled - Block Cleanup:
functionalities_block_cleanup_classes,functionalities_block_cleanup_content,functionalities_block_cleanup_enabled - Fonts and Components:
functionalities_fonts_items,functionalities_fonts_css,functionalities_components_items,functionalities_components_css - SVG Icons:
functionalities_svg_icons_list,functionalities_svg_icons_sanitize - PWA:
functionalities_pwa_manifest,functionalities_pwa_service_worker_config - Meta:
functionalities_meta_licenses,functionalities_meta_standalone_schema - Editor Links:
functionalities_editor_links_post_types
Every module also respects a functionalities_{module}_enabled style filter where runtime vetoes make sense, so you can disable behavior per request without touching settings.
A Worked Example
The pattern is the same for every filter: small function, one decision, return the value:
// Trust a partner domain everywhere, set in code so it survives resets.
add_filter( 'functionalities_exception_domains', function( $domains ) {
$domains[] = 'partner-site.com';
return $domains;
});Uninstall Behavior
By default, uninstalling leaves all options and files in place. If “Delete all plugin data when uninstalling” is checked on the dashboard, uninstall.php removes every option listed above, post metadata, transients, and the wp-content/functionalities/ directory. For the change history behind any of these APIs, see the plugin changelog.