将用户自定义字段值添加到订单项详细信息

时间:2017-02-01 13:53:08

标签: php wordpress woocommerce custom-fields orders

与供应商(WC供应商)一起开发WooCommerce网上商店。

我需要显示我在供应商资料中创建的自定义字段。它应显示在 order-details.php 中的商品和供应商名称下。

如何按卖家/供应商ID显示个人资料字段?
有人可以帮帮我吗?

这是我将要撒谎的屏幕截图:

Order Details

个人资料自定义字段

向用户个人资料页面添加自定义字段

add_action( 'show_user_profile', 'wp_added_user_profile_fields' );

function wp_added_user_profile_fields( $user ) {

    ?>

    <table class="form-table">

        <tr>

            <th><label for="billing_enumber"><?php _e( "eNumber", 'woocommerce' ); ?></label></th>

            <td>
                <input type="text" 
                       name="billing_enumber" 
                       id="billing_enumber" 
                       class="regular-text"
                       value="<?php echo esc_attr( get_the_author_meta( 'billing_enumber', $user->ID ) ); ?>"/>

                <span class="description"><?php _e( 'Please enter your eNumber.', 'woocommerce' ); ?></span>
            </td>

        </tr>

    </table>

    <?php
}

将更新功能添加到用户个人资料上的自定义字段

add_action( 'edit_user_profile', 'wp_added_user_profile_fields' );

    function wp_save_added_user_profile_fields( $user_id ) {

        if ( current_user_can( 'edit_user', $user_id ) ) {

            update_user_meta( $user_id, 'billing_enumber', trim($_POST['billing_enumber'] ) );

            $saved = true;

        }

        return true;
    }

感谢。

1 个答案:

答案 0 :(得分:6)

您可以通过两个步骤以干净的方式完成此操作:

  

步骤1)您需要先在产品中添加一个属性,才能获得自定义字段值的可读标签,它将显示为订单项目元数据。

在您的情况下,您将创建“Billing E Number”属性:

enter image description here

然后,您将在目标产品中设置任意值(因为它将被您的自定义字段值替换),这些值可以是简单的或可变的。如果未使用此属性设置值,则在更新产品时不会设置和保存该值。

enter image description here

然后在保存和更新后你会有这个:

enter image description here

然后,通过 pa_ 开始woocommerce中的属性slu。因此,您的属性slug将是: pa_billing-e-number

我们将在下面的函数中使用它,以显示自定义字段值的可读标签。因此,您将获得订单商品: Billing E Number: (some value)

  

步骤2)您的自定义函数挂钩在woocommerce_add_order_item_meta动作挂钩

现在要在订单商品详细信息中显示自定义字段,您需要将提交的值保存为订单商品元数据,我们将在此处使用 pa_billing-e-Number 作为 { {1}}

所以代码就像是:

meta_key

此代码位于活动子主题(或主题)的function.php文件中或任何插件文件中。

然后在我的帐户的前端&gt;订单&gt;订单视图,你会得到这个:

enter image description here

  

正如您所看到的,您在woocommerce正常行为中得到了类似的东西。这里的值只是为了说明这个例子......

此示例已经过测试并且有效。