在WooCommerce客户订单详细信息页面中添加和保存文本字段 [英] Add and save a text field in WooCommerce customer order detail pages

查看:42
本文介绍了在WooCommerce客户订单详细信息页面中添加和保存文本字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经能够在woocommerce的订单详细信息页面中添加一个自定义文本输入字段,但是我无法保存提交的数据.

I have been able to add a custom text input field, in woocommerce's order details page, but I can't save the data submitted data.

这是代码:

add_action( 'woocommerce_order_details_before_order_table', 'add_custom_Field',10,2 );
function add_custom_Field( $order_id) {
    $user = wp_get_current_user();
    $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;
    ?>
<form method="post">
     <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
        <label for="custom_URL"><?php _e( 'URL', 'woocommerce' ); ?></label>
        <input type="text" name="custom_URL" id="custom_URL" value="<?php echo esc_attr( $order_id->custom_URL ); ?>" />
    </p>
        <input type="submit" name="test" id="test" value="RUN" /><br/>
</form>
<?php

function submit()
{
    update_user_meta( $user_id, 'custom_URL', sanitize_text_field( $_POST['custom_URL'] ) );
    echo "Your function on button click is working";
}

   if(array_key_exists('test',$_POST)){
       submit();
    }
}   

你知道我在做什么错吗?

Do you know what I'm doing wrong?

推荐答案

以下内容可让您将用户自定义字段添加到客户订单明细中,并保存其提交时的值:

The following will allow you to add a user custom field to customer order detail and to save its value on submission:

// Display user custom field
add_action( 'woocommerce_order_details_before_order_table', 'add_user_custom_url_field_to_order' );
function add_user_custom_url_field_to_order( $order ) {
    global $current_user;

    $custom_url = get_user_meta( $current_user->ID, 'custom_URL', true );
    ?>
    <form method="post">
         <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
            <label for="custom_URL"><?php _e( 'URL', 'woocommerce' ); ?></label>
            <input type="text" name="custom_URL" id="custom_URL" value="<?php echo $custom_url; ?>" />
        </p>
        <input type="submit" name="submit-custom_URL" value="<?php _e('RUN', 'woocommerce'); ?>" /><br/>
    </form>
    <?php
}

// Save the field as custom user data
add_action( 'template_redirect', 'save_user_custom_url_field_from_order' );
function save_user_custom_url_field_from_order() {
    global $current_user;

    if( isset($_POST['custom_URL']) ){
        update_user_meta( $current_user->ID, 'custom_URL', sanitize_url( $_POST['custom_URL'] ) );
        wc_add_notice( __("Submitted data has been saved", "woocommerce") );
    }
}

代码进入您的活动子主题(或活动主题)的functions.php文件中.经过测试,可以正常工作.

Code goes in functions.php file of your active child theme (or active theme). Tested and works.

基于您的评论的注释:

如果每个订单的自定义网址必须不同,则不能将其保存为用户元数据,而应另存为$ order项目元数据...但是代码会稍有不同,您需要定义您的自定义网址将如何.

If the custom url has to be different for each order, you can't save it as user meta data, but instead as $order item meta data... But the code will be slightly different and you will need to define how will be your custom urls.

这篇关于在WooCommerce客户订单详细信息页面中添加和保存文本字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆