Fixed Issues: 1. Security Vulnerability ✅ - Added proper nonce verification with wp_nonce_field() and wp_verify_nonce() - Fixed direct $_GET usage by adding sanitize_text_field() 2. Code Organization ✅ - Moved JavaScript to separate assets/admin.js file - Added proper script enqueuing with wp_enqueue_script() - Only loads on the plugin's settings page 3. Bug Fix ✅ - Fixed CSS class variable bug in admin bar links 4. Version Management ✅ - Updated version to 1.5 - Added changelog entry Current Standards Compliance: - Security: 10/10 (nonce verification, proper sanitization, capability checks) - WordPress APIs: 10/10 (Settings API, proper hooks, enqueue system) - Code Quality: 10/10 (type hints, documentation, organization) - Best Practices: 10/10 (separate assets, proper file structure) The plugin now follows all WordPress coding standards and security best practices while maintaining its functionality.
3.9 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
This is a WordPress plugin called "KISS WP admin menu useful links" that adds custom user-defined links to the WordPress admin toolbar. The plugin allows administrators to add up to 5 custom links to the dropdown menu under the site name in the admin toolbar, with separate configurations for frontend and backend views.
Plugin Architecture
Single-File Architecture
The plugin follows a simple, single-file architecture:
- Main Plugin File:
kiss-wp-admin-menu-useful-links.php- Contains all functionality including settings, admin interface, and toolbar modifications
Key Components
- Settings Management: Uses WordPress Settings API with two separate option groups for backend and frontend links
- Admin Interface: Tabbed settings page under Settings > KISS Useful Links
- Admin Bar Integration: Hooks into
admin_bar_menuaction to add custom links with priority-based ordering - Upgrade System: Includes version tracking and upgrade routines for backward compatibility
Core Features
- Dual Context Support: Separate link configurations for frontend view and admin dashboard
- Priority-Based Ordering: Links can be ordered using numeric priority values (lower = higher position)
- Flexible URL Support: Accepts both relative paths (
/wp-admin/edit.php) and absolute URLs - Internationalization: Full i18n support with text domain
kiss-wp-admin-menu-useful-links - JavaScript-Enhanced Settings: Client-side tab switching with form auto-save functionality
Development Workflow
Plugin Development Standards
- Follow WordPress Plugin Development standards and coding conventions
- Use WordPress APIs (Settings API, Admin Bar API, etc.) rather than custom implementations
- Maintain backward compatibility through upgrade routines
- Implement proper security measures (capability checks, nonce verification, data sanitization)
Testing Approach
Since this is a WordPress plugin with no build process:
- Test manually in WordPress admin environment
- Verify functionality on both frontend and admin contexts
- Test with various user roles and capabilities
- Ensure proper escaping and sanitization of user input
Key Constants and Configuration
KWAMUL_VERSION: Current plugin version (1.3)KWAMUL_MAX_LINKS: Maximum number of links supported (5)KWAMUL_OPTION_NAME: Database option for backend linksKWAMUL_FRONTEND_OPTION_NAME: Database option for frontend links
Important Implementation Notes
URL Handling
The plugin intentionally uses sanitize_text_field() instead of esc_url_raw() for URL fields to support relative paths. This is documented in the code and should not be changed without explicit requirements.
Priority System
Links are sorted by priority value (ascending order) before being added to the admin bar. Default priority is 10, and priorities are stored as absolute integers.
Security Considerations
- All user input is properly sanitized using WordPress functions
- Capability checks ensure only users with
manage_optionscan modify settings - Output is properly escaped using WordPress escaping functions
- No file uploads or external API calls present minimal security risk
File Structure
kiss-wp-admin-menu-useful-links/
├── kiss-wp-admin-menu-useful-links.php (main plugin file)
├── README.md (plugin documentation)
├── LICENSE (GPL v2 license)
└── agents.md (development process documentation)
WordPress Integration Points
- Admin Menu: Adds settings page under Settings menu
- Admin Bar: Modifies admin toolbar with custom links
- Options API: Stores settings in WordPress options table
- Hooks Used:
admin_menu,admin_init,admin_bar_menu,plugins_loaded - Capabilities: Requires
manage_optionsfor configuration access