Troubleshooting Guide — Dokan Conditional Category Attributes

Plugin Version: 2.0.0(Client) / 2.0.0 (Server)
Last Updated: June 2026
Developer: OpequeGlass

1. Diagnostic Methodology

Before troubleshooting, establish a baseline environment:
  1. Disable all caching — page cache, object cache (Redis/Memcached), CDN edge caching
  2. Switch to a default WordPress theme — Storefront or Twenty Twenty-Four
  3. Deactivate all plugins except WooCommerce, Dokan, and Dokan Conditional Category Attributes
  4. Enable WordPress debug logging:

    php

    define('WP_DEBUG', true);
    define('WP_DEBUG_LOG', true);
    define('WP_DEBUG_DISPLAY', false);

If the issue resolves under this baseline, reactivate components one by one to identify the conflict.

2. Authorization (License) Issues

2.1 “Authorization Required” Lock Overlay

Symptom: Category attribute configuration shows a lock overlay with “Authorization Required” message.
Causes & Fixes:

Table

CauseCheckFix
Never activatedGo to Authorization Manager — status shows “Inactive”Enter your DKN- token and click Activate Authorization
ExpiredStatus shows “Expired” — check expiry datePurchase renewal via https://dokanconditionalattribute.com/pricing/
SuspendedStatus shows “Suspended”Contact support — admin suspension requires manual approval
Server unreachable“Sync failed” or “Stale” badgeCheck server connectivity (see §2.4)
Local tamperingIntegrity fingerprint mismatchClick Sync Now to force server re-sync
Quick Check:

php

// Run in wp-admin > Appearance > Theme File Editor > functions.php (temporarily)
add_action('admin_init', function() {
$status = get_option('dokan_conditional_attrs_auth_status');
$token = get_option('dokan_conditional_attrs_auth_token');
error_log("Auth Status: $status | Token: " . substr($token, 0, 12) . "...");
});

2.2 “Invalid License Key” or “License Not Found”

Symptom: Activation returns “License key not found” or similar error.
Diagnostic Steps:
  1. Verify key format — Must start with DKN- followed by 4 groups of 4 alphanumeric chars (e.g., DKN-ABCD-1234-EFGH-5678)
  2. Check for extra spaces — Copy-paste can include leading/trailing spaces
  3. Verify purchase — Log into your OpequeGlass account at https://dokanconditionalattribute.com
  4. Propagation delay — FastSpring-generated keys may take up to 5 minutes to propagate
  5. Case sensitivity — Keys are uppercase; lowercase input is auto-corrected by sanitize_text_field()
Server Response Codes:

Table

HTTP CodeMeaningAction
200 + success:falseKey not in databaseVerify purchase or contact support
200 + success:trueActivation succeededCheck local options for corruption
401Invalid API secretPlugin/server version mismatch — update plugin
403Expired or suspendedRenew license or request admin approval
404Endpoint not foundCheck server URL configuration
500Server errorWait and retry; contact support if persistent

2.3 “Maximum Site Limit Reached”

Symptom: Activation fails with “Maximum site limit reached (X)”.
Understanding Site Slots:

Table

TierMax SitesCounts As
Single11 production domain
Multi55 production domains
BusinessUnlimitedNo limit
Resolution:
  1. Check Authorization Manager > Activated Domains — see which sites are active
  2. Deactivate unused sites from the old installations
  3. If old domain is inaccessible, contact support with your token and proof of ownership
  4. Upgrade to higher tier at https://dokanconditionalattribute.com/pricing/

2.4 “Server Returned Invalid Response” / Sync Fails

Symptom: “Could not sync with authorization server” or persistent “Stale” status.
Network Diagnostics:

bash

# Test HTTPS connectivity from your server# Expected: HTTP/2 200 with Cache-Control: no-store headers
# If timeout or SSL error, check firewall/CA bundle

Common Causes:

Table

CauseSymptomFix
Firewall blocks outbound 443Connection timeoutWhitelist opequeglass.com port 443 outbound
Outdated CA bundleSSL certificate verification failedUpdate server CA certificates (ca-certificates package)
Proxy misconfigurationConnection refusedSet WP_HTTP_PROXY_HOST and WP_HTTP_PROXY_PORT in wp-config.php
allow_url_fopen disabledwp_remote_post() failsEnable in php.ini or use cURL alternative
DNS resolution failureHost not foundCheck DNS settings; try 8.8.8.8 or 1.1.1.1
PHP Configuration Check:

php

// Add temporarily to wp-config.php for diagnostics
if ( defined('WP_DEBUG') && WP_DEBUG ) {
add_filter('http_request_args', function($args, $url) {
if (strpos($url, 'opequeglass.com') !== false) {
error_log("HTTP Request to $url: timeout={$args['timeout']}, sslverify=" . ($args['sslverify'] ? 'yes' : 'no'));
}
return $args;
}, 10, 2);
}

2.5 Authorization Reverts to Inactive After Activation

Symptom: License shows “Active” immediately after activation, but reverts on next page load.
Causes:
  1. Object cache corruption — Redis/Memcached may not persist WordPress Options API writes
    • Fix: Flush object cache via hosting panel or wp cache flush (WP-CLI)
    • Verify: Check wp_options table for dokan_conditional_attrs_auth_status — should be active
  2. Database permissions — DB user lacks INSERT/UPDATE on wp_options
    • Fix: Grant privileges: GRANT INSERT, UPDATE, DELETE ON wp_options TO 'db_user'@'localhost';
  3. Auto-load conflict — Some hosts disable autoload=yes for large options
    • Fix: Manually set autoload: UPDATE wp_options SET autoload='yes' WHERE option_name LIKE 'dokan_conditional_attrs_%';
  4. Multisite option table confusion — Plugin uses update_option() (not update_blog_option())
    • Fix: Ensure activation on correct site in network; use wp-cli to verify: wp option get dokan_conditional_attrs_auth_status

3. Category Attributes Not Appearing

3.1 Attributes Missing in Dokan Vendor Dashboard

Symptom: Vendors see all attributes or no attributes instead of restricted set.
Diagnostic Flow:

plain

Important: The plugin does not use a window.X7M configuration object. The original troubleshooting guide referenced this fictional element. The actual plugin renders attributes server-side via wc_get_attribute_taxonomies() and stores selections in term meta (_allowed_attributes).

3.2 Category Inheritance Not Working

Symptom: Child categories don’t inherit parent category attribute restrictions.
How Inheritance Actually Works:
The plugin checks for _allowed_attributes meta on the specific category only. It does not traverse parent categories automatically. If you need parent restrictions applied to children, you must:
  1. Manually configure each child category, OR
  2. Use a custom snippet:

    php

     

    add_filter('market_allowed_attributes', function($attrs, $term_id) {
    if (empty($attrs)) {
    $parent_id = wp_get_term_taxonomy_parent_id($term_id, 'product_cat');
    if ($parent_id) {
    $parent_attrs = get_term_meta($parent_id, '_allowed_attributes', true);
    if (is_array($parent_attrs) && !empty($parent_attrs)) {
    return $parent_attrs;
    }
    }
    }
    return $attrs;
    }, 10, 2);

Database Check:

sql

 

-- Check if child category has empty (but not null) configuration
SELECT term_id, meta_value
FROM wp_termmeta
WHERE meta_key = '_allowed_attributes'
AND term_id = [CHILD_CATEGORY_ID];

— If meta_value = ‘a:0:{}’ (empty array), delete it to allow fallback:
DELETE FROM wp_termmeta
WHERE meta_key = ‘_allowed_attributes’
AND term_id = [CHILD_CATEGORY_ID];

3.3 Term Cache Issues

Symptom: Category changes not reflecting immediately.
Fix:

bash

# Flush term cache
wp cache flush

# Or programmatically
wp_cache_delete(‘last_changed’, ‘terms’);

Some performance plugins (W3 Total Cache, WP Rocket) cache term metadata aggressively. Add exclusion:

php

// Exclude our meta from object caching
add_filter('wp_cache_add', function($result, $key, $data, $group) {
if ($group === 'term_meta' && strpos($key, '_allowed_attributes') !== false) {
return false; // Don't cache
}
return $result;
}, 10, 4);


4. Product Save Issues

4.1 Attributes Disappearing After Save

Symptom: Vendor adds attributes, saves product, attributes are gone.
Important Clarification: The plugin does not strip attributes on product save. The original troubleshooting guide described a sanitizer that doesn’t exist in the actual code. The plugin only:
  1. Filters the attribute dropdown in the Dokan dashboard UI (frontend JavaScript)
  2. Blocks attribute configuration in category admin without active license
It does not modify product data on save_post or woocommerce_process_product_meta.
Actual Causes:

Table

CauseCheckFix
Dokan version conflictDokan Pro < 3.7 may have different attribute handlingUpdate Dokan to latest version
Theme overridesCustom theme replaces dokan-product-edit.phpUse child theme or contact theme developer
WooCommerce HPOSHigh-Performance Order Storage may affect attribute storageEnsure WooCommerce 7.0+ with HPOS compatibility
Plugin conflictAnother attribute plugin interferingDisable other attribute plugins one by one

4.2 Serialization Corruption

Symptom: Category configuration shows as empty or broken.
Fix:

sql

-- Check for corrupted serialized data
SELECT meta_value FROM wp_termmeta
WHERE meta_key = '_allowed_attributes'
AND term_id = [CATEGORY_ID];

— Should be: a:2:{i:0;s:5:”color”;i:1;s:4:”size”;}
— If broken, delete and re-save category configuration
DELETE FROM wp_termmeta
WHERE meta_key = ‘_allowed_attributes’
AND term_id = [CATEGORY_ID];


5. JavaScript & jQuery Issues

5.1 Modal Not Opening

Symptom: “Configure Allowed Attributes” button does nothing.
Checks:
  1. jQuery loaded? Console: typeof jQuery should return "function"
  2. jQuery version: jQuery.fn.jquery should be 1.12.4 or higher (WordPress bundled)
  3. Multiple jQuery instances: Check for $ conflicts
  4. Console errors: Look for TypeError: $ is not a function
Fix jQuery conflicts:

php

// In your theme's functions.php — ensure only WordPress jQuery loads
add_action('wp_enqueue_scripts', function() {
wp_dequeue_script('jquery-cdn'); // Replace with offending handle
wp_enqueue_script('jquery');
}, 100);

5.2 Select2 Dropdown Not Updating

Symptom: Attribute chips show correctly but dropdown doesn’t reflect selections.
Cause: The plugin uses standard checkbox inputs within a modal. It does not use Select2 for attribute selection in the category admin. If you’re seeing Select2 issues, it’s likely from:
  • Dokan’s own product attribute selector (different from this plugin)
  • Another plugin modifying the category admin
Fix: Disable other plugins to isolate the conflict.

5.3 Inline Chips Not Displaying

Symptom: Selected attributes don’t show as chips below the button.
JavaScript Check:

JavaScript

// In browser console on category edit page
jQuery('.market-inline-chips-wrapper').html();
// Should show chip HTML

// If empty, check if checkboxes are checked
jQuery(‘.market-hidden-cb:checked’).length;
// Should be > 0

Fix: Click Apply Selections in the modal to trigger chip refresh.

 

6. Update Issues

6.1 No Update Available

Symptom: WordPress shows “No updates available” but newer version exists.
Requirements for updates:
  1. ✅ License status must be ACTIVE
  2. ✅ License key must be non-empty
  3. ✅ Domain must be in active sites list on server
  4. ✅ Server must be reachable
Manual check:

php

// Run in theme functions.php temporarily
add_action('admin_init', function() {
$auth = dokan_auth_get_data(true); // Force refresh
error_log("Update check: key=" . substr($auth['key'], 0, 8) . " status=" . $auth['status']);

$transient = get_site_transient(‘update_plugins’);
if (isset($transient->response[‘dokan-conditional-attrs/dokan-conditional-attrs.php’])) {
error_log(“Update available: “ . $transient->response[‘dokan-conditional-attrs/dokan-conditional-attrs.php’]->new_version);
} else {
error_log(“No update in transient”);
}
});

6.2 Update Download Fails

Symptom: Update shows available but download fails.
Causes:
  • Download URL expired (signed URLs have short TTL)
  • Server returned 403 (domain not validated)
  • SSL error on download server
Fix: Click Sync Now in Authorization Manager, then check for updates again.

7. Performance Issues

7.1 Slow Admin Pages

Symptom: Authorization Manager or category edit pages load slowly.
Causes:

Table

CauseCheckFix
Large domain listMany active sites on multi-site licenseNormal — pagination handled server-side
Slow server syncdokan_auth_sync_from_server() takes >5sCheck server connectivity; increase cache duration
Many attributeswc_get_attribute_taxonomies() returns hundredsWooCommerce issue — limit attributes or use lazy loading
Optimize sync frequency:

php

// Increase cache duration to reduce server calls (default: 15 seconds)
add_filter('dokan_auth_cache_duration', function($duration) {
return 300; // 5 minutes
});

7.2 Database Bloat

Symptom: wp_options table growing with plugin options.
Plugin options stored:

sql

-- List all plugin options
SELECT option_name, LENGTH(option_value) as size
FROM wp_options
WHERE option_name LIKE 'dokan_conditional_attrs_%'
ORDER BY size DESC;

Cleanup on deactivation:

php

// Run once if needed
require_once ABSPATH . 'wp-admin/includes/plugin.php';
dokan_auth_clear_all_options();


Â