WordPress, como plataforma de gestión de contenidos, ofrece diversas opciones para detectar la creación de nuevos posts. Aquí exploraremos estrategias en PHP para automatizar esta detección y responder eficientemente a los cambios en tu sitio.
Actuando desde un servidor externo XML-RPC
Utiliza la interfaz XML-RPC de WordPress para detectar nuevos posts. Conéctate remotamente y verifica periódicamente si hay actualizaciones.
Para crear un servicio en PHP que detecte la creación de un nuevo post en WordPress, puedes seguir estos pasos:
Paso 1: Configurar Webhooks en WordPress
- Accede al panel de administración de tu sitio WordPress.
- Navega a
Configuración > Escritura
. - En la sección «Publicación remota», activa la opción «XML-RPC».
- Guarda los cambios.
Paso 2: Crear el Servicio en PHP
Crea un script en PHP que maneje la detección de nuevos posts. Puedes utilizar el siguiente ejemplo básico:
<?php
// Recibir datos del webhook
$datosWebhook = file_get_contents("php://input");
$datosWebhook = json_decode($datosWebhook, true);
// Verificar si hay datos y si es un evento de nuevo post
if (!empty($datosWebhook) && $datosWebhook['action'] === 'publish_post') {
// Procesar la información del nuevo post
$titulo = $datosWebhook['post']['post_title'];
$url = $datosWebhook['post']['guid'];
// Puedes agregar aquí tu lógica para manejar la creación de un nuevo post
// Ejemplo: Enviar un correo electrónico de notificación
$destinatario = "tucorreo@example.com";
$asunto = "Nuevo post en WordPress: $titulo";
$mensaje = "Se ha publicado un nuevo post en WordPress.\n\nTítulo: $titulo\nURL: $url";
mail($destinatario, $asunto, $mensaje);
}
?>
Este script recibe datos del webhook de WordPress, verifica si es un evento de publicación de un nuevo post y realiza acciones específicas, como enviar un correo electrónico de notificación. Ajusta la lógica según tus necesidades.
Paso 3: Publicar el Servicio
Publica tu script en un servidor que sea accesible desde Internet. Asegúrate de configurar un endpoint en el servicio para recibir los datos del webhook.
Paso 4: Configurar el Webhook
Vuelve al panel de administración de WordPress:
- Navega a
Configuración > Escritura
. - Desplázate a la sección «Publicación remota».
- Agrega la URL del endpoint de tu servicio PHP en el campo «Servicios que aceptan conexiones remotas (pingbacks y trackbacks)».
- Guarda los cambios.
Con estos pasos, tu servicio PHP estará configurado para detectar la creación de nuevos posts en WordPress a través de webhooks. Asegúrate de implementar medidas de seguridad, como la verificación de la autenticidad de los datos recibidos, para garantizar la integridad del sistema.
Webhooks
Aprovecha los webhooks de WordPress, configurándolos para notificar a tu servicio PHP cuando se publique un nuevo post.php
Si no deseas utilizar la opción XML-RPC en WordPress y prefieres una solución sin depender de ella, puedes considerar utilizar la acción nativa de WordPress save_post
para detectar cuando se guarda un nuevo post. Aquí tienes un ejemplo de cómo podrías hacerlo:
Paso 1: Crear el Servicio en PHP
<?php
// Recibir datos del nuevo post
$post_id = $_POST['ID'];
$titulo = $_POST['post_title'];
$url = get_permalink($post_id);
// Puedes agregar aquí tu lógica para manejar la creación de un nuevo post
// Ejemplo: Enviar un correo electrónico de notificación
$destinatario = "tucorreo@example.com";
$asunto = "Nuevo post en WordPress: $titulo";
$mensaje = "Se ha publicado un nuevo post en WordPress.\n\nTítulo: $titulo\nURL: $url";
mail($destinatario, $asunto, $mensaje);
?>
Paso 2: Publicar el Servicio
Publica tu script en un servidor que sea accesible desde Internet. No es necesario configurar webhooks ya que este enfoque aprovecha la acción save_post
de WordPress directamente.
Nota:
- Asegúrate de que este script esté en un lugar seguro y accesible.
- La acción
save_post
se dispara cada vez que se guarda un post, incluyendo actualizaciones. Puedes agregar más lógica para manejar diferentes escenarios según tus necesidades.
Este enfoque es más simple y no requiere habilitar XML-RPC en WordPress. Sin embargo, ten en cuenta que la acción save_post
se dispara después de que se ha guardado el post, por lo que no es exactamente equivalente a un webhook que se dispara inmediatamente después de la creación del post. Dependiendo de tus requisitos, esta solución puede ser adecuada.
Sin acceso a la base de datos: API REST de WordPress
Interactúa con la API REST de WordPress para obtener información sobre nuevos posts de manera estructurada.
<?php
// URL de la API REST de WordPress
$api_url = 'https://tusitio.com/wp-json/wp/v2/posts';
// Realiza la solicitud GET a la API REST
$response = file_get_contents($api_url);
// Verifica si la solicitud fue exitosa
if ($response === false) {
// Manejo de error, por ejemplo, registro o notificación
echo 'Error al obtener datos de la API REST de WordPress';
} else {
// Decodifica la respuesta JSON
$posts = json_decode($response, true);
// Verifica si hay nuevos posts
if (!empty($posts)) {
// Procesa los nuevos posts
foreach ($posts as $post) {
// Accede a la información estructurada del post
$postId = $post['id'];
$title = $post['title']['rendered'];
$content = $post['content']['rendered'];
// Realiza acciones con la información, como almacenar en una base de datos o notificar
// ...
echo "Nuevo post detectado: $title\n";
}
} else {
echo 'No se encontraron nuevos posts en WordPress';
}
}
Este ejemplo realiza una solicitud GET a la API REST de WordPress y procesa la respuesta JSON para obtener información estructurada sobre los posts. Puedes personalizar la lógica para adaptarla a tus necesidades, como almacenar en una base de datos o enviar notificaciones.
Accediendo a la BBDD:
Si deseas detectar la creación de un nuevo post en WordPress desde un servidor externo sin depender de XML-RPC o webhooks, puedes optar por verificar periódicamente la base de datos de WordPress en busca de cambios. Aquí hay un ejemplo básico de cómo podrías lograrlo:
Paso 1: Configurar el Servidor Externo
<?php
// Configuración de la base de datos de WordPress
define('DB_NAME', 'nombre_de_tu_base_de_datos');
define('DB_USER', 'tu_usuario_de_base_de_datos');
define('DB_PASSWORD', 'tu_contraseña_de_base_de_datos');
define('DB_HOST', 'tu_servidor_de_base_de_datos');
// Conectar a la base de datos
$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
// Verificar la conexión
if ($conn->connect_error) {
die("Conexión fallida: " . $conn->connect_error);
}
// Consulta para obtener los últimos posts
$query = "SELECT ID, post_title, post_date FROM wp_posts WHERE post_type = 'post' ORDER BY post_date DESC LIMIT 1";
$result = $conn->query($query);
// Procesar los resultados
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$post_id = $row['ID'];
$titulo = $row['post_title'];
$fecha = $row['post_date'];
// Puedes agregar aquí tu lógica para manejar la creación de un nuevo post
// Ejemplo: Enviar un correo electrónico de notificación
$destinatario = "tucorreo@example.com";
$asunto = "Nuevo post en WordPress: $titulo";
$mensaje = "Se ha publicado un nuevo post en WordPress.\n\nTítulo: $titulo\nFecha: $fecha";
mail($destinatario, $asunto, $mensaje);
}
// Cerrar la conexión
$conn->close();
?>
Paso 2: Programar la Verificación
Puedes ejecutar este script periódicamente utilizando una tarea programada (cron job) en tu servidor externo. La frecuencia dependerá de tus necesidades y preferencias.
Este enfoque es menos inmediato que el uso de webhooks, ya que depende de la frecuencia con la que se ejecute la tarea programada. Sin embargo, puede ser una solución práctica si no puedes o no deseas utilizar otras opciones. Ajusta la consulta SQL según la estructura específica de tu base de datos de WordPress si es necesario.
RSS feed
Si no tienes acceso a la base de datos ni puedes utilizar XML-RPC ni webhooks, las opciones para detectar la creación de nuevos posts en WordPress desde un servidor externo se vuelven más limitadas. Una alternativa es utilizar un servicio de sindicación de contenido (RSS feed) que WordPress genera automáticamente para cada sitio.
Aquí hay un enfoque básico que puedes seguir:
- Obtén la URL del feed RSS de WordPress: La mayoría de los sitios de WordPress tienen un feed RSS predeterminado. Por ejemplo, si tu sitio es
https://tusitio.com
, el feed RSS predeterminado podría serhttps://tusitio.com/feed
. - Consulta el Feed RSS: Puedes usar PHP para hacer una solicitud HTTP y analizar el feed RSS para obtener información sobre los últimos posts. Aquí hay un ejemplo utilizando la función
simplexml_load_file
para analizar el feed:
<?php
$feed_url = 'https://tusitio.com/feed';
$feed = simplexml_load_file($feed_url);
// Verifica si se pudo cargar el feed correctamente
if ($feed) {
// Accede a la información del último post
$latest_post = $feed->channel->item[0];
$titulo = (string)$latest_post->title;
$enlace = (string)$latest_post->link;
// Puedes agregar aquí tu lógica para manejar la creación de un nuevo post
// Ejemplo: Enviar un correo electrónico de notificación
$destinatario = "tucorreo@example.com";
$asunto = "Nuevo post en WordPress: $titulo";
$mensaje = "Se ha publicado un nuevo post en WordPress.\n\nTítulo: $titulo\nEnlace: $enlace";
mail($destinatario, $asunto, $mensaje);
} else {
// Manejar el caso en el que no se pudo cargar el feed
echo "Error al cargar el feed RSS";
}
?>
Programa la Verificación
Debes ejecutar este script periódicamente utilizando una tarea programada (cron job) en tu servidor externo. La frecuencia de ejecución dependerá de tus necesidades y preferencias.
Este enfoque depende de la existencia y accesibilidad del feed RSS de tu sitio WordPress, y también puede tener ciertos retrasos debido a la frecuencia de verificación.
Conclusión
Cada enfoque tiene sus ventajas y consideraciones. XML-RPC es una opción sólida para integraciones más antiguas, mientras que los webhooks y la API REST son ideales para soluciones modernas. Personaliza tu enfoque según los requisitos específicos de tu proyecto.
Con estas estrategias en PHP, podrás construir un servicio efectivo que detecte la creación de nuevos posts en WordPress y tome las acciones necesarias en consecuencia. Mantén tu aplicación sincronizada y responde rápidamente a los cambios en tu sitio.