Crear un admin AJAX personalizado y más ligero en WordPress
WordPress ofrece admin-ajax.phppara manejar solicitudes AJAX, pero puede ser demasiado pesado para ciertas aplicaciones, ya que carga todo el núcleo. Si deseas algo más ligero, puedes usar SHORTINIT. A continuación, te mostramos cómo implementar un archivo personalizado llamado custom-admin-ajax.php.
¿Qué es SHORTINIT?
SHORTINIT es una constante en WordPress que limita la cantidad de funcionalidades cargadas. Cuando se define como true, sólo se cargan los siguientes elementos:
- El archivo
wp-load.php. - Funciones básicas de WordPress como
wpdb,wp_safe_redirect, ysanitize_text_field. - La conexión a la base de datos y las utilidades esenciales para trabajar con datos.
Esto hace que las solicitudes sean mucho más rápidas, ya que evita cargar el sistema completo de WordPress, incluyendo los plugins y temas.
Crear el admin ajax personalizado
Crea un archivo llamado custom-admin-ajax.phpen el directorio wp-admin/ junto a admin-ajax.php
Configuración en el tema activo
En el archivo
functions.phpdel tema activo, registraremos el script JavaScript, el evento AJAX y un shortcode para mostrar el botón HTML.
Registrar el script y el evento AJAX.
admin_url( 'custom-admin-ajax.php' ), ] ); } add_action( 'wp_enqueue_scripts', 'enqueueCustomAjaxScript' );
Manejar la acción en PHP
Define la acción personalizada para procesar la solicitud AJAX y devolver la hora local y UTC.
$localTime, 'utc_time' => $utcTime, ] ); } add_action( 'wp_custom_ajax_show_time', 'handleShowTime' );
Shortcode para mostrar el botón.
Mostrar Hora'; } add_shortcode( 'show_time_button', 'renderAjaxButton' );Crear el script JavaScript
Crea un archivo llamado
custom-ajax.jsen el directorio de tu tema con el siguiente contenido:document.addEventListener('DOMContentLoaded', function() { const button = document.getElementById('show-time-btn'); const output = document.getElementById('time-output'); button.addEventListener('click', function() { fetch(customAjax.url + '?action=show_time') .then(function(response) { return response.json(); }) .then(function(data) { if (data.success) { output.innerHTML = 'Hora Local: ' + data.data.local_time + '
' + 'Hora UTC: ' + data.data.utc_time + '
'; } else { output.innerHTML = 'Error: ' + data.data.message + '
'; } }) .catch(function(error) { output.innerHTML = 'Error de conexión: ' + error.message + '
'; }); }); });
Resultado
- Agrega el shortcode
[show_time_button]en cualquier entrada o página.- Al cargar la página, verás un botón que dice «Mostrar Hora».
- Al hacer clic, se imprimirá la hora local y UTC usando nuestro admin AJAX personalizado.
Con esta configuración, puedes manejar solicitudes AJAX de manera más eficiente y ligera en WordPress. Este enfoque es útil para aplicaciones donde el rendimiento es clave y solo se necesitan las funcionalidades básicas del núcleo.
