在结帐页面

时间:2018-02-28 07:55:11

标签: php wordpress woocommerce

Woocommerce Notification的更改位置正在运作,但在更新了3.3.3版本的woocommerce之后,它无法正常工作。

  

/includes/wp-notice-functions.php

remove_action( 'woocommerce_shortcode_before_product_cat_loop', 'wc_print_notices', 10 );
remove_action( 'woocommerce_before_shop_loop', 'wc_print_notices', 10 );
remove_action( 'woocommerce_before_single_product', 'wc_print_notices', 10 );

删除了这3个功能。我刚从上面的文件中提到了这3个动作,然后使用我的函数文件

删除了这些动作
<div class="center">Your Order</div>

<?php wc_print_notices(); ?>

from-checkout.php标题下的打印通知,但它始终显示在标题上方。

任何人都可以解释我在哪里做错了。

1 个答案:

答案 0 :(得分:0)

我想出了一个解决方法。我注意到它实际上是一个调用名为update_order_review的函数的AJAX请求,该函数通过wc_print_notices打印通知。您可以使用某些jQuery挂钩到触发器updated_checkout以进一步向下移动通知。将以下jQuery放入子目录js。

中名为es-checkout.js的文件中
(function($){
    'use strict';

    $(function(){
        var $orderReview = $("#order_review_heading");

        $( document.body ).on( 'updated_checkout', function( event, data  ) {
            console.log( 'checkout was updated' );
            console.log(data);
            $( '.woocommerce-error, .woocommerce-message' ).remove();
            $orderReview.append(data.messages);

            $('html, body').animate({
                scrollTop: $orderReview.offset().top
            }, 500);
        });
    })
})( jQuery );

使用此代码对脚本进行排队,请注意它依赖于WooCommerce脚本。

function es_checkout_scripts() {
    if( is_checkout() )
        wp_enqueue_script( 'es-checkout', get_stylesheet_directory_uri() . '/js/es-checkout.js', array('jquery', 'wc-checkout'), '1.0.0', true );
}
add_action( 'wp_enqueue_scripts', 'es_checkout_scripts' );