=== Cybokron Advanced Widget Visibility === Contributors: cybokron Tags: widget, visibility, descendants, grandchildren, pages Requires at least: 5.2 Tested up to: 6.9 Stable tag: 1.9.0 Requires PHP: 7.4 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Show or hide widgets by page, category, taxonomy, post type, and user context with descendant support. == Description == Jetpack's Widget Visibility only supports "Include children" which covers direct children (1 level deep). It doesn't include grandchildren, great-grandchildren, or deeper nested pages. This plugin adds an **"Include all descendants"** option that includes ALL levels of nested pages — grandchildren, great-grandchildren, and beyond. **Features:** * Show/Hide widgets based on conditions * Page visibility with full descendant support * Category visibility with hierarchy support * Hierarchical custom taxonomy visibility with descendant support * Post type conditions * Special pages: Front page, Blog, Archive, Search, 404 * User role targeting (any selected role) * User state: Logged in / Logged out * Multiple conditions with AND/OR logic * Jetpack-free — no dependencies * 30 languages included * Follows WordPress coding standards **Supported Languages (30):** Turkish, English, Spanish, German, French, Italian, Portuguese (Brazil), Portuguese (Portugal), Dutch, Polish, Russian, Japanese, Chinese (Simplified), Chinese (Traditional), Korean, Arabic, Hebrew, Swedish, Norwegian, Danish, Finnish, Greek, Czech, Hungarian, Romanian, Ukrainian, Vietnamese, Thai, Indonesian, Hindi, Slovak == Installation == 1. Upload the `cybokron-advanced-widget-visibility` folder to the `/wp-content/plugins/` directory 2. Activate the plugin through the 'Plugins' menu in WordPress 3. Go to Appearance → Widgets 4. Edit any widget and click the "Visibility" button == Frequently Asked Questions == = Does this replace Jetpack Widget Visibility? = Yes, this is a standalone alternative. You can use this instead of Jetpack's visibility feature, or alongside it (they work independently). = Will this slow down my site? = No. The visibility checks are very lightweight and only run when widgets are being displayed. = Can I use this with block-based widgets? = This plugin works with classic widgets. For block-based widget areas, the visibility controls appear in the widget settings. = What is the difference between "Include children" and "Include all descendants"? = "Include children" covers direct children only (1 level deep). "Include all descendants" covers ALL nested levels — grandchildren, great-grandchildren, and beyond. == Screenshots == 1. Visibility panel with Show/Hide dropdown, condition types, and descendant options 2. Multiple conditions with AND/OR logic support 3. Page hierarchy with descendant matching == Changelog == = 1.9.0 = * Fix: Updated GitHub Actions workflow to reference correct plugin file name and constants after 1.8.0 rebrand. * Fix: Corrected plugin slug in deploy workflow (was `widget-visibility-with-descendants`, now `cybokron-advanced-widget-visibility`). * Fix: Version consistency check now reads `CYBAWV_VERSION` constant instead of old `WVD_VERSION`. = 1.8.0 = * Compliance: Text domain aligned to plugin slug `cybokron-advanced-widget-visibility`. * Compliance: Renamed main plugin file to `cybokron-advanced-widget-visibility.php`. * Compliance: Renamed all function/class/constant prefixes from `wvd` (3 chars) to `cybawv` (6 chars). * Compliance: Renamed all CSS class prefixes from `wvd-` to `cybawv-`. * Compliance: Renamed JavaScript global from `wvdData` to `cybawvData`. * Compliance: Renamed option keys from `wvd_settings` to `cybawv_settings`. * Compliance: Renamed widget data key from `wvd_visibility` to `cybawv_visibility`. * Compliance: Updated translation file names to match new text domain. * Changed: Main plugin class renamed from `Widget_Visibility_Descendants` to `Cybawv_Plugin`. = 1.7.0 = * Feature: Added dedicated settings page with dashicons-visibility sidebar icon. * Feature: Global bypass toggle to temporarily disable all visibility rules for debugging. * Feature: Configurable maximum rules per widget (1-200, default 50). * Feature: Option to delete all visibility data when plugin is uninstalled. * Feature: Colored application icon displayed on settings page header. * Enhancement: Quick links to Widgets page and GitHub support. * Changed: Sidebar icon now uses WordPress dashicon instead of base64 PNG. = 1.6.1 = * Added: Admin menu page with custom sidebar icon for quick access to plugin info. * Added: Plugin icon in WordPress admin sidebar. * Enhancement: About page with getting started guide and feature overview. = 1.6.0 = * Rebranded: Plugin renamed to "Cybokron Advanced Widget Visibility". * Changed: Plugin URI updated to new GitHub repository. * Changed: All GitHub links updated to new repository name. * Changed: Translation template and catalog headers updated. = 1.5.1 = * Fixed: Text domain aligned to WordPress.org assigned slug `widget-visibility-with-descendants`. * Fixed: Renamed main plugin file to match WordPress.org slug. * Fixed: Removed `.distignore` from distribution package. * Changed: Translation file names updated to match new text domain. = 1.5.0 = * WordPress.org submission release. * Changed: Renamed plugin slug and main file to `cybokron-descendant-visibility-widgets`. * Changed: Text domain aligned to plugin slug `cybokron-descendant-visibility-widgets`. * Changed: Contributors updated to valid WordPress.org username `cybokron`. * Added: `readme.txt` in WordPress.org standard format. * Added: `.distignore` for clean distribution packaging. * Added: `uninstall.php` with proper `WP_UNINSTALL_PLUGIN` guard. * Added: GitHub Actions deploy workflow for WordPress.org SVN. * Removed: Development artifact `.jules/` directory. = 1.4.7 = * Security: Restricted widget visibility UI rendering to users with `edit_theme_options`. * Security: Prevented visibility data loss by restoring previous visibility settings when unauthorized users trigger widget updates. = 1.4.6 = * Docs: Reviewed recent merged PRs and synchronized release notes for maintainers. = 1.4.5 = * Fix: Added defensive `is_array()` validation for widget instance payloads. = 1.4.4 = * Performance: Eliminated N+1 admin queries in page/category option generation. * Stability: Prevented duplicate admin panel event handlers. * Hardening: Strengthened frontend rule validation. = 1.4.3 = * Accessibility: Converted visibility panel action controls to semantic button elements. * Accessibility: Added `aria-label` and keyboard-visible focus styles. = 1.4.2 = * Compliance: Removed custom GitHub updater integration for WordPress.org rules. = 1.4.1 = * Security: Ensured widget visibility sanitization runs for REST widget updates. * i18n: Synced all translation catalogs and removed obsolete keys. = 1.4.0 = * Feature: Added GitHub updater integration (later removed for WordPress.org compliance). = 1.3.3 = * Fix: Removed hidden development artifact and normalized line endings. = 1.3.2 = * Fix: Standardized plugin text domain usage across plugin files. = 1.3.1 = * Fix: Improved category rule evaluation robustness for single posts. = 1.3.0 = * Feature: Added taxonomy rule type for hierarchical custom taxonomies. * Feature: Added user_role rule type with multi-select role matching. = 1.1.0 = * Added 30 language translations. = 1.0.0 = * Initial release. == Upgrade Notice == = 1.9.0 = Maintenance release: fixes GitHub Actions deploy workflow references after the 1.8.0 rebrand. = 1.8.0 = WordPress.org compliance: text domain, file name, and all prefixes aligned to plugin slug. Fresh install recommended. = 1.7.0 = New settings page with global bypass, configurable rule limits, and uninstall data cleanup option. = 1.6.0 = Plugin rebranded to "Cybokron Advanced Widget Visibility". No functional changes.