Пример #1
0
 /**
  * Save variations via AJAX.
  */
 public static function save_variations()
 {
     ob_start();
     check_ajax_referer('save-variations', 'security');
     // Check permissions again and make sure we have what we need
     if (!current_user_can('edit_products') || empty($_POST) || empty($_POST['product_id'])) {
         die(-1);
     }
     // Remove previous meta box errors
     WC_Admin_Meta_Boxes::$meta_box_errors = array();
     $product_id = absint($_POST['product_id']);
     $product_type = empty($_POST['product-type']) ? 'simple' : sanitize_title(stripslashes($_POST['product-type']));
     $product_type_terms = wp_get_object_terms($product_id, 'product_type');
     // If the product type hasn't been set or it has changed, update it before saving variations
     if (empty($product_type_terms) || $product_type !== sanitize_title(current($product_type_terms)->name)) {
         wp_set_object_terms($product_id, $product_type, 'product_type');
     }
     WC_Meta_Box_Product_Data::save_variations($product_id, get_post($product_id));
     do_action('woocommerce_ajax_save_product_variations', $product_id);
     // Clear cache/transients
     wc_delete_product_transients($product_id);
     if ($errors = WC_Admin_Meta_Boxes::$meta_box_errors) {
         echo '<div class="error notice is-dismissible">';
         foreach ($errors as $error) {
             echo '<p>' . wp_kses_post($error) . '</p>';
         }
         echo '<button type="button" class="notice-dismiss"><span class="screen-reader-text">' . __('Dismiss this notice.', 'woocommerce') . '</span></button>';
         echo '</div>';
         delete_option('woocommerce_meta_box_errors');
     }
     die;
 }
Пример #2
0
 /**
  * Save variations via AJAX
  */
 public static function save_variations()
 {
     ob_start();
     check_ajax_referer('save-variations', 'security');
     // Check permissions again and make sure we have what we need
     if (!current_user_can('edit_products') || empty($_POST) || empty($_POST['product_id'])) {
         die(-1);
     }
     // Remove previous meta box errors
     WC_Admin_Meta_Boxes::$meta_box_errors = array();
     $product_id = absint($_POST['product_id']);
     WC_Meta_Box_Product_Data::save_variations($product_id, get_post($product_id));
     do_action('woocommerce_ajax_save_product_variations', $product_id);
     // Clear cache/transients
     wc_delete_product_transients($product_id);
     if ($errors = WC_Admin_Meta_Boxes::$meta_box_errors) {
         echo '<div class="error notice is-dismissible">';
         foreach ($errors as $error) {
             echo '<p>' . wp_kses_post($error) . '</p>';
         }
         echo '<button type="button" class="notice-dismiss"><span class="screen-reader-text">' . __('Dismiss this notice.', 'woocommerce') . '</span></button>';
         echo '</div>';
         delete_option('woocommerce_meta_box_errors');
     }
     die;
 }