WooCommerce自定义结帐页面重定向到空购物车,未处理订单

时间:2019-02-21 21:51:31

标签: wordpress woocommerce genesis

仅供参考,这是针对创世纪主题的。我正在制作一个自定义页面模板,该模板最终将供白色标签使用,并将附加到至少2个不同的页面上。

模板的目的是在页面的其他内容下方附加一页WooCommerce优惠券/结帐表格。用户将到达页面,并在到达时以编程方式将1种特定产品添加到购物车。

默认的结帐页面将继续使用,因此它们将是额外的结帐页面。

在页面模板上,我已使用WC()->cart->add_to_cart将商品添加到购物车。我还从form-coupon.php复制了优惠券表格,并对其进行了一些较小的格式更改。我还从form-checkout.php复制了结帐表单,并通过将表单上的action属性从wc_get_checkout_url()更改为自定义页面(在我的本地服务器上)的硬编码url,对其进行了一些修改。进行故障排除(实际上我不确定该值是多少,因为这不是默认的检出页面,并且因为它将是在不同页面上使用的页面模板)。我还添加了$checkout = WC()->checkout,以便get_checkout_fields()可以正常工作。

结果是一个页面,其外观和功能与我期望的一样-优惠券表单首先显示并且有效,然后显示结帐字段,然后显示订单详细信息-包括购物车中的商品和所应用的优惠券

问题是,当您单击提交时,您将重定向到购物车页面,并且显示一条消息,指出购物车为空。同样,不会创建/提交订单。我认为这与不在默认结帐页面上的页面有关,或者我在手动创建的过程中缺少一个步骤,但是我不确定如何解决它。我已经阅读过针对具有类似问题的人员的其他回复,但是我的不同之处在于这是一个自定义模板/结帐页面,而不是整个商店将使用的页面。

我的模板已挂接到genesis_entry_content中(在循环内部)。我还在钩入genesis_after_content(在循环外部)中尝试过,但是没有区别。模板正在执行的其他一些操作是删除条目标题,更改按钮上的提交文本以及删除不需要的结帐字段。这是目前的模板...如果有人可以帮助我解决此问题,我将不胜感激!谢谢!

<?php
/**
 * Template Name: group_checkout2
 *
 * @author  Lori Moore
 * white label one page custom checkout - add item to cart automatically then checkout

*/
?>


<?php

remove_action( 'genesis_entry_header', 'genesis_do_post_title' );

function order_button_text() {
    return __( 'Submit', 'woocommerce' ); 
}
add_filter( 'woocommerce_order_button_text', 'order_button_text' ); 

function custom_checkout_fields( $fields ) {
    unset($fields['billing']['billing_company']);
    unset($fields['billing']['billing_country']);
    unset($fields['billing']['billing_address_1']);
    unset($fields['billing']['billing_address_2']);
    unset($fields['billing']['billing_city']);
    unset($fields['billing']['billing_state']);
    unset($fields['billing']['billing_phone']);
    return $fields;
}
add_filter( 'woocommerce_checkout_fields' , 'custom_checkout_fields' );


function group_access() {

?>

<h3>Let's Get Started!</h3>

<?php

if (sizeof( WC()->cart->get_cart() ) == 0 ) :
WC()->cart->add_to_cart( 6588, 1 );
endif;

?>

<form class="checkout_coupon woocommerce-form-coupon" method="post">

    <p class="form-row form-row-first">
        <input type="text" name="coupon_code" class="input-text" placeholder="<?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?>" id="coupon_code" value="" />
    </p>

    <p class="form-row form-row-last">
        <button type="submit" class="button" name="apply_coupon" value="<?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?>"><?php esc_html_e( 'Apply coupon', 'woocommerce' ); ?></button>
    </p>

    <div class="clear"></div>
</form> 

<form name="checkout" method="post" class="checkout woocommerce-checkout" action="http://onpurpose/group-access/" enctype="multipart/form-data">

    <?php   $checkout = WC()->checkout; 
        if ( $checkout->get_checkout_fields() ) : ?>

        <?php do_action( 'woocommerce_checkout_before_customer_details' ); ?>

        <div class="col2-set" id="customer_details">
            <div class="col-1">
                <?php do_action( 'woocommerce_checkout_billing' ); ?>
            </div>

            <div class="col-2">
                <?php do_action( 'woocommerce_checkout_shipping' ); ?>
            </div>
        </div>

        <?php do_action( 'woocommerce_checkout_after_customer_details' ); ?>

    <?php endif; ?>

    <h3 id="order_review_heading"><?php esc_html_e( 'Your order', 'woocommerce' ); ?></h3>

    <?php do_action( 'woocommerce_checkout_before_order_review' ); ?>

    <div id="order_review" class="woocommerce-checkout-review-order">
        <?php do_action( 'woocommerce_checkout_order_review' ); ?>
    </div>

    <?php do_action( 'woocommerce_checkout_after_order_review' ); ?>

</form>

<?php do_action( 'woocommerce_after_checkout_form', $checkout ); ?>

<?php

}

add_action( 'genesis_entry_content', 'group_access' );

// Run the Genesis loop.
genesis();

0 个答案:

没有答案