WooCommerce wc_add_notice(),带有自定义notice_type和购物车更新

时间:2017-08-02 16:13:24

标签: jquery ajax woocommerce customization hook-woocommerce

我正在尝试将通知类型添加到WooCommerce wc_add_notice()类型集(successnoticeerror)。称之为'warning',它应该比'notice'“更严重”,但对于用户来说应该比'error'更严重。

我开始将wp-content/plugins/woocommerce/teplates/notices/notice.php复制到wp-content/themes/mytheme/woocommerce/notices/warning.php

然后我将其类名修改为woocommerce-warning

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

然后,为了使它工作,我不得不添加此代码

add_filter('woocommerce_notice_types', function ($notice_types) {
    $notice_types[] =   "warning";
    return $notice_types;
});

到我的functions.php,让WooCommerce打印我的新通知类型。

然后当然有一些CSS来调整颜色和样式:

.woocommerce-warning {
    border-top-color:gold;
    border-bottom-color:gold;
}
.woocommerce-warning::before {
    content: "\e016";
    color: gold;
    top: 0.2em;
    left: 0.5em;
    font-size: 1.8em;
}

现在,有一个简单的wc_add_notice('message', 'warning');我的警告信息就在那里!

最初它似乎工作,但现在我意识到它的行为与原始通知类型不同:如果我更新购物车,即更正产品数量(我认为这是一个AJAX调用,可能有些jquery存在。 。?),我的验证器函数添加了一个不会更新的警告通知(它只是保留在旧消息中)。将类型warning替换为notice消息将按预期更新。

add_filter('woocommerce_check_cart_items', function() {
    $prod = WC()->cart->get_cart_contents_count();
    wc_add_notice('Notice: cart containing '.$prod.' products', 'notice');      // message gets updated
    wc_add_notice('Warnign: cart containing '.$prod.' products', 'warning');    // this doesn't
});

任何想法为什么? 我的猜测:或许可以解决一些问题......?

感谢名单。

1 个答案:

答案 0 :(得分:0)

在您的自定义类别中添加错误或成功通知类别,例如:“ woocommerce-message woocommerce-warning”

使它的js工作并消失 然后是CSS:

   .woocommerce-message.woocommerce-warning {
    border-top-color:gold;
    border-bottom-color:gold;
  }
    .woocommerce-message.woocommerce-warning::before  {
 content: "\e016";
color: gold;
top: 0.2em;
left: 0.5em;
font-size: 1.8em;
  }
相关问题