Description
Saeidbakhsh Core Settings provides a small set of conservative WordPress behaviors that can be enabled independently:
- Disable Emojis
- Disable Embeds
- Remove WordPress Generator Version
- Revision Limit
- Disable XML-RPC
- Comment controls
- Remove Shortlink
- Remove Feed Discovery Links
- Disable Self Pingbacks
All tweaks are OFF by default.
Revision Limit protects revisions that existed before the setting was enabled by default. A separate, destructive, and OFF-by-default option is available for users who intentionally want the limit applied to older revisions during future post updates.
Comment controls are separated into two independent settings:
- Disable New Comments
- Hide Existing Comments on the Frontend
Existing comments are never deleted and remain manageable in wp-admin.
The installable plugin is self-contained. It requires no Composer runtime, vendor directory, JavaScript build chain, remote service, telemetry, cron job, or third-party PHP library.
The plugin uses documented WordPress APIs and PHP 7.4-compatible runtime syntax to keep its implementation small, predictable, and suitable for long-term maintenance.
The plugin is translation-ready. WordPress.org language packs are provided through translate.wordpress.org; PO/MO translation catalogs are intentionally not bundled in the plugin ZIP.
Languages
Saeidbakhsh Core Settings is translation-ready and uses the saeidbakhsh-core-settings text domain. Translations for WordPress.org releases are managed through translate.wordpress.org and delivered as WordPress language packs. Translation catalog files are not bundled in the plugin ZIP.
Third-party assets
Vazirmatn Variable Font 33.003
Copyright 2015 The Vazirmatn Project Authors (https://github.com/rastikerdar/vazirmatn).
License: SIL Open Font License 1.1. See assets/fonts/OFL.txt.
The bundled WOFF2 is a web-compressed copy of the supplied variable TTF (weight axis 100-900) and loads only on the Saeidbakhsh Core Settings settings page for Persian and Arabic admin locales.
Developer
Developed and maintained by Ahmadreza Saeidbakhsh.
Installation
- In wp-admin, go to Plugins > Add New > Upload Plugin.
- Upload the Saeidbakhsh Core Settings ZIP file.
- Activate Saeidbakhsh Core Settings.
- Go to Settings > Core.
- Enable only the behaviors you want.
The Core settings page is placed directly below General and uses native WordPress admin tabs.
FAQ
-
Are any tweaks enabled automatically?
-
No. All tweaks are OFF by default.
-
Does uninstall delete posts, comments, or revisions?
-
No. Uninstall removes only the plugin’s own stored options. It does not delete posts, comments, revisions, or other site content.
-
Does Remove WordPress Generator Version remove ?ver= from CSS or JavaScript URLs?
-
No. The setting targets WordPress generator metadata only. Asset version query strings are intentionally left unchanged because they are useful for cache invalidation and are unrelated to generator metadata.
-
How do the comment controls behave?
-
Disable New Comments prevents future comments and pings from being accepted.
Hide Existing Comments on the Frontend independently hides stored comments and their displayed counts from public-facing comment queries.
Neither setting deletes existing comment rows. Existing comments remain available for management in wp-admin.
-
Does Disable Emojis delete emoji from posts or comments?
-
No. It disables WordPress emoji assets and hides emoji characters from public rendered output.
Stored content is not rewritten, and wp-admin, REST, AJAX, cron, and XML-RPC data are not modified by the output transformation.
-
Does Disable XML-RPC only hide the X-Pingback header?
-
No. When enabled, direct requests to xmlrpc.php are terminated with HTTP 403 before WordPress creates the XML-RPC server.
XML-RPC methods and the X-Pingback header are also disabled as defense in depth.
-
How does Revision Limit protect older revisions?
-
When Revision Limit is enabled, the plugin records a baseline representing revisions that already exist.
By default, those pre-existing revisions are protected and the configured limit applies only to revisions created after the baseline.
The separate Also prune older revisions option intentionally allows WordPress Core to apply the configured limit to older revisions during future post updates. This option is destructive and OFF by default.
-
Does Disable Embeds disable the entire REST API?
-
No. The general WordPress REST API remains available.
When Disable Embeds is enabled, oEmbed retrieval is short-circuited, WordPress posts are marked non-embeddable, only oEmbed-related REST endpoints are removed, saved Embed blocks and [embed] shortcodes fall back to plain links, and direct /embed/ views redirect to the canonical local post URL.
-
Does Disable Self Pingbacks affect external pingbacks?
-
No. The setting prevents self-pingbacks while preserving external ping behavior.
Standard HTTP and HTTPS URLs are matched appropriately while non-standard ports and separate installations on the same host remain distinct.
-
Can developers extend the plugin?
-
Yes. The plugin provides a modular extension API.
See docs/developer-api.md for the module contract and extension hooks. New features can be implemented as modules without modifying the plugin bootstrap.
-
Does the plugin require Composer or third-party libraries?
-
No. The production plugin has no Composer runtime dependency, vendor directory, third-party PHP library, JavaScript framework, remote service, or package-manager requirement.
-
Can this plugin be guaranteed to run unchanged for many years?
-
No software that depends on future versions of WordPress, PHP, web servers, or hosting environments can honestly guarantee indefinite compatibility.
Saeidbakhsh Core Settings is deliberately designed to reduce long-term maintenance risk by using documented WordPress APIs, PHP 7.4-compatible runtime syntax, standard WordPress internationalization APIs, no external runtime dependencies, no remote services, and no intentional reliance on private WordPress internals.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Saeidbakhsh Core Settings” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Saeidbakhsh Core Settings” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.5.7
- Renamed the public plugin to Saeidbakhsh Core Settings and changed the prospective WordPress.org slug/text domain to
saeidbakhsh-core-settingsfollowing Plugin Review Team feedback. - Renamed the plugin directory, main plugin file, Settings page slug, plugin header, readme title, and every gettext text-domain reference to the new slug.
- Removed bundled PO, MO, and POT translation files so WordPress.org translations can be distributed through translate.wordpress.org.
- Added the developer API document referenced by the readme and kept the established
swpct_*option keys, hooks, helper functions, and PHP namespace for compatibility. - No tweak behavior was enabled by default and no remote service, telemetry, cron job, database table, JavaScript framework, or third-party PHP dependency was added.
1.5.6
- Improved Vazirmatn font coverage across Persian and Arabic plugin interface elements.
- Localized the save button through the plugin text domain and improved Persian/Arabic interface typography.
1.5.5
- Bundled the Vazirmatn variable font locally for Persian and Arabic admin locales, with no external font request.
- Improved Persian and Arabic interface typography and developer-profile presentation.
1.5.4
- Simplified settings persistence by preserving inactive-tab values on the server.
- Reduced unnecessary internal settings code while preserving the public API, option names, and module behavior.
1.5.3
- Hardened Settings API output escaping for extensible field titles.
- Added developer API documentation and aligned release metadata with the public extension contract.
1.5.2
Hardened WordPress generator-meta suppression against generator tags added by late wp_head integrations without affecting unrelated generator tags or asset version query strings.
Improved public-display request detection so emoji and hidden-comment transformations remain outside REST responses and internal REST preloads.
Simplified revision-baseline queries by relying on documented get_posts() default filter behavior, with no change to runtime behavior.
Added no runtime dependencies, remote calls, database tables, cron jobs, endpoints, JavaScript, or CSS.
1.5.1
Fixed nested or non-scalar settings sanitizer input that could trigger an Array to string conversion warning.
Hardened WordPress generator suppression by removing late wp_generator registrations and filtering official get_the_generator_* output types in addition to the_generator.
Added no runtime dependencies, services, database tables, cron jobs, REST routes, AJAX endpoints, JavaScript, or CSS.
1.5.0
Fixed Disable XML-RPC so direct xmlrpc.php requests terminate with HTTP 403 before WordPress creates the XML-RPC server, while method and header filters remain as defense in depth.
Fixed Disable Emojis so WordPress emoji assets are disabled and emoji characters are hidden from public rendered output without modifying stored content or affecting wp-admin, REST, AJAX, or cron data.
Reworked Revision Limit around WordPress’ documented pre-deletion filter. Revisions that already exist when the limit is enabled are protected by a stored baseline; only revisions created after enablement are eligible for pruning by default.
Added the separate, destructive, and OFF-by-default Also prune older revisions setting for users who intentionally want the limit applied to older revisions during future post updates.
Split comment controls into Disable New Comments and the independent Hide Existing Comments on Frontend setting. Existing comments are never deleted and remain manageable in wp-admin.
Hardened Disable Embeds to short-circuit oEmbed HTTP retrieval, mark posts as non-embeddable, remove only oEmbed REST endpoints, convert saved Embed blocks and [embed] shortcodes to plain links, redirect direct /embed/ views to canonical local post URLs, and keep the general REST API enabled.
Renamed Remove WP Version to Remove WordPress Generator Version so the setting does not imply that asset ?ver= query strings are modified.
Improved self-pingback matching across standard HTTP and HTTPS ports while preserving non-standard ports and separate WordPress installations on the same host.
Returned the main composition boot to init priority 5, preserving the documented 1.x extension lifecycle while still blocking XML-RPC before xmlrpc.php creates its server.
Added no runtime dependencies, remote calls, custom database tables, CSS, JavaScript, package managers, telemetry, or update services.
1.4.3
Sanitized submitted settings values at the request boundary before the existing field-level validator runs, resolving the reported Plugin Check warning.
Localized the settings-page title across all ten bundled locales.
Localized the developer name for Persian and Arabic; other bundled locales retain Ahmadreza Saeidbakhsh.
Kept all nine tweak modules and runtime dependency boundaries unchanged.
Replaced the deprecated string autoload value used during activation with the current boolean WordPress API form.
1.4.2
Replaced the options.php submission path with a dedicated admin-post.php handler using documented WordPress APIs, explicit capability checks, a nonce, update_option(), and wp_safe_redirect().
Rendered the save confirmation once, directly below the plugin page title, using native WordPress notice classes. No custom CSS or JavaScript was added.
Removed the settings screen’s dependency on WordPress’ legacy admin-notice relocation behavior.
Preserved the existing option name, tab-preservation behavior, sanitization, module API, and all nine conservative tweaks.
Added no external runtime dependencies, network calls, package managers, frameworks, database tables, cron jobs, or compiled assets.
1.4.1
Fixed duplicate Settings API success notices by relying on WordPress Core’s native notice rendering for Settings screens.
Simplified developer attribution so the developer name itself links to the official WordPress.org profile.
Updated all ten bundled translations and compiled MO files.
No tweak behavior, option names, hooks, module contracts, or dependencies changed.
1.4.0
Renamed the public plugin name and prospective WordPress.org slug during an earlier pre-release review to address naming and trademark ambiguity.
Kept the existing swpct_* option keys, hooks, helper functions, and PHP namespace for upgrade and extension compatibility.
Raised the minimum WordPress version to 6.8 and removed the manual text-domain loader call. WordPress 6.8+ supports just-in-time loading for bundled plugin translations through the Text Domain and Domain Path headers.
Reworked read-only tab selection to avoid the nonce-verification false positive reported by Plugin Check while continuing to sanitize the requested tab.
Moved multisite uninstall-loop state into a local uninstall function while retaining bounded 100-site batches.
Limited readme.txt to five directory tags.
Added a localized developer credit to the plugin settings page, linking to the official WordPress.org profile for Ahmadreza Saeidbakhsh.
Rebuilt all ten PO/MO catalogs for the new slug, branding, and developer credit.
Corrected the pre_ping callback registration so it requests only the single argument it consumes.
Added no new tweak modules; all nine conservative behaviors remain OFF by default.
1.3.0
Renamed the Settings submenu item to Core and placed it directly below General using WordPress’ documented submenu position parameter.
Reorganized the settings screen into native WordPress admin tabs: Content, Frontend, Discovery, and Connections.
Added cross-tab form preservation so saving one tab cannot reset values stored on another tab.
Kept the settings screen dependency-free and visually native by using WordPress Settings API markup and built-in nav-tab classes only.
Set the plugin author to Ahmadreza Saeidbakhsh and the Author URI to the official WordPress.org profile.
Updated readme.txt contributor metadata to saeidbakhsh.
Updated all ten bundled translations for the revised interface.
Added no new tweak modules; the conservative long-term feature set remains unchanged.
1.2.0
Added Remove Shortlink.
Added Remove Feed Discovery Links without disabling feeds.
Added Disable Self Pingbacks while preserving external ping behavior.
Kept all new features OFF by default.
Deliberately excluded higher-maintenance or cross-feature tweaks from the long-term core feature set.
Expanded translations across all ten bundled locales and extended regression-test coverage.
1.1.0
Added complete bundled gettext translations for ten locales: fa_IR, ar, de_DE, es_ES, fr_FR, pt_BR, ru_RU, zh_CN, ja, and tr_TR.
Added editable PO files, compiled MO files, and a POT template.
Moved text-domain loading and plugin boot to safe init timing for modern WordPress translation compatibility.
Added translation-safe default_settings() support for built-in modules while retaining the 1.0 fields() fallback for third-party modules.
Hardened checkbox sanitization so only the expected submitted value can enable a toggle.
Batched multisite uninstall cleanup in groups of 100 sites.
Updated compatibility metadata through WordPress 7.1 while retaining PHP 7.4-compatible runtime syntax.
Expanded dependency-free QA, architecture, lifecycle, and long-term compatibility documentation.
Removed development package-manager metadata from the installable release process; the production ZIP contains no vendor directory or Composer dependency.
1.0.0
Added a modular plugin foundation and dependency-free autoloader.
Added Disable Emojis.
Added Disable Embeds.
Added Remove WP Version.
Added Revision Limit.
Added Disable XML-RPC.
Added Disable Comments.
Added a Settings API management screen.
Added extension hooks and a ModuleInterface developer API.
Added safe uninstall handling, including multisite cleanup.
Added dependency-free smoke tests and development tooling metadata.
