如何改变woocommerce“添加到购物车”消息的位置

时间:2015-09-15 10:31:49

标签: wordpress plugins wordpress-plugin woocommerce

我正在使用woocommerce version 2.3.13,我希望更改woocommerce messages的位置,例如“产品已成功添加到购物车”,当我点击“添加到购物车”时,它会显示在产品页面的顶部“按钮。

我希望此消息出现在其他地方。

通过删除“woocommerce_show_messages”挂钩上的“woocommerce_before_single_product”,我已经厌倦了很多解决方案,包括this

代码remove_action( 'woocommerce_before_single_product', 'woocommerce_show_messages' );

然后调用woocommerce_show_messages();函数我希望消息显示但没有运气。

任何人都可以帮助我。

修改

我忘了提到我正在使用店面主题并为单个产品使用自定义模板。

默认情况下,这些消息会显示在页面顶部。

6 个答案:

答案 0 :(得分:2)

消息'产品已成功添加到购物车'是woocommerce通知。 这些消息由函数

打印
    <?php wc_print_notices(); ?>

尝试在模板中更改此功能的位置。

通过挂钩添加通知

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

STOREFRONT主题编辑: **适用于Woocoommerce:3.1.2 +店面:2.2.5 **

在店面主题中,wc_print_notices被挂钩到storefront_content_top

所以要从店面主题的顶部删除邮件,您需要在functions.php

中添加以下代码
remove_action( 'woocommerce_before_shop_loop', 'wc_print_notices', 10 ); /*Archive Product*/
remove_action( 'woocommerce_before_single_product', 'wc_print_notices', 10 ); /*Single Product*/
remove_action( 'storefront_content_top', 'storefront_shop_messages', 1 );

并添加功能

wc_print_notices();

您想要出现通知的任何地方。

编辑:消息不会出现在单个产品页面和存档产品页面上。虽然它们可能出现在任何其他的woocommerce页面上(购物车,结账等)。

答案 1 :(得分:1)

这适合我(WooCommerce 3.2+)(基于this answer @LoicTheAztec)

add_action( 'wp_head', 'reposition_sf_messages' );
function reposition_sf_messages(){
    if( is_product() ) {
        remove_action( 'storefront_content_top','storefront_shop_messages',15 );
    }
    remove_action( 'woocommerce_before_single_product', 'wc_print_notices', 10 ); /*Single Product*/
    add_action('woocommerce_product_meta_end', 'storefront_shop_messages', 1 );
}

答案 2 :(得分:0)

如果有人仍在寻找解决方案,那就去吧。

你可以使用类似的东西
remove_action( 'woocommerce_before_single_product', 'woocommerce_output_all_notices', 10 );

现在把这段代码放在你想显示通知的地方。
<?php wc_print_notices(); ?>

答案 3 :(得分:-1)

你试过这个:

remove_action( 'woocommerce_before_single_product', 'woocommerce_show_messages' );
add_action( 'woocommerce_after_single_product', 'woocommerce_show_messages', 15 );

此处third parameter适用于positioning priority

答案 4 :(得分:-1)

我认为这会对你有帮助............

add_action('woocommerce_before_my_page', 'wc_print_notices', 10);

现在转到您希望显示消息的页面,然后添加

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

答案 5 :(得分:-1)

这是在主题的functions.php中添加的完整代码。

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');