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.