将自定义复选框添加到woocommerce_checkout_order_review

时间:2017-05-16 14:15:52

标签: wordpress checkbox woocommerce checkout

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

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' );

然后chekbox在结算明细结束时显示没有问题。如何在结帐订单审核中显示文本框?理想情况下,在表.woocommerce-checkout-review-order-table。

之后

1 个答案:

答案 0 :(得分:2)

您应该使用以下任何一个钩子而不是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->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>';
}

希望有所帮助。