仅供参考,这是针对创世纪主题的。我正在制作一个自定义页面模板,该模板最终将供白色标签使用,并将附加到至少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();