Вот проверенное и рабочее решение для удаления сообщения «Вы не можете добавить другое».
Справочная информация: Woocommerce не предоставляет прямых хуков всем своим уведомлениям. Ошибки корзины на самом деле жестко запрограммированы в class-wc-cart.php как исключение.
Когда генерируются исключения ошибок, они добавляются в список уведомлений, к которым мы можем обращаться, анализировать и изменять, используя методы:
- wc_get_notices () возвращает все уведомления в виде массива
- wc_set_notices () позволяет напрямую устанавливать массив уведомлений
Чтобы получить доступ к уведомлениям и изменить их, вам нужно подключить действие, которое сработает после того, как woocommerce сгенерирует свои уведомления, но ДО отображения страницы. Вы можете сделать это с помощью действия: woocommerce_before_template_part
Вот полный рабочий код, который специально удаляет " Вы не можете добавить еще " уведомления:
add_action('woocommerce_before_template_part', 'houx_filter_wc_notices');
function houx_filter_wc_notices(){
$noticeCollections = wc_get_notices();
/*DEBUGGING: Uncomment the following line to see a dump of all notices that woocommerce has generated for this page */
/*var_dump($noticeCollections);*/
/* noticeCollections is an array indexed by notice types. Possible types are: error, success, notice */
/* Each element contains a subarray of notices for the given type */
foreach($noticeCollections as $noticetype => $notices)
{
if($noticetype == 'error')
{
/* the following line removes all errors that contain 'You cannot add another'*/
/* if you want to filter additiona errors, just copy the line and change the text */
$filteredErrorNotices = array_filter($notices, function ($var) { return (stripos($var, 'You cannot add another') === false); });
$noticeCollections['error'] = $filteredErrorNotices;
}
}
/*DEBUGGING: Uncomment to see the filtered notices collection */
/*echo "<p>Filtered Notices:</p>";
var_dump($noticeCollections);*/
/*This line overrides woocommerce notices by changing them to our filtered set. */
wc_set_notices($noticeCollections);
}
Примечание: если вы хотите добавить собственное уведомление, вы можете использовать wc_add_notice (). Вам нужно прочитать документацию woocommerce, чтобы увидеть, как она работает:
wc_add_notice в документах WooCommerce