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

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

Ответ 1

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

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

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

Откройте файлы плагинов и выполните поиск wc_add_notice:

title=

Эта функция имеет фильтр:

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

$notice_type - это второй аргумент, переданный во всех этих вхождениях.

Использование чего-то вроде этого должно работать:

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

    return $message;
});

Ответ 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; ?>

Ответ 4

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