Я нахожусь на своем пути. Мне нужно отображать определенные продукты на страницах учетных записей клиентов на основе их подписки. Пример. Если клиент подписался на продукт № 517, но затем переключился на продукт № 5910, я хочу, чтобы их электронные письма и страница учетной записи отображали данные ($ menu_listing), связанные с # 5910.
В своих письмах я могу добиться этого с помощью $ order-> get_items ():
add_filter( 'woocommerce_email_order_meta', 'add_hgf_to_order'); function add_hgf_to_order( $order_id ) { global $posts; global $woocommerce; $order = new WC_Order( $order_id ); $user_id = (int)$order->user_id; $items = $order->get_items(); foreach ($items as $item) { if ( $item['product_id' ]== 517 || $item['product_id' ]== 5938 ) { $menu_listing = "menu_listing"; } elseif ( $item['product_id' ]== 5910 || $item['product_id' ]== 5915 ) { $menu_listing = "menu_listing_c"; } elseif ( $item['product_id' ]== 5934 || $item['product_id' ]== 5926 ) { $menu_listing = "menu_listing_a"; } } return $order_id; }
В то время как $ order-> get_items () работает правильно для функции woocommerce_email_order_meta, она не работает на странице «Моя учетная запись» клиента. Вместо этого мне удалось вызвать данные на страницу с помощью wc_customer_bought_product (), однако она не показывает самую последнюю покупку клиента:
add_filter( 'woocommerce_after_my_account', 'hgf_customer_orders' ); function hgf_customer_orders() { global $current_user; global $posts; global $woocommerce; $email = $current_user->email; if ( wc_customer_bought_product( $email, $current_user->ID, 517 ) || wc_customer_bought_product( $email, $current_user->ID, 5938) ) { $menu_listing = "menu_listing"; } elseif ( wc_customer_bought_product( $email, $current_user->ID, 5910 ) || wc_customer_bought_product( $email, $current_user->ID, 5915) ) { $menu_listing = "menu_listing_c"; } elseif ( wc_customer_bought_product( $email, $current_user->ID, 5934 ) || wc_customer_bought_product( $email, $current_user->ID, 5926) ) { $menu_listing = "menu_listing_a"; } else { return null; } }
Что он делает (используя пример вверху), отображает Продукт # 517 вместо # 5910. Поэтому я либо должен иметь возможность отображать самую последнюю покупку для wc_customer_bought_product (), либо получить функцию $ order-> get_items () для правильной работы на странице «Моя учетная запись» пользователя.
Любой, кто может помочь мне устранить эту проблему?