Сообщения WooCommerce Notice, как их редактировать?

Я пытаюсь выяснить, где WooCommerce создает это сообщения, когда есть успех, ошибка или уведомление в WooCommerce. Я хочу редактировать эти сообщения, чтобы соответствовать сценарию более аккуратно, а также редактировать HTML. Где находятся эти сообщения и как их редактировать?

5 ответов


многие из них находятся непосредственно в файлах плагина - к сожалению. Некоторые сообщения привязаны к крючкам фильтра, которые позволяют редактировать их, не возясь с файлами плагинов, но это не всегда так.

сообщение, которое вы хотели изменить, было "название продукта было успешно добавлено в корзину". Этот параметр задается в функции wc_add_to_cart_message в WC-cart-функциях.php и эта функция позволяет изменять его с помощью фильтра:

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

Так в вашем функции.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;
}

откройте файлы плагинов и найдите 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;
});

фильтры, упомянутые здесь, отлично работают для редактирования самого сообщения, но если вы хотите отредактировать фактическую разметку 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; ?>

я наткнулся на этот ответ и смог реализовать для производственного сайта. Этот ответ связан с уведомлениями об ошибках 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


Я сделал это для . путь к файлу 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>