[API] Manage product order_menu, closes #9866
This commit is contained in:
parent
7ed6eb2cb9
commit
b03280e230
|
@ -241,7 +241,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new product
|
* Create a new product.
|
||||||
*
|
*
|
||||||
* @since 2.2
|
* @since 2.2
|
||||||
* @param array $data posted data
|
* @param array $data posted data
|
||||||
|
@ -257,29 +257,29 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
|
|
||||||
$data = $data['product'];
|
$data = $data['product'];
|
||||||
|
|
||||||
// Check permissions
|
// Check permissions.
|
||||||
if ( ! current_user_can( 'publish_products' ) ) {
|
if ( ! current_user_can( 'publish_products' ) ) {
|
||||||
throw new WC_API_Exception( 'woocommerce_api_user_cannot_create_product', __( 'You do not have permission to create products', 'woocommerce' ), 401 );
|
throw new WC_API_Exception( 'woocommerce_api_user_cannot_create_product', __( 'You do not have permission to create products', 'woocommerce' ), 401 );
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = apply_filters( 'woocommerce_api_create_product_data', $data, $this );
|
$data = apply_filters( 'woocommerce_api_create_product_data', $data, $this );
|
||||||
|
|
||||||
// Check if product title is specified
|
// Check if product title is specified.
|
||||||
if ( ! isset( $data['title'] ) ) {
|
if ( ! isset( $data['title'] ) ) {
|
||||||
throw new WC_API_Exception( 'woocommerce_api_missing_product_title', sprintf( __( 'Missing parameter %s', 'woocommerce' ), 'title' ), 400 );
|
throw new WC_API_Exception( 'woocommerce_api_missing_product_title', sprintf( __( 'Missing parameter %s', 'woocommerce' ), 'title' ), 400 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check product type
|
// Check product type.
|
||||||
if ( ! isset( $data['type'] ) ) {
|
if ( ! isset( $data['type'] ) ) {
|
||||||
$data['type'] = 'simple';
|
$data['type'] = 'simple';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set visible visibility when not sent
|
// Set visible visibility when not sent.
|
||||||
if ( ! isset( $data['catalog_visibility'] ) ) {
|
if ( ! isset( $data['catalog_visibility'] ) ) {
|
||||||
$data['catalog_visibility'] = 'visible';
|
$data['catalog_visibility'] = 'visible';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate the product type
|
// Validate the product type.
|
||||||
if ( ! in_array( wc_clean( $data['type'] ), array_keys( wc_get_product_types() ) ) ) {
|
if ( ! in_array( wc_clean( $data['type'] ), array_keys( wc_get_product_types() ) ) ) {
|
||||||
throw new WC_API_Exception( 'woocommerce_api_invalid_product_type', sprintf( __( 'Invalid product type - the product type must be any of these: %s', 'woocommerce' ), implode( ', ', array_keys( wc_get_product_types() ) ) ), 400 );
|
throw new WC_API_Exception( 'woocommerce_api_invalid_product_type', sprintf( __( 'Invalid product type - the product type must be any of these: %s', 'woocommerce' ), implode( ', ', array_keys( wc_get_product_types() ) ) ), 400 );
|
||||||
}
|
}
|
||||||
|
@ -299,44 +299,45 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
|
|
||||||
$new_product = array(
|
$new_product = array(
|
||||||
'post_title' => wc_clean( $data['title'] ),
|
'post_title' => wc_clean( $data['title'] ),
|
||||||
'post_status' => ( isset( $data['status'] ) ? wc_clean( $data['status'] ) : 'publish' ),
|
'post_status' => isset( $data['status'] ) ? wc_clean( $data['status'] ) : 'publish',
|
||||||
'post_type' => 'product',
|
'post_type' => 'product',
|
||||||
'post_excerpt' => ( isset( $data['short_description'] ) ? $post_excerpt : '' ),
|
'post_excerpt' => isset( $data['short_description'] ) ? $post_excerpt : '',
|
||||||
'post_content' => ( isset( $data['description'] ) ? $post_content : '' ),
|
'post_content' => isset( $data['description'] ) ? $post_content : '',
|
||||||
'post_author' => get_current_user_id(),
|
'post_author' => get_current_user_id(),
|
||||||
|
'menu_order' => isset( $data['menu_order'] ) ? intval( $data['menu_order'] ) : 0,
|
||||||
);
|
);
|
||||||
|
|
||||||
// Attempts to create the new product
|
// Attempts to create the new product.
|
||||||
$id = wp_insert_post( $new_product, true );
|
$id = wp_insert_post( $new_product, true );
|
||||||
|
|
||||||
// Checks for an error in the product creation
|
// Checks for an error in the product creation.
|
||||||
if ( is_wp_error( $id ) ) {
|
if ( is_wp_error( $id ) ) {
|
||||||
throw new WC_API_Exception( 'woocommerce_api_cannot_create_product', $id->get_error_message(), 400 );
|
throw new WC_API_Exception( 'woocommerce_api_cannot_create_product', $id->get_error_message(), 400 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for featured/gallery images, upload it and set it
|
// Check for featured/gallery images, upload it and set it.
|
||||||
if ( isset( $data['images'] ) ) {
|
if ( isset( $data['images'] ) ) {
|
||||||
$this->save_product_images( $id, $data['images'] );
|
$this->save_product_images( $id, $data['images'] );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save product meta fields
|
// Save product meta fields.
|
||||||
$this->save_product_meta( $id, $data );
|
$this->save_product_meta( $id, $data );
|
||||||
|
|
||||||
// Save variations
|
// Save variations.
|
||||||
if ( isset( $data['type'] ) && 'variable' == $data['type'] && isset( $data['variations'] ) && is_array( $data['variations'] ) ) {
|
if ( isset( $data['type'] ) && 'variable' == $data['type'] && isset( $data['variations'] ) && is_array( $data['variations'] ) ) {
|
||||||
$this->save_variations( $id, $data );
|
$this->save_variations( $id, $data );
|
||||||
}
|
}
|
||||||
|
|
||||||
do_action( 'woocommerce_api_create_product', $id, $data );
|
do_action( 'woocommerce_api_create_product', $id, $data );
|
||||||
|
|
||||||
// Clear cache/transients
|
// Clear cache/transients.
|
||||||
wc_delete_product_transients( $id );
|
wc_delete_product_transients( $id );
|
||||||
|
|
||||||
$this->server->send_status( 201 );
|
$this->server->send_status( 201 );
|
||||||
|
|
||||||
return $this->get_product( $id );
|
return $this->get_product( $id );
|
||||||
} catch ( WC_API_Exception $e ) {
|
} catch ( WC_API_Exception $e ) {
|
||||||
// Remove the product when fails
|
// Remove the product when fails.
|
||||||
$this->clear_product( $id );
|
$this->clear_product( $id );
|
||||||
|
|
||||||
return new WP_Error( $e->getErrorCode(), $e->getMessage(), array( 'status' => $e->getCode() ) );
|
return new WP_Error( $e->getErrorCode(), $e->getMessage(), array( 'status' => $e->getCode() ) );
|
||||||
|
@ -398,20 +399,25 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
wp_update_post( array( 'ID' => $id, 'post_content' => $post_content ) );
|
wp_update_post( array( 'ID' => $id, 'post_content' => $post_content ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate the product type
|
// Menu order.
|
||||||
|
if ( isset( $data['menu_order'] ) ) {
|
||||||
|
wp_update_post( array( 'ID' => $id, 'menu_order' => intval( $data['menu_order'] ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate the product type.
|
||||||
if ( isset( $data['type'] ) && ! in_array( wc_clean( $data['type'] ), array_keys( wc_get_product_types() ) ) ) {
|
if ( isset( $data['type'] ) && ! in_array( wc_clean( $data['type'] ), array_keys( wc_get_product_types() ) ) ) {
|
||||||
throw new WC_API_Exception( 'woocommerce_api_invalid_product_type', sprintf( __( 'Invalid product type - the product type must be any of these: %s', 'woocommerce' ), implode( ', ', array_keys( wc_get_product_types() ) ) ), 400 );
|
throw new WC_API_Exception( 'woocommerce_api_invalid_product_type', sprintf( __( 'Invalid product type - the product type must be any of these: %s', 'woocommerce' ), implode( ', ', array_keys( wc_get_product_types() ) ) ), 400 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for featured/gallery images, upload it and set it
|
// Check for featured/gallery images, upload it and set it.
|
||||||
if ( isset( $data['images'] ) ) {
|
if ( isset( $data['images'] ) ) {
|
||||||
$this->save_product_images( $id, $data['images'] );
|
$this->save_product_images( $id, $data['images'] );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save product meta fields
|
// Save product meta fields.
|
||||||
$this->save_product_meta( $id, $data );
|
$this->save_product_meta( $id, $data );
|
||||||
|
|
||||||
// Save variations
|
// Save variations.
|
||||||
$product = get_product( $id );
|
$product = get_product( $id );
|
||||||
if ( $product->is_type( 'variable' ) ) {
|
if ( $product->is_type( 'variable' ) ) {
|
||||||
if ( isset( $data['variations'] ) && is_array( $data['variations'] ) ) {
|
if ( isset( $data['variations'] ) && is_array( $data['variations'] ) ) {
|
||||||
|
@ -424,7 +430,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
|
|
||||||
do_action( 'woocommerce_api_edit_product', $id, $data );
|
do_action( 'woocommerce_api_edit_product', $id, $data );
|
||||||
|
|
||||||
// Clear cache/transients
|
// Clear cache/transients.
|
||||||
wc_delete_product_transients( $id );
|
wc_delete_product_transients( $id );
|
||||||
|
|
||||||
return $this->get_product( $id );
|
return $this->get_product( $id );
|
||||||
|
@ -1143,6 +1149,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
'variations' => array(),
|
'variations' => array(),
|
||||||
'parent' => array(),
|
'parent' => array(),
|
||||||
'grouped_products' => array(),
|
'grouped_products' => array(),
|
||||||
|
'menu_order' => $product->post->menu_order,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1231,7 +1238,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save product meta
|
* Save product meta.
|
||||||
*
|
*
|
||||||
* @since 2.2
|
* @since 2.2
|
||||||
* @param int $product_id
|
* @param int $product_id
|
||||||
|
@ -1242,7 +1249,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
protected function save_product_meta( $product_id, $data ) {
|
protected function save_product_meta( $product_id, $data ) {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
|
|
||||||
// Product Type
|
// Product Type.
|
||||||
$product_type = null;
|
$product_type = null;
|
||||||
if ( isset( $data['type'] ) ) {
|
if ( isset( $data['type'] ) ) {
|
||||||
$product_type = wc_clean( $data['type'] );
|
$product_type = wc_clean( $data['type'] );
|
||||||
|
@ -1255,40 +1262,40 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Virtual
|
// Virtual.
|
||||||
if ( isset( $data['virtual'] ) ) {
|
if ( isset( $data['virtual'] ) ) {
|
||||||
update_post_meta( $product_id, '_virtual', ( true === $data['virtual'] ) ? 'yes' : 'no' );
|
update_post_meta( $product_id, '_virtual', ( true === $data['virtual'] ) ? 'yes' : 'no' );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tax status
|
// Tax status.
|
||||||
if ( isset( $data['tax_status'] ) ) {
|
if ( isset( $data['tax_status'] ) ) {
|
||||||
update_post_meta( $product_id, '_tax_status', wc_clean( $data['tax_status'] ) );
|
update_post_meta( $product_id, '_tax_status', wc_clean( $data['tax_status'] ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tax Class
|
// Tax Class.
|
||||||
if ( isset( $data['tax_class'] ) ) {
|
if ( isset( $data['tax_class'] ) ) {
|
||||||
update_post_meta( $product_id, '_tax_class', wc_clean( $data['tax_class'] ) );
|
update_post_meta( $product_id, '_tax_class', wc_clean( $data['tax_class'] ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Catalog Visibility
|
// Catalog Visibility.
|
||||||
if ( isset( $data['catalog_visibility'] ) ) {
|
if ( isset( $data['catalog_visibility'] ) ) {
|
||||||
update_post_meta( $product_id, '_visibility', wc_clean( $data['catalog_visibility'] ) );
|
update_post_meta( $product_id, '_visibility', wc_clean( $data['catalog_visibility'] ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Purchase Note
|
// Purchase Note.
|
||||||
if ( isset( $data['purchase_note'] ) ) {
|
if ( isset( $data['purchase_note'] ) ) {
|
||||||
update_post_meta( $product_id, '_purchase_note', wc_clean( $data['purchase_note'] ) );
|
update_post_meta( $product_id, '_purchase_note', wc_clean( $data['purchase_note'] ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Featured Product
|
// Featured Product.
|
||||||
if ( isset( $data['featured'] ) ) {
|
if ( isset( $data['featured'] ) ) {
|
||||||
update_post_meta( $product_id, '_featured', ( true === $data['featured'] ) ? 'yes' : 'no' );
|
update_post_meta( $product_id, '_featured', ( true === $data['featured'] ) ? 'yes' : 'no' );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shipping data
|
// Shipping data.
|
||||||
$this->save_product_shipping_data( $product_id, $data );
|
$this->save_product_shipping_data( $product_id, $data );
|
||||||
|
|
||||||
// SKU
|
// SKU.
|
||||||
if ( isset( $data['sku'] ) ) {
|
if ( isset( $data['sku'] ) ) {
|
||||||
$sku = get_post_meta( $product_id, '_sku', true );
|
$sku = get_post_meta( $product_id, '_sku', true );
|
||||||
$new_sku = wc_clean( $data['sku'] );
|
$new_sku = wc_clean( $data['sku'] );
|
||||||
|
@ -1309,7 +1316,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Attributes
|
// Attributes.
|
||||||
if ( isset( $data['attributes'] ) ) {
|
if ( isset( $data['attributes'] ) ) {
|
||||||
$attributes = array();
|
$attributes = array();
|
||||||
|
|
||||||
|
@ -1338,7 +1345,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
$options = $attribute['options'];
|
$options = $attribute['options'];
|
||||||
|
|
||||||
if ( ! is_array( $attribute['options'] ) ) {
|
if ( ! is_array( $attribute['options'] ) ) {
|
||||||
// Text based attributes - Posted values are term names
|
// Text based attributes - Posted values are term names.
|
||||||
$options = explode( WC_DELIMITER, $options );
|
$options = explode( WC_DELIMITER, $options );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1348,13 +1355,13 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
$values = array();
|
$values = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update post terms
|
// Update post terms.
|
||||||
if ( taxonomy_exists( $taxonomy ) ) {
|
if ( taxonomy_exists( $taxonomy ) ) {
|
||||||
wp_set_object_terms( $product_id, $values, $taxonomy );
|
wp_set_object_terms( $product_id, $values, $taxonomy );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $values ) {
|
if ( $values ) {
|
||||||
// Add attribute to array, but don't set values
|
// Add attribute to array, but don't set values.
|
||||||
$attributes[ $taxonomy ] = array(
|
$attributes[ $taxonomy ] = array(
|
||||||
'name' => $taxonomy,
|
'name' => $taxonomy,
|
||||||
'value' => '',
|
'value' => '',
|
||||||
|
@ -1366,16 +1373,16 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
}
|
}
|
||||||
|
|
||||||
} elseif ( isset( $attribute['options'] ) ) {
|
} elseif ( isset( $attribute['options'] ) ) {
|
||||||
// Array based
|
// Array based.
|
||||||
if ( is_array( $attribute['options'] ) ) {
|
if ( is_array( $attribute['options'] ) ) {
|
||||||
$values = implode( ' ' . WC_DELIMITER . ' ', array_map( 'wc_clean', $attribute['options'] ) );
|
$values = implode( ' ' . WC_DELIMITER . ' ', array_map( 'wc_clean', $attribute['options'] ) );
|
||||||
|
|
||||||
// Text based, separate by pipe
|
// Text based, separate by pipe.
|
||||||
} else {
|
} else {
|
||||||
$values = implode( ' ' . WC_DELIMITER . ' ', array_map( 'wc_clean', explode( WC_DELIMITER, $attribute['options'] ) ) );
|
$values = implode( ' ' . WC_DELIMITER . ' ', array_map( 'wc_clean', explode( WC_DELIMITER, $attribute['options'] ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Custom attribute - Add attribute to array and set the values
|
// Custom attribute - Add attribute to array and set the values.
|
||||||
$attributes[ $attribute_slug ] = array(
|
$attributes[ $attribute_slug ] = array(
|
||||||
'name' => wc_clean( $attribute['name'] ),
|
'name' => wc_clean( $attribute['name'] ),
|
||||||
'value' => $values,
|
'value' => $values,
|
||||||
|
@ -1401,10 +1408,10 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
update_post_meta( $product_id, '_product_attributes', $attributes );
|
update_post_meta( $product_id, '_product_attributes', $attributes );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sales and prices
|
// Sales and prices.
|
||||||
if ( in_array( $product_type, array( 'variable', 'grouped' ) ) ) {
|
if ( in_array( $product_type, array( 'variable', 'grouped' ) ) ) {
|
||||||
|
|
||||||
// Variable and grouped products have no prices
|
// Variable and grouped products have no prices.
|
||||||
update_post_meta( $product_id, '_regular_price', '' );
|
update_post_meta( $product_id, '_regular_price', '' );
|
||||||
update_post_meta( $product_id, '_sale_price', '' );
|
update_post_meta( $product_id, '_sale_price', '' );
|
||||||
update_post_meta( $product_id, '_sale_price_dates_from', '' );
|
update_post_meta( $product_id, '_sale_price_dates_from', '' );
|
||||||
|
@ -1413,7 +1420,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// Regular Price
|
// Regular Price.
|
||||||
if ( isset( $data['regular_price'] ) ) {
|
if ( isset( $data['regular_price'] ) ) {
|
||||||
$regular_price = ( '' === $data['regular_price'] ) ? '' : wc_format_decimal( $data['regular_price'] );
|
$regular_price = ( '' === $data['regular_price'] ) ? '' : wc_format_decimal( $data['regular_price'] );
|
||||||
update_post_meta( $product_id, '_regular_price', $regular_price );
|
update_post_meta( $product_id, '_regular_price', $regular_price );
|
||||||
|
@ -1421,7 +1428,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
$regular_price = get_post_meta( $product_id, '_regular_price', true );
|
$regular_price = get_post_meta( $product_id, '_regular_price', true );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sale Price
|
// Sale Price.
|
||||||
if ( isset( $data['sale_price'] ) ) {
|
if ( isset( $data['sale_price'] ) ) {
|
||||||
$sale_price = ( '' === $data['sale_price'] ) ? '' : wc_format_decimal( $data['sale_price'] );
|
$sale_price = ( '' === $data['sale_price'] ) ? '' : wc_format_decimal( $data['sale_price'] );
|
||||||
update_post_meta( $product_id, '_sale_price', $sale_price );
|
update_post_meta( $product_id, '_sale_price', $sale_price );
|
||||||
|
@ -1450,7 +1457,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
update_post_meta( $product_id, '_sale_price_dates_from', $date_from );
|
update_post_meta( $product_id, '_sale_price_dates_from', $date_from );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update price if on sale
|
// Update price if on sale.
|
||||||
if ( '' !== $sale_price && '' == $date_to && '' == $date_from ) {
|
if ( '' !== $sale_price && '' == $date_to && '' == $date_from ) {
|
||||||
update_post_meta( $product_id, '_price', wc_format_decimal( $sale_price ) );
|
update_post_meta( $product_id, '_price', wc_format_decimal( $sale_price ) );
|
||||||
} else {
|
} else {
|
||||||
|
@ -1468,12 +1475,12 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Product parent ID for groups
|
// Product parent ID for groups.
|
||||||
if ( isset( $data['parent_id'] ) ) {
|
if ( isset( $data['parent_id'] ) ) {
|
||||||
wp_update_post( array( 'ID' => $product_id, 'post_parent' => absint( $data['parent_id'] ) ) );
|
wp_update_post( array( 'ID' => $product_id, 'post_parent' => absint( $data['parent_id'] ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update parent if grouped so price sorting works and stays in sync with the cheapest child
|
// Update parent if grouped so price sorting works and stays in sync with the cheapest child.
|
||||||
$_product = wc_get_product( $product_id );
|
$_product = wc_get_product( $product_id );
|
||||||
if ( $_product->post->post_parent > 0 || $product_type == 'grouped' ) {
|
if ( $_product->post->post_parent > 0 || $product_type == 'grouped' ) {
|
||||||
|
|
||||||
|
@ -1510,12 +1517,12 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sold Individually
|
// Sold Individually.
|
||||||
if ( isset( $data['sold_individually'] ) ) {
|
if ( isset( $data['sold_individually'] ) ) {
|
||||||
update_post_meta( $product_id, '_sold_individually', ( true === $data['sold_individually'] ) ? 'yes' : '' );
|
update_post_meta( $product_id, '_sold_individually', ( true === $data['sold_individually'] ) ? 'yes' : '' );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stock status
|
// Stock status.
|
||||||
if ( isset( $data['in_stock'] ) ) {
|
if ( isset( $data['in_stock'] ) ) {
|
||||||
$stock_status = ( true === $data['in_stock'] ) ? 'instock' : 'outofstock';
|
$stock_status = ( true === $data['in_stock'] ) ? 'instock' : 'outofstock';
|
||||||
} else {
|
} else {
|
||||||
|
@ -1526,9 +1533,9 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stock Data
|
// Stock Data.
|
||||||
if ( 'yes' == get_option( 'woocommerce_manage_stock' ) ) {
|
if ( 'yes' == get_option( 'woocommerce_manage_stock' ) ) {
|
||||||
// Manage stock
|
// Manage stock.
|
||||||
if ( isset( $data['managing_stock'] ) ) {
|
if ( isset( $data['managing_stock'] ) ) {
|
||||||
$managing_stock = ( true === $data['managing_stock'] ) ? 'yes' : 'no';
|
$managing_stock = ( true === $data['managing_stock'] ) ? 'yes' : 'no';
|
||||||
update_post_meta( $product_id, '_manage_stock', $managing_stock );
|
update_post_meta( $product_id, '_manage_stock', $managing_stock );
|
||||||
|
@ -1536,7 +1543,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
$managing_stock = get_post_meta( $product_id, '_manage_stock', true );
|
$managing_stock = get_post_meta( $product_id, '_manage_stock', true );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Backorders
|
// Backorders.
|
||||||
if ( isset( $data['backorders'] ) ) {
|
if ( isset( $data['backorders'] ) ) {
|
||||||
if ( 'notify' == $data['backorders'] ) {
|
if ( 'notify' == $data['backorders'] ) {
|
||||||
$backorders = 'notify';
|
$backorders = 'notify';
|
||||||
|
@ -1570,7 +1577,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
|
|
||||||
wc_update_product_stock_status( $product_id, $stock_status );
|
wc_update_product_stock_status( $product_id, $stock_status );
|
||||||
|
|
||||||
// Stock quantity
|
// Stock quantity.
|
||||||
if ( isset( $data['stock_quantity'] ) ) {
|
if ( isset( $data['stock_quantity'] ) ) {
|
||||||
wc_update_product_stock( $product_id, wc_stock_amount( $data['stock_quantity'] ) );
|
wc_update_product_stock( $product_id, wc_stock_amount( $data['stock_quantity'] ) );
|
||||||
} else if ( isset( $data['inventory_delta'] ) ) {
|
} else if ( isset( $data['inventory_delta'] ) ) {
|
||||||
|
@ -1581,7 +1588,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// Don't manage stock
|
// Don't manage stock.
|
||||||
update_post_meta( $product_id, '_manage_stock', 'no' );
|
update_post_meta( $product_id, '_manage_stock', 'no' );
|
||||||
update_post_meta( $product_id, '_backorders', $backorders );
|
update_post_meta( $product_id, '_backorders', $backorders );
|
||||||
update_post_meta( $product_id, '_stock', '' );
|
update_post_meta( $product_id, '_stock', '' );
|
||||||
|
@ -1593,7 +1600,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
wc_update_product_stock_status( $product_id, $stock_status );
|
wc_update_product_stock_status( $product_id, $stock_status );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Upsells
|
// Upsells.
|
||||||
if ( isset( $data['upsell_ids'] ) ) {
|
if ( isset( $data['upsell_ids'] ) ) {
|
||||||
$upsells = array();
|
$upsells = array();
|
||||||
$ids = $data['upsell_ids'];
|
$ids = $data['upsell_ids'];
|
||||||
|
@ -1611,7 +1618,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cross sells
|
// Cross sells.
|
||||||
if ( isset( $data['cross_sell_ids'] ) ) {
|
if ( isset( $data['cross_sell_ids'] ) ) {
|
||||||
$crosssells = array();
|
$crosssells = array();
|
||||||
$ids = $data['cross_sell_ids'];
|
$ids = $data['cross_sell_ids'];
|
||||||
|
@ -1629,19 +1636,19 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Product categories
|
// Product categories.
|
||||||
if ( isset( $data['categories'] ) && is_array( $data['categories'] ) ) {
|
if ( isset( $data['categories'] ) && is_array( $data['categories'] ) ) {
|
||||||
$term_ids = array_unique( array_map( 'intval', $data['categories'] ) );
|
$term_ids = array_unique( array_map( 'intval', $data['categories'] ) );
|
||||||
wp_set_object_terms( $product_id, $term_ids, 'product_cat' );
|
wp_set_object_terms( $product_id, $term_ids, 'product_cat' );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Product tags
|
// Product tags.
|
||||||
if ( isset( $data['tags'] ) && is_array( $data['tags'] ) ) {
|
if ( isset( $data['tags'] ) && is_array( $data['tags'] ) ) {
|
||||||
$term_ids = array_unique( array_map( 'intval', $data['tags'] ) );
|
$term_ids = array_unique( array_map( 'intval', $data['tags'] ) );
|
||||||
wp_set_object_terms( $product_id, $term_ids, 'product_tag' );
|
wp_set_object_terms( $product_id, $term_ids, 'product_tag' );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Downloadable
|
// Downloadable.
|
||||||
if ( isset( $data['downloadable'] ) ) {
|
if ( isset( $data['downloadable'] ) ) {
|
||||||
$is_downloadable = ( true === $data['downloadable'] ) ? 'yes' : 'no';
|
$is_downloadable = ( true === $data['downloadable'] ) ? 'yes' : 'no';
|
||||||
update_post_meta( $product_id, '_downloadable', $is_downloadable );
|
update_post_meta( $product_id, '_downloadable', $is_downloadable );
|
||||||
|
@ -1649,31 +1656,31 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
$is_downloadable = get_post_meta( $product_id, '_downloadable', true );
|
$is_downloadable = get_post_meta( $product_id, '_downloadable', true );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Downloadable options
|
// Downloadable options.
|
||||||
if ( 'yes' == $is_downloadable ) {
|
if ( 'yes' == $is_downloadable ) {
|
||||||
|
|
||||||
// Downloadable files
|
// Downloadable files.
|
||||||
if ( isset( $data['downloads'] ) && is_array( $data['downloads'] ) ) {
|
if ( isset( $data['downloads'] ) && is_array( $data['downloads'] ) ) {
|
||||||
$this->save_downloadable_files( $product_id, $data['downloads'] );
|
$this->save_downloadable_files( $product_id, $data['downloads'] );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Download limit
|
// Download limit.
|
||||||
if ( isset( $data['download_limit'] ) ) {
|
if ( isset( $data['download_limit'] ) ) {
|
||||||
update_post_meta( $product_id, '_download_limit', ( '' === $data['download_limit'] ) ? '' : absint( $data['download_limit'] ) );
|
update_post_meta( $product_id, '_download_limit', ( '' === $data['download_limit'] ) ? '' : absint( $data['download_limit'] ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Download expiry
|
// Download expiry.
|
||||||
if ( isset( $data['download_expiry'] ) ) {
|
if ( isset( $data['download_expiry'] ) ) {
|
||||||
update_post_meta( $product_id, '_download_expiry', ( '' === $data['download_expiry'] ) ? '' : absint( $data['download_expiry'] ) );
|
update_post_meta( $product_id, '_download_expiry', ( '' === $data['download_expiry'] ) ? '' : absint( $data['download_expiry'] ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Download type
|
// Download type.
|
||||||
if ( isset( $data['download_type'] ) ) {
|
if ( isset( $data['download_type'] ) ) {
|
||||||
update_post_meta( $product_id, '_download_type', wc_clean( $data['download_type'] ) );
|
update_post_meta( $product_id, '_download_type', wc_clean( $data['download_type'] ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Product url
|
// Product url.
|
||||||
if ( $product_type == 'external' ) {
|
if ( $product_type == 'external' ) {
|
||||||
if ( isset( $data['product_url'] ) ) {
|
if ( isset( $data['product_url'] ) ) {
|
||||||
update_post_meta( $product_id, '_product_url', wc_clean( $data['product_url'] ) );
|
update_post_meta( $product_id, '_product_url', wc_clean( $data['product_url'] ) );
|
||||||
|
@ -1684,7 +1691,7 @@ class WC_API_Products extends WC_API_Resource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reviews allowed
|
// Reviews allowed.
|
||||||
if ( isset( $data['reviews_allowed'] ) ) {
|
if ( isset( $data['reviews_allowed'] ) ) {
|
||||||
$reviews_allowed = ( true === $data['reviews_allowed'] ) ? 'open' : 'closed';
|
$reviews_allowed = ( true === $data['reviews_allowed'] ) ? 'open' : 'closed';
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue