php - WooCommerce create new attributes programmatically -


how can create attributes woocommerce plugin? find :

wp_set_object_terms( $object_id, $terms, $taxonomy, $append); 

from this stack-question

but approach required id of product. need generate attributes not attached products.

to create term can use wp_insert_term()

like so:

wp_insert_term( 'red', 'pa_colors' ); 

where colors name of attribute. taxonomy name of attribute prepended pa_.

edit attributes merely custom taxonomies. or dynamic taxonomies manually created user in back-end. still same custom taxonomy rules apply.

you can see source code here loops through attributes , runs register_taxonomy() on each. create new attribute (remember taxonomy) need run register_taxonomy() , simple prepend pa_ start of taxonomy name.

mimicking of values of taxonomy args core, 'colors' attribute.

add_action( 'woocommerce_after_register_taxonomy', 'so_29549525_register_attribute' );  function so_29549525_register_attribute(){      $permalinks = get_option( 'woocommerce_permalinks' );      $taxonomy_data = array(                         'hierarchical'          => true,                         'update_count_callback' => '_update_post_term_count',                         'labels'                => array(                                 'name'              => 'colors',                                 'singular_name'     => 'color',                                 'search_items'      => sprintf( __( 'search %s', 'woocommerce' ), $label ),                                 'all_items'         => sprintf( __( 'all %s', 'woocommerce' ), $label ),                                 'parent_item'       => sprintf( __( 'parent %s', 'woocommerce' ), $label ),                                 'parent_item_colon' => sprintf( __( 'parent %s:', 'woocommerce' ), $label ),                                 'edit_item'         => sprintf( __( 'edit %s', 'woocommerce' ), $label ),                                 'update_item'       => sprintf( __( 'update %s', 'woocommerce' ), $label ),                                 'add_new_item'      => sprintf( __( 'add new %s', 'woocommerce' ), $label ),                                 'new_item_name'     => sprintf( __( 'new %s', 'woocommerce' ), $label )                             ),                         'show_ui'           => false,                         'query_var'         => true,                         'rewrite'           => array(                             'slug'         => empty( $permalinks['attribute_base'] ) ? '' : trailingslashit( $permalinks['attribute_base'] ) . sanitize_title( 'colors' ),                             'with_front'   => false,                             'hierarchical' => true                         ),                         'sort'              => false,                         'public'            => true,                         'show_in_nav_menus' => false,                         'capabilities'      => array(                             'manage_terms' => 'manage_product_terms',                             'edit_terms'   => 'edit_product_terms',                             'delete_terms' => 'delete_product_terms',                             'assign_terms' => 'assign_product_terms',                         )                     );      register_taxonomy( 'pa_colors', array( 'product' ) ), $taxonomy_data );  } 

Popular posts from this blog