Files
WooNooW/CUSTOMER_SETTINGS_404_FIX.md

3.1 KiB

Customer Settings 404 Error - Troubleshooting Guide

Issue

The /store/customer-settings endpoint returns 404 error.

Verification Steps

1. Check if routes are registered

The routes ARE correctly registered in includes/Api/StoreController.php:

  • Line 90-97: GET /woonoow/v1/store/customer-settings
  • Line 99-106: POST /woonoow/v1/store/customer-settings

2. Check if controller is initialized

The controller IS initialized in includes/Api/Routes.php:

  • Line 56-57: new StoreController() and register_routes()

3. Check if class exists

The CustomerSettingsProvider class EXISTS in:

  • includes/Compat/CustomerSettingsProvider.php
  • Namespace: WooNooW\Compat

Possible Causes & Solutions

WordPress may need to rebuild its rewrite rules.

Via WP-Admin:

  1. Go to Settings → Permalinks
  2. Click "Save Changes" (no need to change anything)

Via WP-CLI:

wp rewrite flush

Solution 2: Check Debug Logs

Debug logging has been added to track the issue:

Enable WordPress Debug: Add to wp-config.php:

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

Check logs:

tail -f wp-content/debug.log

Look for:

  • WooNooW: get_customer_settings called
  • WooNooW: Customer settings retrieved: ...
  • WooNooW: get_customer_settings exception: ...

Solution 3: Test Endpoint Directly

Open browser console and run:

fetch(window.WNW_CONFIG.restUrl + '/store/customer-settings', {
  headers: {
    'X-WP-Nonce': window.wpApiSettings.nonce
  }
})
.then(r => r.json())
.then(console.log)
.catch(console.error);

Solution 4: Verify REST API is Working

Test a known endpoint:

fetch(window.WNW_CONFIG.restUrl + '/store/branding')
.then(r => r.json())
.then(console.log);

If this fails, the REST API itself may be broken.

Solution 5: Check .htaccess

Ensure .htaccess has WordPress rewrite rules:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Expected Behavior

GET Request:

{
  "vip_min_spent": 1000,
  "vip_min_orders": 10,
  "vip_timeframe": "all",
  "vip_require_both": true,
  "vip_exclude_refunded": true
}

POST Request:

{
  "success": true,
  "message": "Customer settings updated successfully",
  "settings": { ... }
}

Quick Fix Checklist

  • Flush permalinks
  • Enable debug logging
  • Check debug.log for errors
  • Test endpoint in browser console
  • Verify other REST endpoints work
  • Check .htaccess file
  • Clear all caches (browser, WordPress, server)

Still Not Working?

If none of the above works, there may be:

  1. Plugin conflict (disable other plugins temporarily)
  2. Theme conflict (switch to default theme temporarily)
  3. Server configuration issue (check with hosting provider)
  4. WordPress REST API disabled by security plugin