Este código en PHP está diseñado para realizar scraping del puntaje de una empresa en Trustpilot y actualizarlo automáticamente en un campo de ACF (Advanced Custom Fields) en una página de opciones de WordPress. Aquí se explica cada sección del código:
1. Función Principal de Scraping (scrape_trustpilot_rating
)
Esta función se encarga de realizar el scraping en Trustpilot para obtener el puntaje de calificación de la empresa y actualizarlo en el campo correspondiente en WordPress.
phpCopiar códigofunction scrape_trustpilot_rating() {
// Obtiene la lista de plataformas del campo repetidor de ACF en la página de opciones
$platforms = get_field('prueba_social_plataformas', 'option');
// Verifica si existen plataformas en los datos
if ($platforms) {
foreach ($platforms as $index => $platform) {
// Comprueba si la plataforma es Trustpilot
if ($platform['nombre'] === 'Trustpilot') {
$trustpilot_url = $platform['enlace']['url'];
// Realiza una solicitud GET para obtener el contenido de la página de Trustpilot
$response = wp_remote_get($trustpilot_url);
// Verifica si la solicitud fue exitosa
if (is_wp_error($response)) {
return 'Error fetching Trustpilot page: ' . $response->get_error_message();
}
$html = wp_remote_retrieve_body($response);
// Extrae el puntaje de la página con expresión regular
if (preg_match('/<p class="typography_body-l__KUYFJ typography_appearance-subtle__8_H2l" data-rating-typography="true">(\d+,\d+)<\/p>/', $html, $matches)) {
$rating = $matches[1];
// Reemplaza la coma con un punto para formatear correctamente el número
$numeric_rating = str_replace(',', '.', $rating);
// Convierte el puntaje a un valor numérico
$numeric_rating = floatval($numeric_rating);
// Imprime el puntaje extraído en un comentario HTML para depuración
echo '<!-- Trustpilot Rating Extracted: ' . esc_html($numeric_rating) . ' -->';
// Actualiza el campo 'valoracion' en el repetidor de ACF
$platforms[$index]['valoracion'] = $numeric_rating;
update_field('prueba_social_plataformas', $platforms, 'option');
return 'Updated Trustpilot rating to: ' . $numeric_rating;
} else {
return 'Could not extract Trustpilot rating.';
}
}
}
} else {
return 'No platforms data found in ACF.';
}
}
Explicación:
- La función utiliza
get_field
para obtener el contenido del campoprueba_social_plataformas
desde la página de opciones en ACF. - Verifica si el nombre de la plataforma es "Trustpilot".
- Usa
wp_remote_get
para obtener el HTML de la página de Trustpilot ypreg_match
con una expresión regular para extraer el puntaje. - Actualiza el campo
valoracion
en el repetidor de ACF usandoupdate_field
y devuelve un mensaje de éxito o error según el resultado.
2. Ejecutar la Función al Guardar la Página de Opciones
Este código vincula la función scrape_trustpilot_rating
para que se ejecute cada vez que se guarde la página de opciones.
phpCopiar códigoadd_action('acf/save_post', 'update_trustpilot_rating_on_save', 20);
function update_trustpilot_rating_on_save($post_id) {
// Comprueba si es la página de opciones
if ($post_id === 'options') {
scrape_trustpilot_rating();
}
}
Explicación:
- La función
update_trustpilot_rating_on_save
se ejecuta después de guardar la página de opciones (acf/save_post
). - Si se guarda la página de opciones (
$post_id === 'options'
), llama ascrape_trustpilot_rating
.
3. Programación Automática Mensual
El siguiente bloque de código programa la ejecución mensual de scrape_trustpilot_rating
para mantener la calificación de Trustpilot actualizada sin intervención manual.
phpCopiar código// Programar un evento mensual para actualizar la calificación de Trustpilot
if (!wp_next_scheduled('update_trustpilot_rating_monthly')) {
wp_schedule_event(time(), 'monthly', 'update_trustpilot_rating_monthly');
}
// Vincular la función de scraping a la programación mensual
add_action('update_trustpilot_rating_monthly', 'scrape_trustpilot_rating');
Explicación:
wp_next_scheduled
verifica si ya existe un evento programado; si no, programa uno usandowp_schedule_event
para que se ejecute mensualmente.add_action
vincula el eventoupdate_trustpilot_rating_monthly
con la funciónscrape_trustpilot_rating
, lo que asegura que la función se ejecutará automáticamente cada mes.
Resumen
Este código realiza lo siguiente:
- Scraping: Extrae la calificación de Trustpilot desde el HTML de la página usando una expresión regular y la actualiza en un campo de ACF.
- Actualización Manual: La función se ejecuta automáticamente cada vez que se guarda la página de opciones.
- Programación Mensual: Programa una actualización mensual para mantener el puntaje de Trustpilot actualizado.
Este proceso permite automatizar la sincronización de la calificación de Trustpilot en WordPress, asegurando que el sitio tenga siempre el puntaje más reciente sin intervención manual.