October 28, 2024

Automatización de Calificaciones en WordPress: Cómo Sincronizar la Puntuación de Trustpilot con PHP y ACF

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 campo prueba_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 y preg_match con una expresión regular para extraer el puntaje.
  • Actualiza el campo valoracion en el repetidor de ACF usando update_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 a scrape_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 usando wp_schedule_event para que se ejecute mensualmente.
  • add_action vincula el evento update_trustpilot_rating_monthly con la función scrape_trustpilot_rating, lo que asegura que la función se ejecutará automáticamente cada mes.

Resumen

Este código realiza lo siguiente:

  1. 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.
  2. Actualización Manual: La función se ejecuta automáticamente cada vez que se guarda la página de opciones.
  3. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *

Need help with your project?
Let’s get it done.

START A PROJECT
Strategic Design.

Contact Us

contact@brucdesign.com