Plugin Conflict Resolution

Version: 1.2.1 Last Updated: December 2025 Difficulty: Intermediate

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 site

Always 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
Step 3: Reactivate one by one
  • 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
Step 4: Test with default theme

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
Solutions:
  • 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 specific:

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
Solutions:

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
Resolution strategies:

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
Example role sync:

// 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
Solutions:
  • Enable WooCommerce integration in Attributes settings
  • Choose redirect priority (WooCommerce or Attributes)
  • Coordinate customer role assignment
  • Use consistent email templates
Configuration:

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
Solutions:
  • Register login/register pages in translation plugin
  • Create translated versions of destination pages
  • Use language-specific redirects
  • Translate email templates for each language
WPML configuration:

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
Solutions:
  • 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
Common conflicts:

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

Test on Staging First

Always test plugin combinations on staging site before production.

Keep Plugins Updated

Many conflicts resolved in updates. Keep everything current.

Avoid Redundancy

Don’t use two plugins for same feature (2× 2FA plugins, 2× security, etc.)

Document Configurations

Keep notes on which features each plugin handles.