From wordpress-expert
Identifies and resolves WordPress plugin/theme conflicts using binary search isolation, WP-CLI, hook analysis, and JS/CSS debugging. For plugin clashes, theme issues, or collisions.
npx claudepluginhub dr-robert-li/cowork-wordpress-expertThis skill uses the workspace's default tool permissions.
- Hook priority collisions (same hook, same priority, conflicting behavior)
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
# Get list of active plugins
wp plugin list --status=active --field=name
# Disable all plugins
wp plugin deactivate --all
# Test if issue is resolved
# If yes, it's a plugin conflict. Proceed with binary search.
# Enable half the plugins
wp plugin activate plugin1 plugin2 plugin3
# Test again. If issue returns, conflict is in this half.
# If issue doesn't return, conflict is in the other half.
# Repeat until you isolate the conflicting plugin(s)
# Switch to a default WordPress theme
wp theme activate twentytwentyfour
# Test if issue persists
# If resolved, conflict is theme-related
Once you've identified the conflicting plugins/theme:
Check for hook priority collisions:
# Search for same hook usage in conflicting plugins
grep -rn "add_action('init'" plugin1/ plugin2/
grep -rn "add_filter('the_content'" plugin1/ plugin2/
Check for JavaScript conflicts:
Check for CSS conflicts:
!important overuseFor hook priority collisions:
// Adjust hook priority to run before/after conflicting plugin
add_action('init', 'my_function', 5); // Lower number = earlier execution
add_action('init', 'my_function', 999); // Higher number = later execution
For JavaScript conflicts:
// Wrap in IIFE to avoid global namespace pollution
(function($) {
// Your code here
})(jQuery);
For CSS conflicts:
/* Increase specificity without !important */
.my-plugin-wrapper .my-element {
/* styles */
}
/* Or use :where() for lower specificity that's easier to override */
:where(.my-plugin) .my-element {
/* styles */
}
# List all active plugins
wp plugin list --status=active
# Deactivate all plugins
wp plugin deactivate --all
# Activate specific plugins
wp plugin activate plugin-name
# Get plugin details
wp plugin get plugin-name
# Search for plugins by keyword
wp plugin search conflict-checker
# List available themes
wp theme list
# Switch to default theme for testing
wp theme activate twentytwentyfour
# Get current theme details
wp theme get
# Enable debug mode
wp config set WP_DEBUG true --raw
wp config set WP_DEBUG_LOG true --raw
wp config set WP_DEBUG_DISPLAY false --raw
# Tail the debug log
tail -f wp-content/debug.log
# Disable debug mode after testing
wp config set WP_DEBUG false --raw