【发布时间】:2018-05-26 11:37:31
【问题描述】:
我需要在 Woocommerce 后端订单中更改商品价格。我尝试使用以下钩子,但尝试获取 订单 ID 时遇到问题。有什么建议吗?提前致谢!
function my_custom_prices ($price, $product)
{
if ( !is_admin() || ( is_admin() && is_post_type_archive() ) ) return $price;
global $post, $woocommerce;
$order = new WC_Order( $post_id );
$user_id = $order->user_id;
$user = get_user_by('id', $user_id);
if ( in_array( 'my_role', (array) $user->roles ) ) {
return $price * 2;
}
else {
return $price;
}
}
add_filter('woocommerce_get_price', 'my_custom_prices ', 10, 2);
完整的问题:
完整的问题如下。我正在使用一个插件,它为产品添加了一个名为批发价的字段。如果客户具有批发客户角色,则订单将使用这些价格。该插件工作正常,但它不会在后端收取价格。我和作者谈过,这是他们不打算改变的东西。我的客户需要修改订单。但是当它进入后端时,它采取的是普通价格,而不是批发商。我需要在后端做一些事情来检测订单是否来自具有批发客户角色的客户。如果是,请在添加产品时采用正确的价格。这里有更多关于与作者讨论的信息。 https://wordpress.org/support/topic/wholesale-prices-in-backend-editing-orders/非常感谢您能给我的帮助。
选项:
woocommerce_get_price:不起作用,因为我无法获取客户 ID
woocommerce_ajax_add_order_item_meta:不错的选择,但我找不到示例
按钮:不错的选择,但我不知道如何更改价格。我尝试了以下方法:
add_action( 'woocommerce_order_item_add_action_buttons', 'action_aplicar_mayoristas', 10, 1);
function action_aplicar_mayoristas( $order )
{
echo '<button type="button" onclick="document.post.submit();" class="button button-primary generate-items">Aplicar precios mayoristas</button>';
echo '<input type="hidden" value="1" name="aplicar_mayoristas" />';
};
add_action('save_post', 'aplicar_mayoristas', 10, 3);
function aplicar_mayoristas($post_id, $post, $update){
$slug = 'shop_order';
if(is_admin()){
if ( $slug != $post->post_type ) {
return;
}
if(isset($_POST['aplicar_mayoristas']) && $_POST['aplicar_mayoristas']){
$order = wc_get_order( $post_id);
//$order_id = $order->get_user_id();
// Iterating through each "line" items in the order
foreach ($order->get_items() as $item_id => $item_data) {
//$item_data->set_subtotal("798");
$item_data->set_price("798");
//->set_price($custom_price);
}
}
}
}
【问题讨论】:
标签: php wordpress woocommerce hook-woocommerce orders