WC_Product::set_sku PHP Method

set_sku() public method

Set SKU.
Since: 2.7.0
public set_sku ( string $sku )
$sku string Product SKU.
    public function set_sku($sku)
    {
        $sku = (string) $sku;
        if (!empty($sku) && !wc_product_has_unique_sku($this->get_id(), $sku)) {
            $this->error('product_invalid_sku', __('Invalid or duplicated SKU.', 'woocommerce'));
        }
        $this->set_prop('sku', $sku);
    }

Usage Example

 /**
  * Quick edit.
  *
  * @param integer    $post_id
  * @param WC_Product $product
  */
 private function quick_edit_save($post_id, $product)
 {
     $data_store = $product->get_data_store();
     $old_regular_price = $product->get_regular_price();
     $old_sale_price = $product->get_sale_price();
     // Save fields
     if (isset($_REQUEST['_sku'])) {
         $sku = $product->get_sku();
         $new_sku = (string) wc_clean($_REQUEST['_sku']);
         if ($new_sku !== $sku) {
             if (!empty($new_sku)) {
                 $unique_sku = wc_product_has_unique_sku($post_id, $new_sku);
                 if ($unique_sku) {
                     $product->set_sku($new_sku);
                 }
             } else {
                 $product->set_sku('');
             }
         }
     }
     if (isset($_REQUEST['_weight'])) {
         $product->set_weight(wc_clean($_REQUEST['_weight']));
     }
     if (isset($_REQUEST['_length'])) {
         $product->set_length(wc_clean($_REQUEST['_length']));
     }
     if (isset($_REQUEST['_width'])) {
         $product->set_width(wc_clean($_REQUEST['_width']));
     }
     if (isset($_REQUEST['_height'])) {
         $product->set_height(wc_clean($_REQUEST['_height']));
     }
     if (!empty($_REQUEST['_shipping_class'])) {
         $shipping_class = '_no_shipping_class' == $_REQUEST['_shipping_class'] ? '' : wc_clean($_REQUEST['_shipping_class']);
         $shipping_class_id = $data_store->get_shipping_class_id_by_slug($shipping_class);
         if ($shipping_class_id) {
             $product->set_shipping_class_id($shipping_class_id);
         }
     }
     if (isset($_REQUEST['_visibility'])) {
         $product->set_catalog_visibility(wc_clean($_REQUEST['_visibility']));
     }
     if (isset($_REQUEST['_featured'])) {
         $product->set_featured(true);
     } else {
         $product->set_featured(false);
     }
     if (isset($_REQUEST['_tax_status'])) {
         $product->set_tax_status(wc_clean($_REQUEST['_tax_status']));
     }
     if (isset($_REQUEST['_tax_class'])) {
         $product->set_tax_class(wc_clean($_REQUEST['_tax_class']));
     }
     if ($product->is_type('simple') || $product->is_type('external')) {
         if (isset($_REQUEST['_regular_price'])) {
             $new_regular_price = '' === $_REQUEST['_regular_price'] ? '' : wc_format_decimal($_REQUEST['_regular_price']);
             $product->set_regular_price($new_regular_price);
         } else {
             $new_regular_price = null;
         }
         if (isset($_REQUEST['_sale_price'])) {
             $new_sale_price = '' === $_REQUEST['_sale_price'] ? '' : wc_format_decimal($_REQUEST['_sale_price']);
             $product->set_sale_price($new_sale_price);
         } else {
             $new_sale_price = null;
         }
         // Handle price - remove dates and set to lowest
         $price_changed = false;
         if (!is_null($new_regular_price) && $new_regular_price != $old_regular_price) {
             $price_changed = true;
         } elseif (!is_null($new_sale_price) && $new_sale_price != $old_sale_price) {
             $price_changed = true;
         }
         if ($price_changed) {
             $product->set_date_on_sale_to('');
             $product->set_date_on_sale_from('');
         }
     }
     // Handle Stock Data
     $manage_stock = !empty($_REQUEST['_manage_stock']) && 'grouped' !== $product->get_type() ? 'yes' : 'no';
     $backorders = !empty($_REQUEST['_backorders']) ? wc_clean($_REQUEST['_backorders']) : 'no';
     $stock_status = !empty($_REQUEST['_stock_status']) ? wc_clean($_REQUEST['_stock_status']) : 'instock';
     $stock_amount = 'yes' === $manage_stock ? wc_stock_amount($_REQUEST['_stock']) : '';
     if ('yes' === get_option('woocommerce_manage_stock')) {
         // Apply product type constraints to stock status
         if ($product->is_type('external')) {
             // External always in stock
             $stock_status = 'instock';
         } elseif ($product->is_type('variable')) {
             // Stock status is always determined by children
             foreach ($product->get_children() as $child_id) {
                 $child = wc_get_product($child_id);
                 if (!$product->get_manage_stock()) {
                     $child->set_stock_status($stock_status);
                     $child->save();
                 }
             }
             $product = WC_Product_Variable::sync($product, false);
         }
         $product->set_manage_stock($manage_stock);
         $product->set_backorders($backorders);
         $product->save();
         if (!$product->is_type('variable')) {
             wc_update_product_stock_status($post_id, $stock_status);
         }
         wc_update_product_stock($post_id, $stock_amount);
     } else {
         $product->save();
         wc_update_product_stock_status($post_id, $stock_status);
     }
     do_action('woocommerce_product_quick_edit_save', $product);
 }
WC_Product