Я пытаюсь выяснить, где WooCommerce создает его сообщения, когда в WooCommerce есть успех, ошибка или уведомление. Я хочу отредактировать эти сообщения в соответствии с сценарием более аккуратно, а также отредактировать HTML. Где находятся эти сообщения и как их редактировать?
Сообщения об уведомлениях WooCommerce, как их редактировать?
Ответ 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
:
Эта функция имеет фильтр:
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