如何将woocommerce错误消息移动到我想要的位置?

时间:2015-12-11 14:52:20

标签: php wordpress woocommerce

我想在我的部分中移动woocommerce错误。我怎么做?我是否必须更改模板文件中的任何内容?对于所有错误消息,我希望它出现在“row-wrap”类之前。

   

<div class="row">
    <ul class="woocommerce-error">
        <?php foreach ( $messages as $message ) : ?>
	  <li><?php echo wp_kses_post( $message ); ?></li>
       <?php endforeach; ?>
    </ul>


    <section class="row-wrap prod-wrap"> 
      <!-- WOOCOMMERCE ERROR appear here -->
	  <div class="row-inner">
	     <form action="<?php echo esc_url( WC()->cart->get_cart_url() ); ?>" method="post">
      
       </form>
     </div>
    </section>
</div>

3 个答案:

答案 0 :(得分:2)

您可以使用jQuery在woocommerce的结帐页面上移动错误消息:

$('form.checkout.woocommerce-checkout').bind('DOMSubtreeModified',function(){
if ($('ul.woocommerce-error').length) {
    $('ul.woocommerce-error').insertAfter('.place-order .blue-box')//where you want to place it
}});

答案 1 :(得分:1)

我使用它并且运作良好:

function move_woocommerce_message(){
  remove_action( 'woocommerce_before_single_product', 'wc_print_notices', 10 );
  add_action( 'woocommerce_single_product_summary', 'wc_print_notices', 35 );  
}
add_filter('wp', 'move_woocommerce_message');

答案 2 :(得分:0)

通知由wc_print_notices()函数打印,由WooCommerce添加到以下挂钩中:

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

要移动它们,您必须将它们从现有位置移除,然后将它们添加到新的挂钩名称。

function so_34226268_remove_notices(){
    remove_action( 'woocommerce_before_shop_loop', 'wc_print_notices', 10 );
    remove_action( 'woocommerce_before_single_product', 'wc_print_notices', 10 );
    add_action( 'your_new_hook_location_here', 'wc_print_notices', 10 );
    add_action( 'another_new_hook_location', 'wc_print_notices', 10 );    
}
add_action( 'woocommerce_before_shop_loop', 'so_34226268_remove_notices', 1 );