Emitir entradas personalizadas del registro de actividad
Esta guía explica cómo añadir tus propias entradas personalizadas al registro de Jetpack Activity desde el código de tu plugin o sitio.
Las entradas del registro de Jetpack Activity creadas con esta API aparecen junto a otros eventos, como la publicación de entradas o la actualización de plugins. Esto resulta útil si quieres mostrar eventos relevantes a los administradores del sitio sin crear tu propia interfaz de registro de actividad o auditoría. Esta guía está dirigida a desarrolladores e implica escribir código personalizado.
Requisitos
- Plugin Jetpack en su versión 15.9 o superior, o
- Paquete Sync de Jetpack en su versión 4.38 o superior (si tu plugin requiere Sync directamente).
- El tipo de entrada personalizado denominado
jp_act_log_eventse registra automáticamente cuando se carga Sync. No necesitas registrarlo por tu cuenta. - La persona que realiza la llamada debe tener la capacidad
manage_options(normalmente, la de administrador del sitio).
Cómo añadir una entrada al registro de actividad
Puedes crear entradas personalizadas en el registro de actividad de tres formas principales:
- Desde PHP mediante la clase auxiliar (recomendado).
- Desde un cliente REST.
- Directamente mediante
wp_insert_post().
Añadir una entrada desde PHP (recomendado)
Utiliza la clase auxiliar denominada Activity_Log_Event para validar y crear entradas.
use Automattic\Jetpack\Sync\Activity_Log_Event;
$post_id = Activity_Log_Event::create( array(
'title' => 'Membership sync failed',
'content' => 'Remote API returned 401. Retry queued.',
'source' => 'my-plugin',
'severity' => 'error',
) );
if ( false === $post_id ) {
// Validation failed (missing/invalid title or content, bad severity).
}
Si la operación tiene éxito, create() devuelve el jp_act_log_event ID de entrada.
Si falla la validación, devuelve false.
Usar la clase auxiliar es el enfoque recomendado, porque gestiona la validación y garantiza un formato de datos coherente para las entradas del registro de actividad.
Añadir una entrada desde un cliente REST
También puedes crear entradas mediante la WordPress REST API.
Endpoint
POST /wp-json/wp/v2/activity-log-events
Content-Type: application/json
Authorization: OAuth token with admin scope
Cuerpo de la solicitud
{
"title": "Membership sync failed",
"content": "Remote API returned 401. Retry queued.",
"source": "my-plugin",
"severity": "error"
}
La persona autenticada debe tener la capacidad manage_options. La entrada resultante del registro de actividad tendrá a esa persona como actor.
Añadir una entrada mediante wp_insert_post()
También puedes crear eventos directamente como publicaciones de tipo jp_act_log_event. El campo post_content debe contener una carga útil codificada en JSON con las mismas propiedades que se utilizan en otros lugares.
wp_insert_post(
array(
'post_type' => 'jp_act_log_event',
'post_status' => 'publish',
'post_title' => 'Cache flushed',
'post_content'=> wp_json_encode(
array(
'title' => 'Cache flushed',
'content' => 'Manual cache flush during incident response.',
'source' => 'my-snippet',
'severity' => 'info',
)
),
)
);
Tú eres responsable de validar estos valores cuando utilices wp_insert_post(). Para evitar entradas no válidas, utiliza preferiblemente la clase auxiliar Activity_Log_Event siempre que sea posible.
Definiciones de los campos
Cada evento del registro de actividad admite las siguientes propiedades:
- título
- Tipo: cadena
- Longitud máxima: 200 caracteres
- Solo texto sin formato
- Obligatorio
- contenido
- Tipo: cadena
- Longitud máxima: 5.000 caracteres
- Solo texto sin formato
- Obligatorio
- origen
- Tipo: cadena
- Longitud máxima: 100 caracteres
- Identificador de la herramienta de origen (por ejemplo,
my-plugin). - Valor predeterminado:
Custom entry - Opcional
- gravedad
- Tipo: enumeración
- Valores permitidos:
info,success,warning,error - Valor predeterminado:
info - Opcional
Lo que ven los propietarios del sitio
Las entradas personalizadas aparecen en el registro de actividad del sitio como eventos normales, identificados como eventos personalizados. En el registro de actividad:
- El título se utiliza como encabezado del evento.
- El actor es el usuario de WordPress que realizó la llamada a API (por ejemplo, mediante PHP o REST).
Limitaciones y comportamiento
Las entradas personalizadas del registro de actividad creadas con esta API tienen el siguiente comportamiento:
- No se pueden editar
Entradas de escritura única. Eljp_act_log_eventtipo de entrada personalizado deniega todas las capacidades deedit_*ydelete_*. - No se publican automáticamente
Las entradas no se compartirán mediante Jetpack Social, aunque un plugin de terceros añada compatibilidad con Publicize para el tipo de entrada personalizado. - No se incluyen en los sitemaps
Eljp_act_log_eventtipo de entrada está excluido explícitamente de los sitemaps de Jetpack. - Privado en la interfaz pública
El tipo de entrada utiliza:public => falsepublicly_queryable => falseexclude_from_search => true