【问题标题】:Add a checkout hidden field with a random unique string value in woocommerce在 woocommerce 中添加具有随机唯一字符串值的结帐隐藏字段
【发布时间】:2018-04-29 12:10:32
【问题描述】:

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

这可能吗?

【问题讨论】:

    标签: php wordpress woocommerce checkout hidden-field


    【解决方案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="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 文件中。经过测试并且可以工作。

    【讨论】:

    • 这太好了,非常感谢。我试着玩了一下,因为我需要将字符串设置为最大。 10 个字符长。
    • 另外,我希望生成的字符显示在后端订单详细信息页面的某个位置。这是怎么做的?对不起,我知道我一团糟。也许只是指出我正确的方向:)
    • @user1915410 首先,如果这个答案是回答您最初的问题,请don't forget to accept the answer,谢谢。在“显示在后端的订单详细信息页面的某处”之后,使用this answer code将元密钥替换为您的...
    • 再次感谢@LouicTheAztec - 我将答案标记为已接受。最后一件事:也许你可以告诉我如何修改代码以获得最大字符串。 10 个字符?
    • @user1915410 在你的代码中if( ! empty($_POST['custom_unique_key']) ){ 必须是if( ! empty($_POST['yudu']) ){
    猜你喜欢
    • 2017-07-25
    • 2018-03-25
    • 2018-07-05
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 2019-01-21
    相关资源
    最近更新 更多