当购物车价值为零时,删除Woocommerce Checkout页面上的Div

时间:2017-09-11 14:18:28

标签: php css wordpress woocommerce

我运行的网站上有很多免费产品,会员加入后可以访问这些产品。他们必须再次通过结账才能获得它们(它们是必须为每个用户唯一生成的优惠券,因此需要再次通过结账)。

当用户将其中一个产品添加到购物车并结帐时,我想显示一个超级简单的结帐页面。我真的只是想添加一个横幅图像,然后在图像下方对齐“下订单”黄油中心。

我设法使用以下代码删除了大量的结帐字段:

function sv_free_checkout_fields() {

global $woocommerce ; 

// Bail we're not at checkout, or if we're at checkout but payment is needed
if ( ! is_checkout() || ( is_checkout() && WC()->cart->needs_payment() ) ) {
    return;
}

if ( $woocommerce->cart->total != 0 ) {
    return;
}

if ( WC_Subscriptions_Cart::cart_contains_subscription() ) {
    return;
}

// remove coupon forms since why would you want a coupon for a free cart??
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );

// remove order review section
remove_action( 'woocommerce_checkout_order_review', 'woocommerce_order_review', 10 );

// Remove the "Additional Info" order notes
add_filter( 'woocommerce_enable_order_notes_field', '__return_false' );
// Unset the fields we don't want in a free checkout
function unset_unwanted_checkout_fields( $fields ) {

    // add or remove billing fields you do not want
    // list of fields: http://docs.woothemes.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/#section-2
    $billing_keys = array(
      'billing_first_name',
      'billing_last_name',  
      'billing_company',
        'billing_phone',
      'billing_email',
        'billing_address_1',
        'billing_address_2',
        'billing_city',
        'billing_postcode',
        'billing_country',
        'billing_state',
    );
    // unset each of those unwanted fields
    foreach( $billing_keys as $key ) {
        unset( $fields['billing'][$key] );
    }

    return $fields;
}
add_filter( 'woocommerce_checkout_fields', 'unset_unwanted_checkout_fields' );

// A tiny CSS tweak for the account fields; this is optional
function print_custom_css() {
    echo '<style>.create-account { margin-top: 6em; }</style>';
}
add_action( 'wp_head', 'print_custom_css' );
}
add_action( 'wp', 'sv_free_checkout_fields' );

截至目前,每当其中一个免费产品被添加到购物车并且用户去结账时,它会删除除“下订单”按钮(我想保留)之外的所有内容,一些围绕该按钮的样式,左侧的“结算明细”标题,以及该标题周围的矩形边框,以及其下方的另一个矩形框。我似乎无法弄清楚如何删除这些最后几件事。

这是我需要删除的代码,它创建了按钮周围的框:

body.woocommerce-cart .cart-collaterals, form.checkout.woocommerce-checkout 
#order_review {
width: 40%;
display: inline-block;
padding: 20px;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 2px;
border: 1px solid #f1f1f1;
background-color: #fdfdfd;
}

这是我需要在左侧删除的div:

<div class="woocommerce-billing-fields">

    <h3>Billing details</h3>



    <div class="woocommerce-billing-fields__field-wrapper">
        </div>

    </div>

我只需要在购物车总数为零时将其移除。我还希望将地点顺序按钮居中,并在可能的情况下在其上方添加横幅。

1 个答案:

答案 0 :(得分:0)

如何用以下内容替换上述div:

<?php
$cart_total = WC()->cart->get_cart_total();
if ( $cart_total != 0 ) {
?>
<div class="woocommerce-billing-fields">
<h3>Billing details</h3>
<div class="woocommerce-billing-fields__field-wrapper"></div>
</div>
<?php } ?>

这样,如果购物车价值 NOT 等于零,显示。

我没有测试过,但理论就在那里。您可能需要向购物车添加零总项目并回显WC()->cart->get_cart_total();以检查输出。它可能会返回0.00或0.00美元。在这种情况下,您需要相应地修改代码。