Comment afficher l’état des stocks pour les produits externes de WooCommerce ?

Par défaut, les produits externes / affiliation de WooCommerce n’ont pas de stock et ne l’affichent pas, car il s’agit de simples redirections vers une URL externe. Cela peut être regrettable, car avant de cliquer sur une URL externe et d’envoyer des gens loin de votre site web, vous voudrez peut-être vous assurer que l’article en question est en stock (afin d’augmenter la conversion en vente et de gagner une commission en retour, si c’est votre business model).

Comment gérer le stock d’un produit externe et afficher l’état du stock sur la page du produit, juste avant le bouton « Acheter le produit » ?

Je suis maintenant capable d’afficher l’état des stocks pour les produits externes/affiliés de WooCommerce également ! Il suffit de stocker l’état dans un champ personnalisé, et le snippet ci-dessous fera le reste.

Avant d’utiliser l’extrait ci-dessous, vous devez d’abord « définir » l’état des stocks du produit externe via un champ personnalisé que nous appellerons « extstock ». Je lui ai donné la valeur 1 (en stock) ou 0 (en rupture de stock). Vous pouvez bien sûr le renommer comme vous le souhaitez, redéfinir les valeurs, l’utiliser comme quantité en stock plutôt que comme état du stock, et même le « récupérer » à partir d’un autre champ personnalisé défini par un plugin :

Je suis sur la page d’un produit externe et je viens d’ajouter manuellement un nouveau champ personnalisé appelé « extstock » avec une valeur de 1. J’en aurai besoin dans le snippet ci-dessous pour connaître l’état du stock, afin de pouvoir l’afficher sur le front-office.
add_action( 'woocommerce_external_add_to_cart', 'wootimeo_external_product_stock', 29 );
 
function wootimeo_external_product_stock() {
   global $product;
   $stock_status = get_post_meta( $product->get_id(), 'extstock', true );
   if ( ! $stock_status ) return;
   if ( $stock_status == 1 ) {
      $availability = __( 'In stock', 'woocommerce' );
      $class = 'in-stock';
   } else {
      $availability = __( 'Out of stock', 'woocommerce' );
      $class = 'out-of-stock';
   }
   wc_get_template(
      'single-product/stock.php',
      array(
         'product'      => $product,
         'class'        => $class,
         'availability' => $availability,
      )
   );
}Langage du code : PHP (php)

Laisser un commentaire

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