Request dengan customize_changeset_uuid parameter:
checkout-2/?customize_changeset_uuid=...
Ini BUKAN endpoint AJAX WooCommerce!
Ini adalah WordPress Customizer request, bukan AJAX request. Customizer menggunakan parameter customize_changeset_uuid untuk preview changes, tapi ini bukan AJAX request.
Code kita sebelumnya menganggap semua request dengan parameter tertentu adalah AJAX, sehingga:
- Output buffer cleaning di-trigger untuk Customizer requests
- Error suppression di-trigger untuk Customizer requests
- BlockUI logic mungkin di-trigger untuk Customizer requests
- Customizer tidak bisa bekerja dengan benar
Lokasi: inc/woocommerce.php - augoose_is_wc_ajax_request()
Perubahan:
- ✅ Check
customize_changeset_uuidparameter di awal - ✅ Check
is_customize_preview()function - ✅ Return
falsejika ini Customizer request
Code:
function augoose_is_wc_ajax_request() {
// CRITICAL: Exclude WordPress Customizer requests
if ( isset( $_REQUEST['customize_changeset_uuid'] ) ||
isset( $_GET['customize_changeset_uuid'] ) ||
isset( $_POST['customize_changeset_uuid'] ) ||
is_customize_preview() ) {
return false; // This is Customizer, not WooCommerce AJAX
}
// ... rest of function
}Lokasi: inc/woocommerce.php - wp_augoose_clean_output_for_woocommerce_ajax()
Perubahan:
- ✅ Early return jika detect Customizer request
- ✅ Don't interfere dengan Customizer output
Code:
function wp_augoose_clean_output_for_woocommerce_ajax() {
// CRITICAL: Exclude WordPress Customizer requests
if ( isset( $_REQUEST['customize_changeset_uuid'] ) ||
is_customize_preview() ) {
return; // Don't interfere with Customizer
}
// ... rest of function
}Lokasi: inc/woocommerce.php - wp_augoose_suppress_harmless_warnings()
Perubahan:
- ✅ Early return jika detect Customizer request
- ✅ Customizer needs to see warnings/notices for debugging
Code:
function wp_augoose_suppress_harmless_warnings() {
// CRITICAL: Exclude WordPress Customizer requests
if ( isset( $_REQUEST['customize_changeset_uuid'] ) ||
is_customize_preview() ) {
return; // Don't suppress warnings in Customizer
}
// ... rest of function
}Lokasi: inc/woocommerce.php - wp_augoose_ensure_classic_checkout()
Perubahan:
- ✅ Early return jika detect Customizer request
- ✅ Customizer needs to work normally
Code:
function wp_augoose_ensure_classic_checkout() {
// CRITICAL: Skip for WordPress Customizer requests
if ( isset( $_REQUEST['customize_changeset_uuid'] ) ||
is_customize_preview() ) {
return; // Don't interfere with Customizer
}
// ... rest of function
}Customizer Detection:
- Check
$_REQUEST['customize_changeset_uuid']parameter - Check
$_GET['customize_changeset_uuid']parameter - Check
$_POST['customize_changeset_uuid']parameter - Check
is_customize_preview()WordPress function
Jika salah satu true → Ini Customizer, bukan AJAX → Skip semua AJAX-specific logic
# Simulate Customizer request
curl "https://augoose.co/checkout-2/?customize_changeset_uuid=test123" \
-v 2>&1 | head -30Expected:
- Response is normal HTML (not JSON)
- No output buffer cleaning interference
- No error suppression
- Customizer works normally
# Simulate WooCommerce AJAX request
curl -X POST "https://augoose.co/?wc-ajax=update_order_review" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "billing_first_name=Test" \
-v 2>&1 | head -30Expected:
- Response is JSON (not HTML)
- Output buffer cleaning works
- Error suppression works
- AJAX works normally
Fix ini critical:
- ✅ Exclude Customizer dari semua AJAX-specific logic
- ✅ Customizer bisa bekerja normal
- ✅ WooCommerce AJAX tetap berfungsi
- ✅ No false positives
Result: Customizer dan WooCommerce AJAX sekarang tidak saling interfere.
Fix ini bekerja bersama dengan:
- Aggressive Output Buffer Cleaning - Hanya untuk AJAX, bukan Customizer
- Enhanced Error Suppression - Hanya untuk AJAX, bukan Customizer
- BlockUI Fix - Hanya untuk AJAX, bukan Customizer
Semua fix sekarang properly exclude Customizer requests.