Overview
WordPress plugins sometimes conflict due to overlapping functionality, JavaScript conflicts, or hook priority issues. This guide helps identify and resolve conflicts between Attributes User Access and other plugins.
Identifying Conflicts
Symptoms of Plugin Conflicts
Common signs:
✗ Features stop working after activating another plugin
✗ JavaScript errors in browser console
✗ White screen or fatal PHP errors
✗ Login forms display incorrectly
✗ Redirects stop working
✗ Settings won't save
✗ Performance suddenly degrades
Systematic Testing
Isolation method: Step 1: Backup siteAlways backup before troubleshooting
Database + files + current state
Step 2: Deactivate all other plugins- Go to Plugins → Installed Plugins
- Deactivate ALL plugins except Attributes User Access
- Test if issue persists
- Activate first plugin
- Test feature that was broken
- If still works, move to next plugin
- If breaks, you found conflicting plugin
- Document which plugin causes issue
Sometimes themes cause issues
Switch to Twenty Twenty-Four
Test again
Common Plugin Conflicts
Security Plugins
Wordfence, Sucuri, iThemes Security: Common issues:- Login form blocked as “brute force attempt”
- AJAX requests blocked by firewall
- 2FA conflicts (both plugins try to handle 2FA)
- IP blocking conflicts
- Rate limiting conflicts
- Whitelist Attributes User Access plugin files
- Exclude login pages from security scanning
- Disable duplicate features (keep only one 2FA system)
- Add plugin AJAX endpoints to allowed list
- Coordinate IP allow/block lists
Wordfence → Firewall → Rate Limiting
Whitelist AJAX actions:
- attrua_login
- attrua_register
- attrua_verify_2fa
Wordfence → All Options → Advanced Blocking
Exclude pages from blocking:
/login/
/my-account/
Caching Plugins
WP Rocket, W3 Total Cache, WP Super Cache: Common issues:- Login forms cached (shows logged-in state to logged-out users)
- Redirects cached incorrectly
- Dynamic content not updating
- Sessions not preserved
Never cache these pages:
/login/
/register/
/my-account/
/dashboard/
/user-profile/
/wp-admin/
Never cache query strings:
?action=login
?action=logout
?action=register
WP Rocket config:Settings → Advanced Rules
Never Cache URL(s):
/login(.*)
/my-account(.*)
/dashboard(.*)
Never Cache Cookies:
wordpress_logged_in_(.*)
wordpress_sec_(.*)
attrua_session_(.*)
W3 Total Cache:Performance → Page Cache → Advanced
Never cache these pages:
/login/
/my-account/
Don’t cache for logged-in users:
☑ Enabled
Membership Plugins
MemberPress, Restrict Content Pro, Paid Memberships Pro: Common issues:- Conflicting login pages
- Duplicate registration forms
- User role sync issues
- Redirect conflicts
Strategy 1: Use Attributes for login, Membership for content
- Attributes: Handles authentication
- Membership: Handles access control
Strategy 2: Coordinate redirects
- Set redirect priority in settings
- Document which plugin handles what
Strategy 3: Sync user roles
- Map Attributes roles to membership levels
- Use hooks to keep roles synchronized
// functions.php
add_action('attrua_user_registered', function($user_id) {
// Assign MemberPress membership after Attributes registration
$member = new MeprUser($user_id);
$member->set_membership_level(123); // Your membership ID
});
WooCommerce
Common issues:- My Account page conflict
- Checkout redirect issues
- Customer role conflicts
- Email template conflicts
- Enable WooCommerce integration in Attributes settings
- Choose redirect priority (WooCommerce or Attributes)
- Coordinate customer role assignment
- Use consistent email templates
Users → Login Settings → Integrations
WooCommerce Integration:
☑ Enable WooCommerce support
Login Priority:
● Attributes User Access
○ WooCommerce default
Customer Role:
● Keep WooCommerce “Customer” role
○ Replace with Attributes roles
Translation Plugins
WPML, Polylang, TranslatePress: Common issues:- Translated pages don’t show login form
- Language switcher breaks redirects
- User roles not translated
- Email templates wrong language
- Register login/register pages in translation plugin
- Create translated versions of destination pages
- Use language-specific redirects
- Translate email templates for each language
WPML → Translation Options
Translatable pages:
☑ Login page
☑ Register page
☑ Dashboard page
URL format:
● Different domains per language
○ Directory for languages
Form Builder Conflicts
Contact Form 7, Gravity Forms, WPForms: Common issues:- jQuery version conflicts
- Form validation conflicts
- AJAX submission conflicts
- CSS conflicts
- Load Attributes forms in different container
- Use unique CSS classes
- Namespace JavaScript functions
- Test form submission thoroughly
JavaScript Conflicts
Detecting JS Errors
Open browser console:Chrome/Edge: F12 → Console tab
Firefox: F12 → Console tab
Safari: Develop → Show JavaScript Console
Look for:
- “$ is not defined” (jQuery not loaded)
- “Uncaught TypeError” (function doesn’t exist)
- “Script error” (CORS or load failure)
Common JS Issues
jQuery not loaded:
// functions.php - Ensure jQuery loaded
add_action('wp_enqueue_scripts', function() {
wp_enqueue_script('jquery');
}, 1);
jQuery version conflict:
// Some plugins load old jQuery
// Force WordPress jQuery
add_action('wp_enqueue_scripts', function() {
wp_deregister_script('jquery');
wp_register_script('jquery', includes_url('/js/jquery/jquery.min.js'), false, null, false);
wp_enqueue_script('jquery');
}, 0);
Script loading order:
// Ensure Attributes scripts load after dependencies
add_action('wp_enqueue_scripts', function() {
wp_enqueue_script('attrua-login',
plugin_dir_url(__FILE__) . 'js/login.js',
array('jquery'), // Dependencies
'1.2.1',
true // Load in footer
);
}, 20); // High priority number = loads later
CSS Conflicts
Identifying CSS Issues
Symptoms:- Login form layout broken
- Buttons wrong color/size
- Text overlapping
- Form fields not visible
- Mobile responsive issues
Debugging CSS Conflicts
Browser DevTools:- Right-click on broken element
- Select “Inspect” or “Inspect Element”
- Check “Styles” panel
- Look for crossed-out styles (overridden)
- Note which stylesheet overrides
Theme CSS:
input[type=”text”] { width: 100%; }
↓ Overrides plugin CSS
Solution: Add !important or increase specificity
.attrua-login-form input[type=”text”] { width: 300px !important; }
CSS Conflict Solutions
Increase specificity:
/<em> Instead of </em>/
.login-form { ... }
/<em> Use more specific selector </em>/
.attrua-login-form.custom-login { ... }
/<em> Or ID (highest specificity) </em>/
#attrua-login-wrapper .login-form { ... }
Use !important (last resort):
.attrua-login-form input[type="text"] {
width: 300px !important;
background: #fff !important;
}
Namespace your styles:
/<em> Wrap all plugin styles in unique container </em>/
.attrua-wrapper {
/<em> All styles here won't affect other plugins </em>/
}
Database Conflicts
Table Prefix Conflicts
Issue: Another plugin uses same table names Check table prefixes:
SHOW TABLES LIKE 'wp_attrua%';
-- If you see unexpected tables from other plugins
-- Attributes uses:
-- wp_attrua_audit_log
-- wp_attrua_ip_whitelist
-- wp_attrua_ip_blacklist
-- wp_attrua_sessions
Resolution:
Very rare issue
Contact support if occurs
May need to change plugin table prefix
Hook Priority Conflicts
WordPress Hook System
Understanding priority:
// Lower number = runs earlier
add_action('init', 'function1', 10); // Runs first
add_action('init', 'function2', 20); // Runs second
// Default priority is 10
// Use higher priority to run after other plugins
Login Redirect Conflicts
Multiple plugins trying to redirect:
// Plugin A redirects to /dashboard/
// Plugin B redirects to /my-account/
// Who wins? Last one hooked or highest priority
// Solution: Set Attributes priority higher
add_filter('login_redirect', 'attrua_login_redirect', 999, 3);
Resolution Strategy
Systematic Approach
- Identify which plugin conflicts
- Check both plugins’ settings for overlap
- Disable duplicate features
- Coordinate configurations
- Test thoroughly
- Document resolution for future reference
- Contact both plugin authors if unsure
Getting Help
Information to Provide Support
When reporting conflicts:- List ALL active plugins (name + version)
- WordPress version
- PHP version
- Theme name + version
- Exact steps to reproduce
- Error messages (if any)
- Browser console errors
- What you’ve already tried
- Does it work with other plugins deactivated?
Best Practices
Always test plugin combinations on staging site before production.
Many conflicts resolved in updates. Keep everything current.
Don’t use two plugins for same feature (2× 2FA plugins, 2× security, etc.)
Keep notes on which features each plugin handles.