false, 'query_var' => true, 'rewrite' => false, 'public' => true, // 'capabilities' => array( // 'manage_terms' => 'manage_wiaas_package_price_terms', // 'edit_terms' => 'edit_wiaas_package_price_terms', // 'delete_terms' => 'delete_wiaas_package_price_terms', // 'assign_terms' => 'assign_wiaas_package_price_terms', // ), ); register_taxonomy( '_wiaas_shop_prices', array( 'product' ), $args ); } /** * Relate pricing search terms to package so customer can retrieve packages with default or * their own specific prices. * (ex: Package which will be hidden fro Customer 1 because default price * is hidden can be visible for Customer 2 because specific prices are set for that customer) * * @param int $owner_id * @param int $package_id * @param array $cl_extras { * $extra_price_payment_type => { * @type bool visible Indicates if payment type is visible to customer * } * } * @param array $old_cl_extras { * $extra_price_payment_type => { * @type bool visible Indicates if payment type is visible to customer * } * } */ public static function update_package_prices_search_terms($owner_id, $package_id, $cl_extras, $old_cl_extras) { // remove pricing terms for previous prices if (! empty($old_cl_extras)) { $old_visible_price_types = array_keys(wp_list_filter($old_cl_extras, array( 'visible' => true ))); $old_terms_names = preg_filter('/^/', '_' . $owner_id . '_', $old_visible_price_types); wp_remove_object_terms($package_id, $old_terms_names, '_wiaas_shop_prices'); } // get visible price types set by shop owner (commercial lead) $visible_price_types = array_keys(wp_list_filter($cl_extras, array('visible' => true))); $new_terms_names = preg_filter('/^/', '_' . $owner_id . '_', $visible_price_types); // create term for every visible pricing type and link them to package so package can be queried wp_add_object_terms($package_id, $new_terms_names, '_wiaas_shop_prices'); } // PRIVATE private static function _maybe_create_shop($owner_id) { $shop_name = 'wiaas_shop_' . $owner_id; $attribute_id = wc_attribute_taxonomy_id_by_name($shop_name); if ($attribute_id === 0) { // create shop attribute wc_create_attribute(array( 'slug' => $shop_name, 'name' => 'Catalogue' )); $taxonomy_name = wc_attribute_taxonomy_name($shop_name); register_taxonomy($taxonomy_name, array('product')); // add default catalogue option to shop attribute wp_insert_term( 'Default', $taxonomy_name); } } private static function _maybe_remove_shop($owner_id) { // get corresponding attribute for shop $attribute_id = wc_attribute_taxonomy_id_by_name('wiaas_shop_' . $owner_id); // if shop attribute exists then remove it if ($attribute_id > 0) { wc_delete_attribute($attribute_id); } } } Wiaas_Shop::init();