gpt4 book ai didi

php - 在 WooCommerce 客户订单详细信息页面中添加并保存文本字段

转载 作者:行者123 更新时间:2023-12-04 15:23:39 26 4
gpt4 key购买 nike

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

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();
}
}
你知道我做错了什么吗?

最佳答案

以下将允许您将用户自定义字段添加到客户订单详细信息并在提交时保存其值:

// 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 文件中。测试和工作。

根据您的评论注意:
如果每个订单的自定义 url 必须不同,则不能将其保存为用户元数据,而是将其保存为 $order 项目元数据...但代码会略有不同,您需要定义如何您的自定义网址。

关于php - 在 WooCommerce 客户订单详细信息页面中添加并保存文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62777322/

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