# 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 ### Solution 1: Flush WordPress Permalinks 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:** ```bash 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`: ```php define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false); ``` **Check logs:** ```bash 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: ```javascript 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: ```javascript 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: ```apache # BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress ``` ## Expected Behavior **GET Request:** ```json { "vip_min_spent": 1000, "vip_min_orders": 10, "vip_timeframe": "all", "vip_require_both": true, "vip_exclude_refunded": true } ``` **POST Request:** ```json { "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