gpt4 book ai didi

php - 更改订单项自定义元数据在 WooCommerce 管理员订单中显示的标签和值

转载 作者:行者123 更新时间:2023-12-05 04:54:02 31 4
gpt4 key购买 nike

在 Woocommerce 管理屏幕中,我尝试使用订单行元数据显示一个按钮,该按钮将打开一个新窗口,其中包含直销供应商的 URL。我已成功从订单产品中提取供应商 URL 并将其推送到订单行项目。

我能够将元数据更改为按钮,但结果是其他包含自定义选项的自定义字段被删除。

这是我添加到functions.php 文件中的完整代码

add_action( 'woocommerce_checkout_create_order_line_item', 'custom_checkout_create_order_line_item', 20, 4 );
function custom_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
// Get a product custom field value
$custom_field_value = get_post_meta( $item->get_product_id(), 'supplier_url', true );
// Update order item meta
if ( ! empty( $custom_field_value ) ){
$item->update_meta_data( '_supplier', $custom_field_value );
}
}

add_filter('woocommerce_order_item_display_meta_key', 'filter_wc_order_item_display_meta_key', 20, 3 );
function filter_wc_order_item_display_meta_key( $display_key, $meta, $item ) {

// Change display_key
if( $meta->key === '_supplier' && is_admin() )
$display_key = __("Supplier", "woocommerce" );

return $display_key;
}

add_filter( 'woocommerce_order_item_display_meta_value', 'change_order_item_meta_value', 20, 3 );
function change_order_item_meta_value( $value, $meta, $item ) {

// Display supplier meta value as a button
if( $meta->key === '_supplier' && is_admin() ) {
$display_value = __('<a class="button" target="_blank" href="'.$value.'">Order</a>', 'woocommerce' );

return $display_value;
}
}

这些图像显示了使用最后一个代码块之前和之后的情况。

之前:

Before

之后:

After

我的代码哪里出了问题,我正在努力实现的目标是否可行?

最佳答案

主要错误在于最后一个函数,其中 $display_value 应该替换为 $value 然后 return $value; 应该位于在最后一个右括号之前的末尾。

我还重新访问了您的所有代码:

add_action( 'woocommerce_checkout_create_order_line_item', 'custom_checkout_create_order_line_item', 20, 4 );
function custom_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
$supplier_url = $values['data']->get_meta( 'supplier_url' ); // Get product custom field value

// add product custom field as custom order item meta data
if ( ! empty($supplier_url) ){
$item->update_meta_data( '_supplier', $supplier_url );
}
}

add_filter('woocommerce_order_item_display_meta_key', 'filter_wc_order_item_display_meta_key', 20, 3 );
function filter_wc_order_item_display_meta_key( $display_key, $meta, $item ) {

// Change displayed label for specific order item meta key
if( is_admin() && $item->get_type() === 'line_item' && $meta->key === '_supplier' ) {
$display_key = __("Supplier", "woocommerce" );
}
return $display_key;
}

add_filter( 'woocommerce_order_item_display_meta_value', 'change_order_item_meta_value', 20, 3 );
function change_order_item_meta_value( $value, $meta, $item ) {

// Change displayed value for specific order item meta key
if( is_admin() && $item->get_type() === 'line_item' && $meta->key === '_supplier' ) {
$value = __('<a class="button" target="_blank" href="'.$value.'">Order</a>', 'woocommerce' );
}
return $value;
}

代码进入事件子主题(或事件主题)的 functions.php 文件。经过测试并有效。

关于php - 更改订单项自定义元数据在 WooCommerce 管理员订单中显示的标签和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65892137/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com