<?php if (!defined('ABSPATH')) { exit; } function wc_notice_count($notice_type = '') { if (!did_action('woocommerce_init')) { wc_doing_it_wrong(__FUNCTION__, __('This function should not be called before woocommerce_init.', 'woocommerce'), '2.3'); return; } $notice_count = 0; $all_notices = WC()->session->get('wc_notices', array()); if (isset($all_notices[$notice_type])) { $notice_count = count($all_notices[$notice_type]); } elseif (empty($notice_type)) { foreach ($all_notices as $notices) { $notice_count += count($notices); } } return $notice_count; } function wc_has_notice($message, $notice_type = 'success') { if (!did_action('woocommerce_init')) { wc_doing_it_wrong(__FUNCTION__, __('This function should not be called before woocommerce_init.', 'woocommerce'), '2.3'); return false; } $notices = WC()->session->get('wc_notices', array()); $notices = isset($notices[$notice_type]) ? $notices[$notice_type] : array(); return array_search($message, wp_list_pluck($notices, 'notice'), true) !== false; } function wc_add_notice($message, $notice_type = 'success', $data = array()) { if (!did_action('woocommerce_init')) { wc_doing_it_wrong(__FUNCTION__, __('This function should not be called before woocommerce_init.', 'woocommerce'), '2.3'); return; } $notices = WC()->session->get('wc_notices', array()); if ('success' === $notice_type) { $message = apply_filters('woocommerce_add_message', $message); } $message = apply_filters('woocommerce_add_' . $notice_type, $message); if (!empty($message)) { $notices[$notice_type][] = array('notice' => $message, 'data' => $data); } WC()->session->set('wc_notices', $notices); } function wc_set_notices($notices) { if (!did_action('woocommerce_init')) { wc_doing_it_wrong(__FUNCTION__, __('This function should not be called before woocommerce_init.', 'woocommerce'), '2.6'); return; } WC()->session->set('wc_notices', $notices); } function wc_clear_notices() { if (!did_action('woocommerce_init')) { wc_doing_it_wrong(__FUNCTION__, __('This function should not be called before woocommerce_init.', 'woocommerce'), '2.3'); return; } WC()->session->set('wc_notices', null); } function wc_print_notices($return = false) { if (!did_action('woocommerce_init')) { wc_doing_it_wrong(__FUNCTION__, __('This function should not be called before woocommerce_init.', 'woocommerce'), '2.3'); return; } $all_notices = WC()->session->get('wc_notices', array()); $notice_types = apply_filters('woocommerce_notice_types', array('error', 'success', 'notice')); ob_start(); foreach ($notice_types as $notice_type) { if (wc_notice_count($notice_type) > 0) { $messages = array(); foreach ($all_notices[$notice_type] as $notice) { $messages[] = isset($notice['notice']) ? $notice['notice'] : $notice; } wc_get_template("notices/{$notice_type}.php", array('messages' => array_filter($messages), 'notices' => array_filter($all_notices[$notice_type]))); } } wc_clear_notices(); $notices = wc_kses_notice(ob_get_clean()); if ($return) { return $notices; } echo $notices; } function wc_print_notice($message, $notice_type = 'success', $data = array()) { if ('success' === $notice_type) { $message = apply_filters('woocommerce_add_message', $message); } $message = apply_filters('woocommerce_add_' . $notice_type, $message); wc_get_template("notices/{$notice_type}.php", array('messages' => array($message), 'notices' => array(array('notice' => $message, 'data' => $data)))); } function wc_get_notices($notice_type = '') { if (!did_action('woocommerce_init')) { wc_doing_it_wrong(__FUNCTION__, __('This function should not be called before woocommerce_init.', 'woocommerce'), '2.3'); return; } $all_notices = WC()->session->get('wc_notices', array()); if (empty($notice_type)) { $notices = $all_notices; } elseif (isset($all_notices[$notice_type])) { $notices = $all_notices[$notice_type]; } else { $notices = array(); } return $notices; } function wc_add_wp_error_notices($errors) { if (is_wp_error($errors) && $errors->get_error_messages()) { foreach ($errors->get_error_messages() as $error) { wc_add_notice($error, 'error'); } } } function wc_kses_notice($message) { $allowed_tags = array_replace_recursive(wp_kses_allowed_html('post'), array('a' => array('tabindex' => true))); return wp_kses($message, apply_filters('woocommerce_kses_notice_allowed_tags', $allowed_tags)); } function wc_get_notice_data_attr($notice) { if (empty($notice['data'])) { return; } $attr = ''; foreach ($notice['data'] as $key => $value) { $attr .= sprintf(' data-%1$s="%2$s"', sanitize_title($key), esc_attr($value)); } return $attr; }