我正在从头开始创建一个WooCommerce主题,我真的很想更改将默认WooCommerce消息包装在Cart
和Checkout
第页。
我特别讨论的是在更新购物车或删除项目时,此元素中显示的默认消息:
<div class="woocommerce-message" role="alert">
Your cart has been updated / Product was removed. Undo?
</div>
我试过几种方法;
我正在覆盖默认值error.php
, success.php
和notice.php
中的模板templates/notices
文件夹我总结道,这些似乎只用于其中的一些通知。例如,“我的错误”可以很好地使用错误模板。
我追踪到了我认为的罪魁祸首,一直到函数woocommerce_output_all_notices
在wc-template-functions.php
文件我几乎可以肯定这就是它,因为它是我能找到的唯一函数,在包装容器中被调用(<div class="woocommerce-notices-wrapper">
元素)。
函数如下所示:
function woocommerce_output_all_notices() {
echo \'<div class="woocommerce-notices-wrapper">\';
wc_print_notices();
echo \'</div>\';
}
如果认为标记来自
wc_print_notices()
作用
但是,当我在中查看此函数时wc-notice-functions.php
... 它使用了我在#1..中提到的模板?
我做错了什么?有没有人有过适当修改这些消息标记的经验?
最合适的回答,由SO网友:p01ntbr34k 整理而成
在与一些闲散的WooCommerce人员交谈后,我意识到这里的问题可能是this pattern, 在里面frontend/cart.js
- 事实上,我的商店使用WooCommerce提供的AJAX功能。
var show_notice = function( html_element, $target ) {
if ( ! $target ) {
$target = $( \'.woocommerce-notices-wrapper:first\' ) ||
$( \'.cart-empty\' ).closest( \'.woocommerce\' ) ||
$( \'.woocommerce-cart-form\' );
}
$target.prepend( html_element );
当AJAX更新后满足某些存储状态时,似乎会创建一个默认的新HTML元素并将其添加到包装器中。