在woocommerce中添加一个带有随机唯一字符串值的结帐隐藏字段

时间:2018-04-29 12:10:33

标签: php wordpress woocommerce checkout hidden-field

在Woocommerce中,我想在结帐页面添加一个隐藏字段,该属性值将是一个自定义生成的唯一随机字符串。

这可能吗?

1 个答案:

答案 0 :(得分:1)

这很容易做到...尝试以下方法:

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="_random_unique_key" 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文件中。经过测试和工作。