【问题标题】:Add custom checkbox to woocommerce_checkout_order_review将自定义复选框添加到 woocommerce_checkout_order_review
【发布时间】:2017-10-15 16:26:12
【问题描述】:

我整天都在挠头。我想在下订单之前在订单审核中添加一个自定义复选框。这是我的代码:

add_action( 'woocommerce_checkout_order_review', 'my_checkbox' );

function my_checkbox( $checkout ) {
    echo '<div class="my_split_checkbox"><h2>' . __('Split Order', 'woocommerce') . '</h2>';

    woocommerce_form_field( 'my_split_checkbox', array(
        'type'     => 'checkbox',
        'class'    => array('checkbox_field'),
        'label'    => __('Split Order', 'woocommerce'),
        'required' => false,
    ), $checkout->get_value( 'my_split_checkbox' ));

    echo '</div>';
}

但页面没有完全加载。但是,如果我用

替换钩子
add_action( 'woocommerce_after_checkout_billing_form', 'my_checkbox' );

然后复选框显示在结算详细信息的末尾,没有问题。如何让文本框显示在结帐订单审查中?理想情况下,在表 .woocommerce-checkout-review-order-table 之后。

【问题讨论】:

    标签: wordpress checkbox woocommerce checkout


    【解决方案1】:

    您应该使用下面的任何钩子而不是 woocommerce_checkout_order_review 来根据您的优先级显示复选框字段-

    woocommerce_review_order_after_cart_contents
    woocommerce_review_order_before_shipping
    woocommerce_review_order_after_shipping
    woocommerce_review_order_before_order_total
    woocommerce_review_order_after_order_total
    

    欲了解更多信息,请访问woocommerce/templates/checkout/review-order.php。如果您已经将templates 文件夹作为woocommerce 复制到您的主题目录,那么您可能会在那里找到review-order.php。您还需要删除$checkout 变量以及, $checkout-&gt;get_value( 'my_split_checkbox' )。因为这些钩子没有传递任何参数。请查看review-order.php,您将获得概览。

    所以你的整个代码将如下所示-

    add_action( 'woocommerce_checkout_order_review', 'my_checkbox' );
    
    function my_checkbox() {
        echo '<div class="my_split_checkbox"><h2>' . __('Split Order', 'woocommerce') . '</h2>';
    
        woocommerce_form_field( 'my_split_checkbox', array(
            'type'     => 'checkbox',
            'class'    => array('checkbox_field'),
            'label'    => __('Split Order', 'woocommerce'),
            'required' => false,
        ));
    
        echo '</div>';
    }
    

    希望对您有所帮助。

    【讨论】:

    • 您好,感谢您的快速回复。我已经尝试了你提到的所有钩子,但是一旦它们到达woocommerce_form_field,它们都会停止加载页面的其余部分。我在functions.php中拥有所有功能
    • 通过在您的wp-config.php 处执行define('WP_DEBUG', true); 来打开您的WordPress 调试模式并在此处给出错误。
    • 我得到致命错误:调用字符串上的成员函数 get_value(),这会导致 ), $checkout-&gt;get_value( 'my_split_checkbox' )); 为什么变量 $checkout 会成为问题?
    • 请查看更新后的答案。如果答案对您有帮助,请通过检查答案左侧的复选标志来接受答案。 @亚历克斯
    • 如果答案对您有帮助,请通过检查答案左侧的复选标志来接受答案。 @亚历克斯
    猜你喜欢
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 2020-10-17
    相关资源
    最近更新 更多