WOOT - WooCommerce Active Products Tables

Permitir a los clientes ver una lista de los productos que ya han pedido

Trata de cómo mostrar productos con una selección personalizada.

WOOT es un plugin flexible, y si algo no se resuelve de forma directa, es posible hacerlo con el hook 'woot_filter_provider_'. Este artículo describe el caso: "permitir a los clientes volver a pedir mostrándoles una lista de los productos que ya han comprado, ordenada por popularidad (número de veces que ese cliente los ha pedido)".

  • abra el archivo functions.php del tema actual de WordPress (es mejor usar un tema hijo)
  • añada allí el siguiente código:
    add_filter('woot_filter_provider_ordered_by_customer', function($args, $filter_data, $shortcode_args_set) {
    
        if (is_user_logged_in()) {
            // GET CURRENT USER
            $current_user = wp_get_current_user();
            if (0 == $current_user->ID) {
                return $args;
            }
    
            // GET USER ORDERS (COMPLETED + PROCESSING)
            $customer_orders = get_posts(array(
                'numberposts' => -1,
                'meta_key' => '_customer_user',
                'meta_value' => $current_user->ID,
                'post_type' => wc_get_order_types(),
                'post_status' => array_keys(wc_get_is_paid_statuses()),
            ));
    
            // LOOP THROUGH ORDERS AND GET PRODUCT IDS
            if (!$customer_orders) {
                $args['post__in'] = [-1];
                return $args;
            }
    
            $product_ids = [];
    
            foreach ($customer_orders as $customer_order) {
                $order = wc_get_order($customer_order->ID);
                $items = $order->get_items();
                foreach ($items as $item) {
                    $product_ids[] = $item->get_product_id();
                }
            }
    
            $args['post__in'] = array_unique($product_ids);
        }
    
    
        return $args;
    }, 10, 3);
  • en la página o el lugar donde quiera mostrar los productos comprados por el usuario actual, use el siguiente shortcode: [woot filter_provider="ordered_by_customer" order_by='popularity'] - donde filter provider es una cadena arbitraria y forma parte del hook personalizado 'woot_filter_provider_ordered_by_customer'

 

Con esta lógica, el administrador del sitio puede crear funcionalidades especiales para sí mismo, por ejemplo una página especial donde ver los productos de cualquier usuario por su ID de usuario.