WooCommerce Notice消息,如何编辑它们?

时间:2014-10-04 02:10:29

标签: wordpress woocommerce

我正在试图找出WooCommerce在WooCommerce中成功,错误或通知时创建的消息。我想编辑这些消息以更整洁地适应场景并编辑HTML。这些消息位于何处以及如何编辑它们?

5 个答案:

答案 0 :(得分:11)

打开插件文件并搜索wc_add_notice

此功能有一个过滤器:

apply_filters( 'woocommerce_add_' . $notice_type, $message );

$notice_type是所有这些事件中传递的第二个参数。

使用这样的东西应该有效:

add_filter( 'woocommerce_add_error', function( $message ) {
    if( $message == 'Some message' )
        $message = '';

    return $message;
});

答案 1 :(得分:10)

不幸的是,其中许多都直接在插件文件中。有些消息与过滤器挂钩绑定,允许您编辑它们而不会弄乱插件文件,但情况并非总是如此。

您要更改的消息是“产品名称已成功添加到您的购物车”。这个在wc-cart-functions.php的函数wc_add_to_cart_message中设置,这个函数允许你使用过滤器来改变它:

wc_add_notice( apply_filters( 'wc_add_to_cart_message', $message, $product_id ) );

因此,在您的functions.php文件中,您可以添加以下内容:

add_filter('wc_add_to_cart_message', 'handler_function_name', 10, 2);
function handler_function_name($message, $product_id) {
    return "Thank you for adding product" . $product_id;
}

答案 2 :(得分:3)

此处提到的过滤器可以很好地编辑邮件本身,但如果您想编辑包含通知邮件的实际HTML标记,则需要使用templates > notices下的通知模板。

这里有三个不同的文件,每个文件用于不同类型的通知。在我的情况下,我想在成功通知的优惠券中添加一个类,因此我将success.php复制到我的主题文件中。我的代码如下所示:

<?php foreach ( $messages as $message ) : ?>
    <?php 
        $om_css_class = "";
        if ( $message == "Coupon code applied successfully." ) {
            $om_css_class = "coupon-notice-msg";
        } 
    ?>
    <div class="woocommerce-message <?php echo $om_css_class; ?>"><?php echo wp_kses_post( $message ); ?></div>
<?php endforeach; ?>

答案 3 :(得分:2)

我遇到了这个答案,并且能够为生产网站实施。此答案与woocommerce错误代码通知有关。您需要在单独的类文件中找到代码(~woocommerce / includes /)。为了我的目的,代码在~woocommerce / includes / class-wc-coupon.php

/**
 * Modify the coupon errors:
*/

 add_filter( 'woocommerce_coupon_error', 'wpq_coupon_error', 10, 2 );

 function wpq_coupon_error( $err, $err_code ) {
  return ( '103' == $err_code ) ? '' : $err;
 }

感谢此页:http://wpquestions.com/WooCommerce_Remove_Coupon_code_already_applied_error_message/10598

答案 4 :(得分:1)

我为error.php文件做过。文件路径为woocommerce/templates/notices/error.php

<ul class="woocommerce-error" role="alert">
    <?php
  foreach ( $messages as $message ) :

  if($message=="<strong>Billing Email address</strong> is a required field.") { $message="<strong>Email address</strong> is a required field."; }?>
        <li><?php echo wp_kses_post( $message ); ?></li>
    <?php endforeach; ?>
</ul>