当前位置: 首页 > 知识库问答 >
问题:

如何在Woocommerce中的单独页面上显示特定产品(id)的订单详细信息(我的帐户)?

许高峻
2023-03-14

我想在单独的页面上显示在woocommerce我的帐户最近订单中找到的特定产品id的订单表。更准确地说,如果订单中的产品id为X,则显示当前用户的所有最近订单。

我试图使用这些参考:

Woocommerce-如何在单独页面上显示订单详细信息(我的帐户)

从Woocommerce中的产品ID获取所有订单ID

WooCommerce:获取产品的所有订单

但是我无法将$product\u id$user\u id=get\u current\u user\u id()关联起来以便当前用户针对特定产品id的所有订单都可以显示在单独的页面上。

编辑:添加代码。我尝试了这个代码,但它不工作。

function orders_from_product_id( $product_id ) {

        $order_statuses = array('wc-on-hold', 'wc-processing', 'wc-completed');

        $customer_user_id = get_current_user_id(); // current user ID here for example

        $customer_orders = wc_get_orders( array(
            'meta_key' => '_customer_user',
            'meta_value' => $customer_user_id,
            'post_status' => $order_statuses,
            'numberposts' => -1
        ) );

        foreach($customer_orders as $order ){

            $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;

            foreach($order->get_items() as $item_id => $item){

                $product_id = method_exists( $item, 'get_product_id' ) ? $item->get_product_id() : $item['product_id'];

                    if ( $product_id == 326 ) {
                        ob_start();
                    wc_get_template( 'myaccount/my-orders.php', array(
                        'current_user'  => get_user_by( 'id', $user_id),
                        'order_count'   => $order_count
                     ) );
                    return ob_get_clean();
                    } else {
                    echo '<p> You donot have any orders.</p>';
                    }
            } 
        }
}

add_shortcode('woocommerce_orders', 'orders_from_product_id');

共有1个答案

华知
2023-03-14

通过此代码,您可以获取用户购买的产品的当前用户产品id。

// GET CURR USER
$current_user = wp_get_current_user();
if ( 0 == $current_user->ID ) return;

// 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 );
 类似资料:
  • 我使用以下代码在WooCommerce管理订单详细信息页面的订单项表中显示自定义产品元: 它显示“前缀tempiconsegna”,这是自定义图元,如: 可在3天内提供 我的问题是,如果我改变了产品的可用性,它也改变了以前的订单。 当我更新产品的可用性时,如何在不改变的情况下显示订单时的值?

  • 我正在搜索和尝试它2天没有成功,请帮助。 我想筛选woocommerce订单,以便根据产品属性将其他详细信息从db添加到订单详细信息页面,但我找不到适合此任务的woocommerce操作/筛选器挂钩。这里假设变量; 如果,那么我需要将自定义数据从数据库添加到订单详细信息页面。 注意:我不想添加额外的元框,而是想更改订单明细表: 将默认产品映像替换为存储在数据库和中的映像, 在产品名称下面添加包含自

  • 对于Woocommerce分组产品,我使用以下代码在购物车和结帐页面中显示父产品名称: 代码来源于此:将父产品名称添加到WooCommerce中的每个购物车项目名称中 现在,我想在订单详细信息和后端也显示此父产品名称。 我将感谢任何对此的帮助。

  • 除了“再次订购”按钮外,是否有一个钩子/过滤器来添加另一个按钮?我想把这个加入我的帐户

  • 上次WooCommerce更新后,订单详细信息不再显示在感谢页面上。从那时起,我使用WooCommerce Storefront主题开发了一个儿童主题。不管我做了什么,我看到的只是感谢页面上的“谢谢”信息。 到目前为止我所尝试的: > 对整个进程进行故障排除,以查找任何可能出错的问题。这包括以下内容: 检查了调用order-details模板和it相关操作挂钩的wc模板函数(均存在) 确保我的Ch