Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- add_action( 'save_post_product', 'auto_add_product_attributes', 50, 3 );
- function auto_add_product_attributes( $post_id, $post, $update ) {
- ## --- Checking --- ##
- // Exit if it's an autosave
- if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
- return $post_id;
- // Exit if it's an update
- if( $update )
- return $post_id;
- // Exit if user is not allowed
- if ( ! current_user_can( 'edit_product', $post_id ) )
- return $post_id;
- ## --- The Settings for your product attributes --- ##
- $visible = ''; // can be: '' or '1'
- $variation = ''; // can be: '' or '1'
- ## --- The code --- ##
- // Get all existing product attributes
- global $wpdb;
- $attributes = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}woocommerce_attribute_taxonomies" );
- $position = 0; // Auto incremented position value starting at '0'
- $data = array(); // initialising (empty array)
- foreach( $attributes as $attribute ){
- // Get the correct taxonomy for product attributes
- $taxonomy = 'pa_'.$attribute->attribute_name;
- $attribute_id = $attribute->attribute_id;
- // Get all term Ids values for the current product attribute (array)
- $term_ids = get_terms(array('taxonomy' => $taxonomy, 'fields' => 'ids'));
- // Get an empty instance of the WC_Product_Attribute object
- $product_attribute = new WC_Product_Attribute();
- // Set the related data in the WC_Product_Attribute object
- $product_attribute->set_id( $attribute_id );
- $product_attribute->set_name( $taxonomy );
- $product_attribute->set_options( $term_ids );
- $product_attribute->set_position( $position );
- $product_attribute->set_visible( $visible );
- $product_attribute->set_variation( $variation );
- // Add the product WC_Product_Attribute object in the data array
- $data[$taxonomy] = $product_attribute;
- $position++; // Incrementing position
- }
- // Get an instance of the WC_Product object
- $product = wc_get_product( $post_id );
- // Set the array of WC_Product_Attribute objects in the product
- $product->set_attributes( $data );
- $product->save(); // Save the product
- }
Add Comment
Please, Sign In to add comment