WooCommerce — отключить & lt; product & gt; удаленное уведомление … & quot; на странице корзины

действия и фильтры. На моем сайте WooCommerce при удалении товара из корзины покупок появляется следующее сообщение:

"<product name>" removed. Undo?

Просматривая исходный код WooCommerce, я нашел условное утверждение в class-wc-form-header.php как часть функции update_cart_action():

$removed_notice .= ' <a href="' . esc_url( WC()->cart->get_undo_url( $cart_item_key ) ) . '">' . __( 'Undo?', 'woocommerce' ) . '</a>';

Но я не могу найти способ использовать его для устранения этого уведомления. Я пробовал решения CSS, но это не сработало:

введите описание изображения здесь

PS: это может быть не фрагмент кода, который беспокоит меня, но это единственный, который я нашел, что, кажется, имеет смысл.

Как я могу удалить это беспокойное уведомление?

Благодарю.

1

Решение

Вы можете сделать это по-разному:

1. Переопределение шаблона notices.php:
У вас есть первый (если еще не сделано) скопировать woocommerce templates папку внутри вашей активной дочерней темы или темы, затем переименуйте ее woocommerce. Затем откройте / отредактируйте notices/notices.php и попробуйте заменить код:

<?php
/**
* Show messages
* ... Blabla ... / ... blabla ...
* @version     1.6.4
*/

if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}

if ( ! $messages ){
return;
}

?>

<?php foreach ( $messages as $message ) : // Change your template code from here
if ( strpos( $message, 'removed' ) === false ) : ?>
<div class="woocommerce-info"><?php echo wp_kses_post( $message ); ?></div>
<?php endif;
endforeach; ?>

2. Используя крючки:

function remove_added_to_cart_notice()
{
$notices = WC()->session->get('wc_notices', array());

foreach( $notices['notices'] as $key => &$notice){
if( strpos( $notice, 'removed' ) !== false){
$added_to_cart_key = $key;
break;
}
}
unset( $notices['notices'][$added_to_cart_key] );

WC()->session->set('wc_notices', $notices);
}
add_action('woocommerce_before_single_product','remove_added_to_cart_notice',1);
add_action('woocommerce_shortcode_before_product_cat_loop','remove_added_to_cart_notice',1);
add_action('woocommerce_before_shop_loop','remove_added_to_cart_notice',1);

3. Использование CSS (с чем-то вроде):

.woocommerce-cart .woocommerce-message {
display: none !important;
}

Рекомендации:

1

Другие решения

Я должен был изменить это, чтобы заставить это работать. В частности, поле массива является единственным уведомление или, по крайней мере, сейчас.

$notices = WC()->session->get('wc_notices', array());
foreach( $notices['notice'] as $key => &$notice){
if( strpos( $notice, 'whilst' ) !== false){
$BadNotice_key = $key;
unset( $notices['notice'][$BadNotice_key] );
WC()->session->set('wc_notices', $notices);
break;
}
}
0

1. Простой способ: в wp-content/plugins/woocommerce/includes/class-wc-form-handler.php

2. удалить / отключить эту строку: wc_add_notice( $removed_notice ); (строка 523) вот так

            if ( $product && $product->is_in_stock() && $product->has_enough_stock( $cart_item['quantity'] ) ) {
$removed_notice  = sprintf( __( '%s removed.', 'woocommerce' ), $item_removed_title );
$removed_notice .= ' <a href="' . esc_url( wc_get_cart_undo_url( $cart_item_key ) ) . '" class="restore-item">' . __( 'Undo?', 'woocommerce' ) . '</a>';
} else {
$removed_notice = sprintf( __( '%s removed.', 'woocommerce' ), $item_removed_title );
}
// wc_add_notice( $removed_notice );
}
-1
По вопросам рекламы [email protected]