Plugins “如何改变woocommerce的地位”;“添加到购物车中”;消息

Plugins “如何改变woocommerce的地位”;“添加到购物车中”;消息,plugins,wordpress,woocommerce,Plugins,Wordpress,Woocommerce,我正在使用woocommerce版本2.3.13,我想更改woocommerce消息的位置,如“产品已成功添加到购物车”,当我单击“添加到购物车”按钮时,它会出现在产品页面顶部 我希望此消息出现在其他地方 我已经厌倦了许多解决方案,包括在单个产品之前删除“woocommerce\u show\u messages”钩子上的“woocommerce\u show\u messages” 代码:删除操作(“woocommerce”在单个产品之前,“woocommerce”显示消息) 然后调用wooc

我正在使用
woocommerce版本2.3.13
,我想更改
woocommerce消息的位置,如“产品已成功添加到购物车”,当我单击“添加到购物车”按钮时,它会出现在产品页面顶部

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

我已经厌倦了许多解决方案,包括在单个产品之前删除“
woocommerce\u show\u messages
”钩子上的“
woocommerce\u show\u messages

代码
删除操作(“woocommerce”在单个产品之前,“woocommerce”显示消息)

然后调用
woocommerce_show_messages()函数,我希望消息出现在其中,但没有运气

在这方面,任何人都可以帮助我

编辑:

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

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

您是否尝试过:

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

此处
第三个参数
用于
定位优先级

消息“产品已成功添加到购物车”是商业通知。 这些消息由函数打印

    <?php wc_print_notices(); ?>
店面主题编辑: **与Woocommerce合作:3.1.2+店面:2.2.5**

在店面主题中,
wc\u print\u notices
连接到
storefront\u content\u 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页面(购物车、结帐等)。

我认为这将帮助您

add_action('woocommerce_before_my_page', 'wc_print_notices', 10);
现在转到您希望显示消息的页面,然后添加

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

这是添加主题的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');
这适用于我(WooCommerce 3.2+)(基于for@LoicTheAztec)


如果有人仍在寻找解决方案,那么它就会出现

您可以使用类似
remove_action('woocommerce_-before_-single_-product','woocommerce_-output_-all_-notices',10)

现在将此代码放在要显示通知的位置。

这是正确的。通知不是通过钩子添加的,而是直接调用的。通知可以通过钩子
add\u操作添加(“woocommerce\u-before\u-shop\u-loop”、“wc\u-print\u-Notices”,10);添加行动(“单一产品前的商业”、“wc打印通知”,10)它们当然可以,但正如您在中指出的,有些地方直接调用函数。实际上,我以前弄错了,它们被添加到
woocommerce\u之前的单个产品中
woocommerce\u之前的商店中
。它似乎主要是短代码和Ajax回调,直接调用该函数。@ Akash K.实际上我希望消息出现在产品页面中间的某个地方,当前它出现在页面的顶部(甚至在面包屑之前)。请注意,我正在为单个产品使用店面主题和自定义模板。
wc\u print\u notices
操作实际上是在
'woocommerce\u-before\u-single\u-product
中连接的。。。使用
remove\u action
将函数从该操作中取消挂钩,只要在模板中调用
wc\u print\u notices()
即可在模板中显示通知。感谢您的回复。。。但这是行不通的。请看我的编辑,可能会清除的情况。是的,我已经厌倦了这一点,但它不工作,在我的情况下。请参阅我的编辑,它可能会清除这种情况,您可以很容易地指出解决方案。我希望这将有一些指导原则,它说明了第四个参数,第三个参数被分类为
优先级
!嗨@codepooter你找到解决办法了吗?(我正在使用WooCommerce 3+btw)
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');
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 );
}