WordPress 6.9 ha traido consigo varias caracteristicas interesantes, y entre ellas destaca el Abilities API, una nueva forma de definir capacidades en WordPress que pueden ser entendidas tanto por humanos como por maquinas.
El Abilities API proporciona un metodo estandarizado para que WordPress core, plugins y temas definan sus funcionalidades en un formato estructurado y accesible. Esto es especialmente valioso para herramientas de automatizacion, agentes de IA y plugins que necesitan descubrir dinamicamente que puede hacer un sitio WordPress.
Que es el Abilities API
El Abilities API funciona como un diccionario de capacidades de tu sitio WordPress. Antes de esta API, no existia una manera simple y consistente para que plugins o herramientas externas descubrieran las caracteristicas disponibles en un sitio.
Las funcionalidades estaban dispersas entre hooks, endpoints de REST API y codigo personalizado sin una estructura uniforme. Ahora, con el Abilities API, herramientas como agentes de IA (Claude, ChatGPT), Zapier, n8n o cualquier otra aplicacion externa pueden simplemente preguntar a WordPress: “Que puedes hacer?” y recibir una lista estructurada de capacidades.
Ademas, el API facilita la colaboracion entre plugins. En lugar de depender de hooks ocultos o soluciones fragiles, los plugins pueden llamar directamente a las capacidades de otros plugins de manera limpia y predecible.
Primeros Pasos: Registrar una Capacidad
Para utilizar el Abilities API, el primer paso es registrar una nueva capacidad. Esto se realiza normalmente dentro de tu plugin o tema.
Una capacidad debe contener:
- Un nombre unico que contenga solo caracteres alfanumericos en minusculas, guiones y barras. Por ejemplo:
miempresa/crear-factura - Una descripcion legible para humanos y una etiqueta clara
- Esquemas de entrada y salida definidos en JSON Schema
- Una verificacion de permisos para controlar quien puede ejecutar la capacidad
Ejemplo 1: Capacidad Simple sin Parametros
A continuacion se muestra un ejemplo de como registrar una capacidad simple que devuelve metricas de analisis del sitio:
add_action( 'wp_abilities_api_init', function () {
if ( ! function_exists( 'wp_register_ability' ) ) {
return;
}
wp_register_ability(
'miempresa/resumen-analytics',
[
'label' => __( 'Obtener Resumen de Analytics', 'miplugin' ),
'description' => __( 'Devuelve un resumen de rendimiento del sitio.', 'miplugin' ),
'input_schema' => [
'type' => 'object',
'properties' => [],
],
'output_schema' => [
'type' => 'object',
'properties' => [
'visitas' => [ 'type' => 'integer' ],
'registros' => [ 'type' => 'integer' ],
'ventas' => [ 'type' => 'integer' ],
],
],
'permission_callback' => function () {
return current_user_can( 'manage_options' );
},
'execute_callback' => function () {
return [
'visitas' => 1473,
'registros' => 32,
'ventas' => 5,
];
},
]
);
});
En este ejemplo registramos una capacidad llamada miempresa/resumen-analytics. La capacidad no requiere entrada de parametros (array vacio en input_schema) pero devuelve un objeto con tres metricas: visitas, registros y ventas. Solo puede ser ejecutada por usuarios con permisos de administracion (manage_options).
Ejemplo 2: Capacidad Compleja con Parametros
Este segundo ejemplo muestra una capacidad mas compleja que procesa pedidos. Acepta entrada (ID de cliente, SKUs de productos, token de pago) y devuelve informacion detallada del pedido creado:
add_action( 'init', function() {
if ( ! function_exists( 'wp_register_ability' ) ) {
return;
}
wp_register_ability( 'miempresa/procesar-pedido', [
'description' => 'Procesa pagos, crea registro de pedido y envia confirmacion email.',
'execute_callback' => function ( $inputs ) {
// Implementacion de logica de procesamiento...
},
'input_schema' => [
'type' => 'object',
'properties' => [
'customer_id' => [
'type' => 'integer',
'description' => 'ID del cliente que realiza el pedido.',
],
'product_skus' => [
'type' => 'array',
'description' => 'Array de SKUs de productos a incluir.',
'items' => [ 'type' => 'string' ],
],
'payment_token' => [
'type' => 'string',
'description' => 'Token seguro de un solo uso del gateway.',
],
],
'required' => [ 'customer_id', 'product_skus', 'payment_token' ],
],
'output_schema' => [
'type' => 'object',
'properties' => [
'order_id' => [
'type' => 'integer',
'description' => 'ID del nuevo pedido creado.',
],
'order_status' => [
'type' => 'string',
'description' => 'Estado del pedido (ej: "processing", "pending").',
],
'message' => [
'type' => 'string',
'description' => 'Mensaje de confirmacion.',
],
],
],
] );
} );
Ejecutar Capacidades
Registrar una capacidad es solo el primer paso. Para que sea util, tambien necesitamos ejecutarla y obtener resultados. Hay varias formas de hacerlo segun donde estes trabajando.
Ejecutar desde PHP
En PHP, WordPress proporciona la funcion wp_get_ability() para recuperar una capacidad por su nombre, y luego llamamos al metodo execute().
Para ejecutar la capacidad simple:
$ability = wp_get_ability( 'miempresa/resumen-analytics' );
if ( $ability ) {
$result = $ability->execute();
}
Si la capacidad requiere parametros (como en el ejemplo de procesar pedido), pasamos un array asociativo al metodo execute():
$ability = wp_get_ability( 'miempresa/procesar-pedido' );
if ( $ability ) {
$inputs = [
'customer_id' => 123,
'product_skus' => [ 'SKU123', 'SKU456' ],
'payment_token'=> 'tok_1A2B3C****',
];
$result = $ability->execute( $inputs );
}
Una ventaja importante es que no necesitas manejar manualmente verificaciones de permisos ni validacion de entrada. El metodo execute() se encarga automaticamente de validar los parametros segun los esquemas definidos y de verificar los permisos. Si algo no es correcto, la ejecucion falla de forma segura.
Ejecutar desde JavaScript y REST API
El Abilities API tambien soporta REST API de forma integrada. Sin embargo, necesitas habilitar show_in_rest al registrar la capacidad:
'meta' => [
'show_in_rest' => true,
]
Una vez habilitado, la capacidad estara disponible en el endpoint REST: /wp-json/wp-abilities/v1/miempresa/resumen-analytics. Las aplicaciones externas o tu codigo frontend pueden ejecutar capacidades enviando peticiones HTTP sin necesidad de escribir codigo REST personalizado.
WordPress tambien esta introduciendo una libreria cliente de JavaScript para el Abilities API que simplifica significativamente las llamadas desde el navegador. Primero, instala la libreria:
npm i @wordpress/abilities
Luego, usala en tu aplicacion JavaScript (React):
useEffect(() => {
executeAbility( 'miempresa/resumen-analytics' ).then( ( response ) => {
setResponse( response );
} );
}, []);
Casos de Uso Practicos
El Abilities API abre muchas posibilidades interesantes:
- Integracion con Agentes de IA: Claude, ChatGPT o n8n pueden descubrir automaticamente que acciones realizar en tu sitio sin necesidad de configuracion manual.
- Automatizacion entre plugins: Los plugins pueden comunicarse de forma estructurada sin depender de hooks internos ocultos o convenciones fragiles.
- Exposicion controlada de funcionalidad: Puedes definir exactamente que funcionalidades exponer y a quien, con esquemas claramente documentados y validacion automatica.
- Discoverability: Las herramientas externas pueden explorar las capacidades disponibles en tu sitio de forma programatica y tomar decisiones inteligentes.
Por Que Importa el Abilities API
Si trabajas con herramientas modernas, el Abilities API es crucial:
- Agentes de IA: Claude, ChatGPT, o sistemas personalizados que necesiten entender que pueden hacer en tu sitio
- Automatizacion sin codigo: n8n, Zapier, Make (Integromat) que requieren entender las capacidades disponibles
- Integracion con aplicaciones externas: CRM, marketing automation, ERP, etc.
El Abilities API es el estandar moderno para comunicar capacidades de forma estructurada, segura y autodescubierta.
El Abilities API representa un paso importante en la evolucion de WordPress hacia una plataforma mas interoperable y preparada para el futuro. Proporciona una forma clara, estandarizada y segura para definir y descubrir funcionalidades.
Si tu sitio es WordPress 6.9 o superior y necesitas que herramientas externas (especialmente agentes de IA) interactuen con tu sitio de forma predecible, el Abilities API es la mejor practica moderna.
A medida que mas plugins y temas adopten esta API, podemos esperar un ecosistema WordPress mas rico donde las capacidades sean facilmente descubribles y utilizables en diferentes contextos.
