【发布时间】:2018-04-29 12:10:32
【问题描述】:
在 Woocommerce 中,我想在结帐页面中添加一个隐藏字段,该属性值将是自定义生成的唯一随机字符串。
这可能吗?
【问题讨论】:
标签: php wordpress woocommerce checkout hidden-field
在 Woocommerce 中,我想在结帐页面中添加一个隐藏字段,该属性值将是自定义生成的唯一随机字符串。
这可能吗?
【问题讨论】:
标签: php wordpress woocommerce checkout hidden-field
这很容易做到……试试以下方法:
add_action( 'woocommerce_before_order_notes', 'additional_hidden_checkout_field' );
function additional_hidden_checkout_field() {
// echo '<input type="hidden" name="custom_unique_key" value="'.md5( microtime() . rand() ).'">';
echo '<input type="hidden" name="yudu_pw" value="'.rand(102548, 984675).'">';
}
你会得到类似这样的生成 html 代码(就在订单备注字段之前):
<div class="woocommerce-additional-fields">
<input type="hidden" name="yudu_pw" value="837542">
然后您可以使用以下方法保存该自定义随机字符串值:
add_action( 'woocommerce_checkout_create_order', 'additional_hidden_checkout_field_save', 20, 2 );
function additional_hidden_checkout_field_save( $order, $data ) {
if( ! isset($_POST['yudu_pw']) ) return;
if( ! empty($_POST['yudu_pw']) ){
$order->update_meta_data( 'yudu_pw', sanitize_text_field( $_POST['yudu_pw'] ) );
}
}
所以这个自定义的随机字符串值将被保存为订单元数据……
所有代码都在您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。
【讨论】:
if( ! empty($_POST['custom_unique_key']) ){ 必须是if( ! empty($_POST['yudu']) ){