• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Как избавиться от уведомления "товар удален. отменить?"

giwuf

Форумчанин
Всем привет! В интернет-магазине установлена последние на сегодня 3.0.5 версия woocommerce и wordpress 4.7 соответственно с стандартной темой storefront. Все изменения вношу через дочернюю тему. Вопрос у меня 1 в 1 как здесь - как избавиться от всех уведомлений исходящих от корзины, в частности при удалении товара из корзины?
Делаю все по рекомендациям:
перезаписываю файл notice.php по пути storefront-child/woocommerce/notices/notices.php
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; ?>
прописываю инструкции в дочерней теме function.php
PHP:
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);
а также
PHP:
// Removes Product Successfully Added to Cart
add_filter( 'wc_add_to_cart_message', 'custom_add_to_cart_message' );
function custom_add_to_cart_message() {
 echo '<style>.woocommerce-message {display: none !important;}</style>';
  wc_clear_notices();
}
//Remove Message:
add_action( 'init', 'remove_notices' );
function remove_notices() {
remove_action( 'woocommerce_before_shop_loop', 'wc_print_notices', 10 ); /*Archive Product*/
remove_action( 'woocommerce_before_single_product', 'wc_print_notices', 10 ); /*Single Product*/
remove_action( 'storefront_content_top', 'storefront_shop_messages', 1 );
}
прописываю в стилях
Код:
.woocommerce-message {
    display: none !important;
}
и все равно - при удалении товара из корзины - вылазит уведомление срабатывающее в файле
class-wc-form-handler.php
PHP:
$removed_notice .= ' <a href="' . esc_url( WC()->cart->get_undo_url( $cart_item_key ) ) . '">' . __( 'Undo?', 'woocommerce' ) . '</a>';
wc_add_notice( $removed_notice );
Как же от него избавиться??..
 
Последнее редактирование:

artemkomarov

Специалист
Местный
в шаблоне корзины есть строчка
PHP:
wc_print_notices();

просто удалите ее и все
 
  • Like
Реакции: qwer

artemkomarov

Специалист
Местный
удалил. не работает..
Значит вы уже наделали делов! Данная функция привязана через action к таксономии, а для корзины и чекоут напрямую в файле. Либо вы не то редактируете либо функция привязана к action страниц оформления заказов.
 

giwuf

Форумчанин
Значит вы уже наделали делов! Данная функция привязана через action к таксономии, а для корзины и чекоут напрямую в файле. Либо вы не то редактируете либо функция привязана к action страниц оформления заказов.
artemkomarov , ну каких делов. я само ядро не трогаю - все изменения делаю через файл functions.php дочерней темы. закоментил-раскоментил строки с удалением - результата нет..
тут фактически нужно избавится от объявления в файле class-wc-form-handler.php
class WC_Form_Handler {
/**
* Hook in methods.
*/
public static function init() {
....
add_action( 'wp_loaded', array( __CLASS__, 'update_cart_action' ), 20 );
...
}
...
}

но, прописывание в functions.php не спасает..
add_action( 'init', 'remove_notices' );
function remove_notices() {
remove_action( 'wp_loaded', array( __CLASS__, 'update_cart_action' ), 20 );
}
 

artemkomarov

Специалист
Местный
только что проверил. закоментил стороку wc_print_notices(); и ни каких сообщений больше в корзине при удалении нет.
 

giwuf

Форумчанин
только что проверил. закоментил стороку wc_print_notices(); и ни каких сообщений больше в корзине при удалении нет.
artemkomarov а вот у меня, к сожалению, это не работает.. удалил
PHP:
wc_print_notices();
в cart.php и cart-empty.php
удалил даже весь файл functions.php - все тоже самое. А больше нигде ничего не правил
можно конечно в самом ядре в функции update_cart_action() закоментить строчку
PHP:
wc_add_notice( $removed_notice );
и тогда работает, но это конечно же не дело - при ближайшем обновлении все слетит
 

giwuf

Форумчанин
только что проверил. закоментил стороку wc_print_notices(); и ни каких сообщений больше в корзине при удалении нет.
кажется я понял - вы проверяете удаление в самой корзине. А у вас на сайте есть мини-корзина? если да, то попробуйте удалить с нее товар с любой страницы (продукция, например) - результат вас удивит

Ура! решил записью в стилях только вот такой записью
Код:
.site-content>.col-full>.woocommerce>.woocommerce-message {
    display: none!important;
}
 
Последнее редактирование:

artemkomarov

Специалист
Местный
кажется я понял - вы проверяете удаление в самой корзине. А у вас на сайте есть мини-корзина? если да, то попробуйте удалить с нее товар с любой страницы (продукция, например) - результат вас удивит
Не удивит :) я переписал все на AJAX поэтому удаление, добавление, изменение происходит без каких либо перезагрузок и уведомлений.
 

giwuf

Форумчанин
Не удивит :) я переписал все на AJAX поэтому удаление, добавление, изменение происходит без каких либо перезагрузок и уведомлений.
artemkomarov тогда у меня к вам как специалисту по ajax есть вопрос немного не по теме: почему при удалении с мини корзины последнего товара совершенно произвольным образом он может удалиться и корзина очиститься или вдруг идет перенаправление в саму корзину без удаления товара - может быть сталкивались с таким? причем это возникает независимо в разных темах (storefront, flatastic) и на разных сайтах
 
Сверху Снизу