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

WebProgramacion > Recursos sobre informática y tecnología > Programacion > WordPress > Función para WordPress para saber si un usuario ha comprado un producto
Función para WordPress para saber si un usuario ha comprado un producto
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.

Podría interesarte...

Code Snippets: inserta fragmentos de código PHP
Plugin que te permitirá insertar fragmentos de código php para personalizar tu WordPress
Cómo modificar el texto "agotado" en WooCommerce
Si tienes una tienda online en WordPress, te enseño cómo puedes modificar fácilmente el texto que aparece en ...
Mantenimiento de WordPress: consultoría y gestión
Realizamos el mantenimiento y soporte de WordPress, gestionando y optimizando tu web, blog o tienda online para obtener ...

Deja tu opinión

la política de privacidad que declaro haber leído.

(*) Campos necesarios. El correo electrónico no será público.