Inviare una richiesta di recensione al cliente in automatico su Trustpilot per i prodotti di WooCommerce

Qui ho sviluppato un codice che permette di avere un sistema per inviare in automatico le recensioni su Trustpilot.

Il plugin di Trustpilot per WordPress e WooCommerce non viene aggiornato da anni e da sempre problemi, quindi ho pensato che potesse esservi di aiuto questo codice, testato, che serve per inviare le richieste di recensioni.

Lo script scatta quando un ordine è stato creato e si attiva nella pagina di ringraziamento che vede il cliente, ovvero /order-received/

La prima cosa da fare è andare sul sito di trustpilot e prendere il primo codice da inserire con la key giusta.

Ho incluso già io il codice per la header, ma voi dovete solo mettere la KEY giusta, nella funzione mm_add_trustpilot_script_head

Questo file va inserito nel vostro tema o plugin e va richiamato dal vostro file functions.php

<?php
/**
 * @package mm
 */

// Se questo file viene chiamato direttamente, abortire.
if ( ! defined( 'WPINC' ) ) {
    die;
}

function mm_add_trustpilot_script_head() {
    if (is_wc_endpoint_url('order-received')) {
        ?>
        <script>
            (function(w,d,s,r,n){w.TrustpilotObject=n;w[n]=w[n]||function(){(w[n].q=w[n].q||[]).push(arguments)};
                a=d.createElement(s);a.async=1;a.src=r;a.type='text/java'+s;f=d.getElementsByTagName(s)[0];
                f.parentNode.insertBefore(a,f)})(window,document,'script', 'https://invitejs.trustpilot.com/tp.min.js', 'tp');
                tp('register', 'LA_TUA_KEY_QUI');
        </script>
        <?php
    }
}
add_action('wp_head', 'mm_add_trustpilot_script_head', 99);


function mm_add_trustpilot_invitation_script() {
    if (!is_wc_endpoint_url('order-received')) {
        return;
    }

    if (!isset($_GET['key'])) {
        return;
    }

    $order_id = wc_get_order_id_by_order_key(sanitize_text_field($_GET['key']));
    $order = wc_get_order($order_id);

    if (!$order) {
        return;
    }

    $customer_email = $order->get_billing_email();
    $customer_name = $order->get_billing_first_name();
    $reference_id = $order->get_order_number();
    
    $products_data = [];
    $product_skus = [];

    foreach ($order->get_items() as $item) {
        $product = $item->get_product();
        if (!$product) {
            continue;
        }

        $sku = $product->get_sku();
        $product_skus[] = $sku;
        
        $products_data[] = [
            "sku" => $sku,
            "productUrl" => get_permalink($product->get_id()),
            "imageUrl" => wp_get_attachment_url($product->get_image_id()),
            "name" => $product->get_name()
        ];
    }

    ?>
    <script>
        function sendTpInvitation() {
            var trustpilot_invitation = {
                recipientEmail: "<?php echo esc_js($customer_email); ?>",
                recipientName: "<?php echo esc_js($customer_name); ?>",
                referenceId: "<?php echo esc_js($reference_id); ?>",
                source: "InvitationScript",
                productSkus: <?php echo json_encode($product_skus); ?>,
                products: <?php echo json_encode($products_data); ?>
            };

            tp("createInvitation", trustpilot_invitation);
        }

        if (typeof tp !== "undefined") {
            sendTpInvitation();
        } else {
            document.addEventListener("DOMContentLoaded", function () {
                sendTpInvitation();
            });
        }
    </script>
    <?php
}
add_action('wp_footer', 'mm_add_trustpilot_invitation_script');

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *