在 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 文件中。已测试并有效。