=== Bhavesh Client Admin Customizer ===
Contributors: bhavesh456
Tags: white label, admin menu, admin dashboard, branding, client dashboard
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.1.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Customize the WordPress administration area by managing admin menus, branding, dashboard widgets, and custom admin pages.

== Description ==

Bhavesh Client Admin Customizer helps agencies, freelancers, developers, and website owners create a simpler and more focused WordPress administration experience.

The plugin provides a lightweight interface for customizing selected parts of the WordPress admin area without modifying WordPress core files or requiring a page builder.

It is useful when handing a WordPress website over to a client and you want to remove unnecessary administration items, provide useful information, or add custom client-facing administration pages.

== Features ==

* **Admin Menu Editor** — Rename, hide, reorder, or re-icon registered top-level administration menu items.
* **Submenu Management** — Rename or hide registered submenu items.
* **Role-Based Visibility** — Scope any hide/rename rule to specific roles instead of applying it to every user.
* **Custom Capabilities** — Override the capability required for a menu item or custom page, e.g. to expose something to non-administrators.
* **Client Mode** — One toggle that hides advanced menu items, update notices, and file-editing capability from every role except Administrator.
* **Login Branding** — Customize the WordPress login logo and its destination URL.
* **Admin Branding** — Hide the WordPress logo from the administration toolbar, hide the WordPress version information, and customize the administration footer text.
* **Dashboard Widgets** — Hide selected default WordPress dashboard widgets.
* **Custom Dashboard Widgets** — Add custom dashboard widgets for support information, onboarding instructions, documentation, contact information, or useful links, placed in either dashboard column.
* **Dashboard Layout** — Set the default number of dashboard columns for your users.
* **Custom Admin Pages** — Create custom administration pages with your own content.
* **Post Type Submenus** — Attach custom administration pages as submenu pages under supported post types.
* **Top-Level Admin Pages** — Create standalone top-level administration pages.
* **Configuration Presets** — Apply a ready-made set of menu rules (Minimal Client Access, Support Team, Full Team Access) in one click.
* **Import / Export** — Download your configuration as JSON and re-apply it on another site.
* **Reset to Defaults** — Restore every setting to its default state in one click.
* **Multisite Support** — A Network Admin screen lets a super admin force branding and hidden menus across every site on the network.
* **WordPress-Native** — Uses WordPress administration APIs and hooks without modifying WordPress core files.
* **Lightweight** — No page builder, frontend framework, or external service is required.

== Use Cases ==

Bhavesh Client Admin Customizer can be useful for:

* Agencies managing WordPress websites for clients.
* Freelancers handing completed websites over to clients.
* Developers creating simplified WordPress administration interfaces.
* Website owners who want to reduce unnecessary administration menu items.
* Agencies providing clients with support information and documentation inside WordPress.
* Agencies managing many client sites from one WordPress Multisite network.

== Important Information ==

This plugin changes the visibility and presentation of selected WordPress administration elements.

Hiding an administration menu does not, by itself, change the underlying WordPress capability required to access that page directly. Use the Capability field on a menu rule or custom page if you also need to restrict direct access, not just visibility.

== Installation ==

1. Install Bhavesh Client Admin Customizer through the WordPress Plugins screen, or upload the `bhavesh-client-admin-customizer` folder to `/wp-content/plugins/`.
2. Activate the plugin through the **Plugins** screen in WordPress.
3. Go to **Settings → Client Admin Customizer**.
4. Configure your admin menus, branding, dashboard widgets, custom admin pages, Client Mode, and Tools (presets, import/export, reset).
5. On a Multisite network, a super admin can additionally visit **Network Admin → Settings → Client Admin Customizer** to force settings network-wide.

== Frequently Asked Questions ==

= Does the plugin modify WordPress core files? =

No. The plugin uses WordPress APIs and hooks to customize the administration interface.

= Does hiding a menu prevent users from accessing the page? =

Hiding a menu changes its visibility in the WordPress administration interface; it does not by itself change capability-based access control. If you also set a Capability override on that rule (or on a custom page), WordPress will enforce that capability for direct access as well.

= Does this affect all users or specific roles? =

You can optionally scope any hide/rename rule on the Menus tab to specific roles. Leaving every role unchecked applies the rule to everyone. Client Mode always exempts Administrators, regardless of role targeting elsewhere.

= Will my settings be removed if I deactivate the plugin? =

No. Deactivating the plugin does not remove its saved settings. Plugin settings are removed when the plugin is deleted, per its uninstall behavior.

= Can I add a custom dashboard widget? =

Yes. You can create custom dashboard widgets, choose which column and position they appear in, and provide content such as support information, onboarding instructions, documentation, or useful links.

= Can I hide the default WordPress dashboard widgets? =

Yes. The plugin allows you to hide supported default dashboard widgets, and set a default column layout for the dashboard.

= Can I create a custom administration page? =

Yes. You can create custom administration pages, configure them as top-level or submenu pages, and set a custom capability to control who can view them.

= Can I attach a custom page to a custom post type? =

Yes. Supported post types that provide a WordPress administration interface can be available when configuring a custom administration page.

= What does Client Mode do? =

Client Mode is a single toggle (Client Mode tab) that applies a curated bundle of restrictions — extra hidden menu items, hidden update notices, and removed plugin/theme file-editing access — to every role except Administrator, so agency admins keep full access at all times.

= What are Configuration Presets? =

Presets are ready-made menu-rule bundles you can apply from the Tools tab instead of configuring the Menus tab by hand. Applying a preset replaces your current menu rules only; branding, widgets, and custom pages are untouched.

= Can I copy my settings to another site? =

Yes. Use Tools → Export to download a JSON file, then Tools → Import on the destination site to apply it.

= Does this work on WordPress Multisite? =

Yes. A super admin can use the Network Admin → Settings → Client Admin Customizer screen to optionally force branding and hidden menus across every site on the network. Individual sites keep their own settings otherwise.

== Screenshots ==

1. Admin Menu Editor — rename, hide, reorder, or re-icon menu items, with optional role targeting.
2. Branding — configure login and administration branding options.
3. Dashboard Widgets — manage default and custom dashboard widgets and layout.
4. Custom Pages — create custom administration pages.
5. Client Mode — one-toggle restrictions for non-administrator roles.
6. Tools — presets, import/export, and reset to defaults.

== Changelog ==

= 1.1.2 =

* Updated "Tested up to" to WordPress 7.1.

= 1.1.1 =

* Fixed: sanitized the menu rules "order" and "roles" POST fields directly instead of only inside the per-row loop.
* Fixed: validated the settings-import upload's `$_FILES` array index before use, and sanitized the temp file path.
* Fixed: added a documented nonce-verification exemption to the Network Settings read-only notice, matching the pattern already used on the per-site settings screen.
* Fixed: prefixed all previously unprefixed local variables in the admin view templates and uninstall.php with `bcac_` to avoid symbol collisions with themes/other plugins.

= 1.1.0 =

* Added role-based visibility for menu hide/rename rules.
* Added Client Mode: one-toggle restrictions for non-administrator roles.
* Added custom menu ordering.
* Added custom admin menu icons.
* Added Import/Export of plugin settings as JSON.
* Added Configuration Presets (Minimal Client Access, Support Team, Full Team Access).
* Added custom capability overrides for menu rules and custom pages.
* Added Multisite support via a Network Admin settings screen.
* Added dashboard layout customization (column count, per-widget column/position).
* Added Reset to Defaults.

= 1.0.0 =

* Initial release.
* Added admin menu management.
* Added submenu management.
* Added login branding options.
* Added administration branding options.
* Added default dashboard widget management.
* Added custom dashboard widgets.
* Added custom administration pages.
* Added support for top-level and post-type submenu pages.

== Upgrade Notice ==

= 1.1.2 =
Updates the tested WordPress version to 7.1.

= 1.1.0 =
Adds role-based rules, Client Mode, menu ordering/icons, import/export, presets, custom capabilities, multisite support, dashboard layout options, and reset to defaults.

= 1.0.0 =
Initial release of Bhavesh Client Admin Customizer.
