【问题标题】:Woocommerce Checkout Page CustomizationWoocommerce 结帐页面自定义
【发布时间】:2025-12-17 14:35:01
【问题描述】:

我正在开发一个使用 Woocommerce 构建的电子商务网站。
我想在账单表单(结帐页面)中添加一个额外的字段“交货日期”

这是页面截图:

我想在邮政编码旁边添加“交货日期”字段。

问题是我找不到此表单的位置。

我在 Woocommerce 文件夹中到处找,但找不到。

我的问题:
Woocommerce 在哪里找到帐单代码?
还有:我只需要复制和粘贴该字段吗?或者我还应该在数据库中为其添加一个字段吗?

我希望在仪表板和电子邮件中都显示交货日期。

【问题讨论】:

    标签: wordpress woocommerce checkout


    【解决方案1】:

    您需要应用过滤器以将 woocommerce 表单添加到结帐。这在第 2 课中进行了解释

    https://docs.woothemes.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/

    / Hook in
    add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
    
    // Our hooked in function - $fields is passed via the filter!
    function custom_override_checkout_fields( $fields ) {
         $fields['shipping']['shipping_phone'] = array(
            'label'     => __('Phone', 'woocommerce'),
        'placeholder'   => _x('Phone', 'placeholder', 'woocommerce'),
        'required'  => false,
        'class'     => array('form-row-wide'),
        'clear'     => true
         );
    
         return $fields;
    }

    【讨论】:

    • 这段代码在哪里?我的意思是我需要在哪个文件中进行更改?
    • 您应该将此代码添加到活动主题的functions.php文件中。
    【解决方案2】:
    /**
     * 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'         => __('Delivery Date'),
        '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' );
    

    }

    【讨论】:

      最近更新 更多