Función para WordPress para saber si un usuario ha comprado un producto

Con la siguiente función en php, sabremos si un usuario ha comprado un producto en la tienda online montada sobre WordPress + WooCommerce.

Para ello vamos a recibir dos parámetros, el identificador del usuario y el identificador del producto a evaluar si lo ha comprado y recibiremos un resultado true o false, en función de si ha comprado o no el producto respectivamente.

El snippet obtendrá inicialmente todos los pedidos que el usuario tiene en el estado procesando o finalizado (productos ya abonados) y posteriormente, recirrerá uno a uno, los productos incluidos en esos pedidos.

Veamos el código a continuación:

function GetProductoComprado($idproducto, $idusuario)
{
   $comprado = false;

   // Aquí asignamos los productos a evaluar en el array
   $prod_arr = array( $idproducto );

   // Obtenemos todos los pedidos del cliente que están en wc-processing o wc-completed
   $customer_orders = get_posts( array(
      ‘numberposts’ => -1,
      ‘meta_key’ => ‘_customer_user’,
      ‘meta_value’ => $idusuario,
      ‘post_type’ => ‘shop_order’, // WC orders post type
      ‘post_status’ => array( ‘wc-processing’, ‘wc-completed’ )
   ) );
   foreach ( $customer_orders as $customer_order ) {
      // Para mantener la compatibilidad con WooCommerce 3+
      $order_id = method_exists( $order, ‘get_id’ ) ? $order->get_id() : $order->id;
      $order = wc_get_order( $customer_order );

      // Buscamos en cada producto comprado por el cliente en el pedido
      foreach ($order->get_items() as $item) {
         // WC 3+ compatibility
         if ( version_compare( WC_VERSION, ‘3.0’, ‘<' ) )
            $product_id = $item[‘product_id’];
         else
            $product_id = $item->get_product_id();

       // Si el producto ha sido comprado, estará en el array
       if ( in_array( $product_id, $prod_arr ) )
          $comprado = true;
       }
   }
   // devolvemos «true» si alguno de los productos especificados ha sido comprado
   return $comprado;
}

En los contenidos relacionados os dejo un enlace a mi plugin para crear snippets favoritos, para no tener que editar el fichero functions.php del tema.

Quizá te interese...
Deja un comentario...
Suscribirme
Notificación de
guest
0 Comentarios
Comentarios en línea
Ver todos los comentarios