WOOT - WooCommerce Active Products Tables

Permettre aux clients d'afficher la liste de leurs produits commandés

Cet article concerne l'affichage de produits selon une sélection personnalisée.

WOOT est un plugin flexible : lorsqu'un besoin n'est pas couvert d'emblée, il est possible de le résoudre avec le hook 'woot_filter_provider_'. Cet article décrit le cas suivant : "permettre aux clients de commander en leur montrant la liste de leurs produits déjà commandés, triés par popularité (nombre de fois où ce client les a commandés)".

  • ouvrez le fichier functions.php du thème WordPress actif (il vaut mieux utiliser un thème enfant)
  • placez-y le code suivant :
    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);
  • sur la page ou à l'endroit où vous souhaitez afficher les produits achetés par l'utilisateur actuel, utilisez le shortcode suivant : [woot filter_provider="ordered_by_customer" order_by='popularity'] - où filter provider est une chaîne arbitraire qui fait partie du nom du hook personnalisé 'woot_filter_provider_ordered_by_customer'

 

Avec une telle logique, l'administrateur du site peut créer des fonctionnalités sur mesure, par exemple une page spéciale où consulter les produits de n'importe quel utilisateur à partir de son ID.