Искаш ли, когато даден потребител е влязъл в своя профил, той да може да вижда списък на всички закупени от него продукти, например в раздел „Моят профил“?
Тогава си попаднал на правилното място, защото тук, ще ти покажем, как може да направиш точно това. Наслади се!
За да постигнеш това, което описахме по-горе, и което видиждаш на изображението, всичко, което трябва да направиш е да копираш кода по-долу във functions.php на своята тема или child тема.
/** * @snippet Display All Products Purchased by User via Shortcode - WooCommerce * @author Smarty Studio * @autor_url https://smartystudio.net * @compatible Woo 3.5.7 */ add_shortcode( 'my_products', 'ss_user_products_bought' ); function ss_user_products_bought() { global $product, $woocommerce, $woocommerce_loop; $columns = 3; // GET USER $current_user = wp_get_current_user(); // 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 ) return; $product_ids = array(); foreach ( $customer_orders as $customer_order ) { $order = wc_get_order( $customer_order->ID ); $items = $order->get_items(); foreach ( $items as $item ) { $product_id = $item->get_product_id(); $product_ids[] = $product_id; } } $product_ids = array_unique( $product_ids ); // QUERY PRODUCTS $args = array( 'post_type' => 'product', 'post__in' => $product_ids, ); $loop = new WP_Query( $args ); // GENERATE WC LOOP ob_start(); woocommerce_product_loop_start(); while ( $loop->have_posts() ) : $loop->the_post(); wc_get_template_part( 'content', 'product' ); endwhile; woocommerce_product_loop_end(); woocommerce_reset_loop(); wp_reset_postdata(); // RETURN CONTENT return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>'; }
Но какво прави този код? Много е просто. Взимаме всички поръчки на даден потребител, преминаваме през тях, като след това взимаме продуктите, вътре в тези поръчки и ги показваме.
За още по-голямо твое улеснение, направихме и shortcode, който да добавиш в страницата, която показва профила на потребителя. Не забравяй, че този shortcode ще работи само когато потребителят е влязъл в своя профил, така че например страницата „Моят профил“ би била идеална за целта.
[my_products]
Това е! Вече потребителите на твоят WooCommerce онлайн магазин, ще могат да виждат поръчаните от тях продукти в своя профил. Наслади се!