获取自定义分类值并将其设置为Woocommerce

时间:2018-03-09 01:10:10

标签: php wordpress woocommerce custom-taxonomy orders

我的产品带有一个名为“卖家”的自定义分类,用于存储卖家ID。

我的问题:
购买产品时,如何在后端获得继续订购的价值?

这是我到目前为止所得到的:

add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_seller_meta' );
function my_custom_seller_meta( $order_id ) {

    $order = wc_get_order( $order_id );
    $prod_id_for_seller_id = $order->get_items();
    $prod_id = $prod_id_for_seller_id['484']['product_id']);

    $seller_id = wp_get_post_terms( $prod_id, 'soldby' );

    update_post_meta( $order_id, '_seller_id_order', $seller_id );
}

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

由于订单可以包含许多不同的商品,我不确定这是一个很好的解决方案。无论如何,代码中存在一些错误。

如果您的自定义分类是"卖家",您为什么要使用" soldby"在wp_get_post_terms()函数中。 wp_get_post_terms()功能会为'卖家'提供数组 帖子条款自定义分类 ...

请改为尝试:

add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_seller_meta', 30, 1 );
function my_custom_seller_meta( $order_id ) {
    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id );

    $order_items = $order->get_items(); // Get order items
    $item = current( $order_items ); // Get the first item

    // Get custom taxonomy 'seller' array of WP_Term objects
    $terms = wp_get_post_terms( $item->get_product_id(), 'seller' );
    $wp_term = reset($terms); // Get the first WP_Term
    $term_id   = $wp_term->term_id;
    $term_slug = $wp_term->slug;
    $term_name = $wp_term->name;

    update_post_meta( $order_id, '_seller_id_order', $term_slug );
}

代码进入活动子主题(或活动主题)的function.php文件。

应该有效