【问题标题】:Woocommerce prevent custom form field being looged with order [closed]Woocommerce 防止自定义表单字段被订单搜索[关闭]
【发布时间】:2020-09-30 12:58:19
【问题描述】:

我在 woocommerce 结帐页面中添加了一些自定义结帐字段。

其中一个仅用于在页面上提供检查,下订单时不需要与订单一起记录。

我会使用什么钩子来防止该字段被添加到后端订单编辑页面中的 address_flexible_checkout_fields 值?

非常感谢

【问题讨论】:

    标签: wordpress woocommerce checkout


    【解决方案1】:

    只是在视觉上添加一个字段(并且可能对其进行处理),但从不实际保存数据。基本上就是本教程,省略了保存步骤:https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/#section-7

    使用woocommerce_after_order_notes 钩子在结帐末尾添加一个字段:

    /**
     * Add the field to the checkout
     */
    add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' );
    
    function my_custom_checkout_field( $checkout ) {
    
        echo '<div id="my_custom_checkout_field"><h2>' . __('My Field') . '</h2>';
    
        woocommerce_form_field( 'my_field_name', array(
            'type'          => 'text',
            'class'         => array('my-field-class form-row-wide'),
            'label'         => __('Fill in this field'),
            'placeholder'   => __('Enter something'),
            ), $checkout->get_value( 'my_field_name' ));
    
        echo '</div>';
    
    }
    

    如果该字段是必需的,您可以对其进行处理,如果留空则抛出错误消息:

    /**
     * Process the checkout
     */
    add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');
    
    function my_custom_checkout_field_process() {
        // Check if set, if its not set add an error.
        if ( ! $_POST['my_field_name'] )
            wc_add_notice( __( 'Please enter something into this new shiny field.' ), 'error' );
    }
    

    【讨论】:

    • 如果此答案对您有用,请将其标记为已接受并可能投票。
    • 非常感谢 - 我已经准备好表单字段,它会随订单一起发送,但我需要阻止它这样做。我认为问题在于它是通过 Woocommerce Checkout Fields 管理员添加的,该管理员似乎将所有其他字段集中在一起(我需要发送的 3 个字段中的 2 个)。看来我将不得不尝试使用此处的流程添加这个,因此将尝试检查它是否有效
    猜你喜欢
    • 1970-01-01
    • 2016-07-28
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多