在 woocommerce 中添加一个带有随机唯一字符串值的结帐隐藏字段
Add a checkout hidden field with a random unique string value in woocommerce
在 Woocommerce 中,我想在结帐页面中添加一个隐藏字段,该属性值将是自定义生成的唯一随机字符串。
这可能吗?
这很容易做到...试试下面的方法:
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 文件中。已测试并有效。
在 Woocommerce 中,我想在结帐页面中添加一个隐藏字段,该属性值将是自定义生成的唯一随机字符串。
这可能吗?
这很容易做到...试试下面的方法:
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 文件中。已测试并有效。