Comment compter les clics sur les produits externes de WooCommerce ?

Comment compter les clics sur les produits externes de WooCommerce ?

Oui, Google Analytics est cool, mais avez-vous déjà codé vos propres fonctions de suivi dans votre site WooCommerce ?

Un exemple pourrait être de compter le nombre de fois que les clients cliquent sur le bouton « Acheter le produit » qui s’affiche sur la page d’un produit externe, et d’afficher le compteur dans le tableau des produits dans le tableau de bord WooCommerce.

On peut s’en servir par exemple pour calculer le taux de clics (% de clics / vues) et déterminer la popularité d’un produit externe. Bien sûr, vous pourriez aussi décider d’étendre le compteur à tous les produits (simples, variables, etc.) et de compter le nombre de fois où les clients cliquent sur « Ajouter au panier », mais pour aujourd’hui, nous nous en tiendrons au comptage des produits externes.

Comptons le nombre de fois où les clients cliquent sur le bouton « Acheter le produit » d’un produit externe/affiliation sur la page d’un produit !
Avec l’extrait ci-dessous, j’ai réussi à ajouter une colonne « Clics » au tableau des produits, où le nombre de clics sur le bouton « Acheter le produit » du produit externe/affiliation est affiché !

Voici ce que nous allons apprendre dans ce tutoriel et avec le code PHP qui va suivre :

  • Tout d’abord, nous supprimons le bouton externe par défaut d’ajout au panier du produit. Nous allons ajouter le nôtre à la place.
  • Un peu de Javascript déclenche la fonction Ajax « increment_counter » au clic sur le bouton.
  • La fonction Ajax « increment_counter » compte et enregistre le nombre de clics.
  • Les fonctions « manage_edit-product_columns » et « manage_product_posts_custom_column » affichent une nouvelle colonne dans la page d’administration des produits, et y placent la valeur du compteur.
add_action( 'woocommerce_external_add_to_cart', 'wootimeo_new_external_add_to_cart', 1 );
 
function wootimeo_new_external_add_to_cart() {
   remove_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30 );
   add_action( 'woocommerce_external_add_to_cart', 'wootimeo_external_add_to_cart', 30 );
}
 
function wootimeo_external_add_to_cart() {
   global $product;
   if ( ! $product->add_to_cart_url() ) return;
   echo '<p><a href="' . $product->add_to_cart_url() . '" class="single_add_to_cart_button button alt countable" data-pid="' . $product->get_id() . '">' . $product->single_add_to_cart_text() . '</a></p>';
   wc_enqueue_js( "
      $('a.countable').click(function(e){
         e.preventDefault();
         $.post( '" . '/wp-admin/admin-ajax.php' . "', { action: 'increment_counter', pid: $(this).data('pid') } );
         window.open($(this).attr('href'));
      });
   " );
}
 
add_action( 'wp_ajax_increment_counter', 'wootimeo_increment_counter' );
add_action( 'wp_ajax_nopriv_increment_counter', 'wootimeo_increment_counter' );
 
function wootimeo_increment_counter() {
   $pid = $_POST['pid'];
   $clicks = get_post_meta( $pid, '_click_counter', true ) ? (int) get_post_meta( $pid, '_click_counter', true ) + 1 : 1;
   update_post_meta( $pid, '_click_counter', $clicks );
   wp_die();
}
 
add_filter( 'manage_edit-product_columns', 'wootimeo_admin_products_views_column', 9999 );
 
function wootimeo_admin_products_views_column( $columns ){
   $columns['clicks'] = 'Clics';
   return $columns;
}
 
add_action( 'manage_product_posts_custom_column', 'wootimeo_admin_products_views_column_content', 9999, 2 );
 
function wootimeo_admin_products_views_column_content( $column, $product_id ){
   if ( $column == 'clicks' ) {
      echo get_post_meta( $product_id, '_click_counter', true );
    }
}Langage du code : PHP (php)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *