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

变更单项目自定义元数据在管理订单中显示标签和值

柯宜年
2023-03-14

在Woocommerce管理屏幕中,我试图使用订单行元数据显示一个按钮,该按钮将打开一个包含dropship供应商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;    
    }
}

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

之前:

之后:

我的代码哪里出了问题?我试图实现的目标是否可能?

共有1个答案

艾宏远
2023-03-14

主要错误是在最后一个函数中,其中$display_value应该替换为$value,然后返回$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活动子主题(或活动主题)的文件中。测试和工作。

 类似资料:
  • 以下仅在WooCommerce Admin single orders中显示产品自定义字段回答我的上一个问题,其中: 添加自定义SKU字段(ArticleID) 如何更改“管理单订单”页面的“订单行项目”部分上显示的元键标签? 现在它显示了“SKU”、“变体ID”(用于产品变体)和“\u articleid”。 我想用“文章ID”代替显示的“_articleid”。 有什么帮助吗?

  • 我有一个WooCommerce订单的自定义元数据,现在我想在结账后在感谢页面上显示它,但是,数据不可用。数据保存在管理员中,我似乎无法访问它。 但是当我转储时,我的元数据不存在。 我正在使用; 保存数据,但转储

  • 关于WooCommerce。我有我要添加到购物车的自定义数据。在functions.php文件中,我有以下功能。 这是可行的,自定义数据显示在购物车中。但是,定制数据不会显示在订单和订单电子邮件上。我在Stackoverflow上看到了一些解决这个问题的答案,但我无法让它们适用于我的情况。我提到的解决方案是。 在Woocommerce中保存和显示订单项自定义元数据 显示和保存添加的自定义购物车项目

  • 但这给了我添加列中的“未定义变量”错误。 如果我只将放入函数中,它将“rechnung beilegen”输出到my_column_id_2中的每一行。像这样: 因此,问题是:如何根据中的选择将输出转换为?

  • 使用以下代码,我可以在WooCommerce产品上获得一个自定义字段,但是如何在订单、结帐和管理订单(后端)上显示它呢? 这是我在每个产品上的自定义字段 这是我的管理订单(后端)详细信息。我尝试显示我在每个产品帖子中输入的正确元数据。 如何在管理订单中显示我在自定义字段中输入的值?我也希望有人能帮助我显示在订单和结帐页面的元。。。或者引导我走向正确的方向。我意识到,为了在管理订单中显示它,我必须确

  • 我有一个自定义插件,允许客户向订单中添加自定义信息。 项目被添加到购物车,自定义数据显示在购物车页面上。但是,自定义信息不会转移到后端的订单页面。理想情况下,我也希望将自定义数据添加到客户的订单电子邮件中。 目前的代码如下: 我试图修改我在网上找到的一段代码片段,并将其添加到上述代码中。但是,当我实现此功能时,购物车完全崩溃: 任何帮助都将不胜感激。我没有太多的编码经验,我正在努力找到一种方法来实