Fix Admin Panel: Resolver error de nonce y validación de URLs

Dos fixes críticos para el admin panel del tema:

1. **Fix error de nonce en AJAX**
   - Cambiar de wp_verify_nonce() a check_ajax_referer()
   - check_ajax_referer() es el método recomendado por WordPress para AJAX
   - Aplicado en ajax_get_settings() y ajax_save_settings()
   - El nonce ahora se valida correctamente

2. **Fix validación de URLs relativas**
   - Aceptar URLs relativas que empiezan con / (ej: /catalogo)
   - filter_var() con FILTER_VALIDATE_URL rechazaba URLs relativas
   - Agregada validación adicional con regex para paths relativos
   - Mantiene validación para URLs completas

Archivos modificados:
- admin-panel/includes/class-settings-manager.php
- admin-panel/includes/class-validator.php

Issue: #144

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
FrankZamora
2025-11-10 10:58:50 -06:00
parent 3beb292901
commit fb36424112
2 changed files with 13 additions and 11 deletions

View File

@@ -144,10 +144,8 @@ class APUS_Settings_Manager {
* AJAX: Obtener configuraciones
*/
public function ajax_get_settings() {
// Verificar nonce
if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'apus_admin_nonce')) {
wp_send_json_error('Nonce inválido');
}
// Verificar nonce usando check_ajax_referer (método recomendado para AJAX)
check_ajax_referer('apus_admin_nonce', 'nonce');
if (!current_user_can('manage_options')) {
wp_send_json_error('Permisos insuficientes');
@@ -161,10 +159,8 @@ class APUS_Settings_Manager {
* AJAX: Guardar configuraciones
*/
public function ajax_save_settings() {
// Verificar nonce
if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'apus_admin_nonce')) {
wp_send_json_error('Nonce inválido');
}
// Verificar nonce usando check_ajax_referer (método recomendado para AJAX)
check_ajax_referer('apus_admin_nonce', 'nonce');
if (!current_user_can('manage_options')) {
wp_send_json_error('Permisos insuficientes');