在 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;
}
}
这些图像显示了使用最后一个代码块之前和之后的情况。
之前:
之后:
我的代码哪里出了问题,我正在努力实现什么?
答案 0 :(得分:1)
主要错误在于最后一个函数,其中 Md5Utils.md5AsBase64(inputStream)
应该只替换为 $display_value
,然后 $value
应该位于最后一个右括号之前的末尾。
我还重温了您的所有代码:
return $value;
代码位于活动子主题(或活动主题)的functions.php 文件中。经测试有效。