我正在开发一个插件,用于在woocommerce上导入变量产品。
我正在尝试创建要使用的属性。所以,我使用这个函数来创建分类法
process_add_attribute(array('attribute_name' => 'color', 'attribute_label' => 'Color', 'attribute_type' => 'text', 'attribute_orderby' => 'menu_order', 'attribute_public' => false));
function process_add_attribute($attribute)
{
global $wpdb;
// check_admin_referer( 'woocommerce-add-new_attribute' );
if (empty($attribute['attribute_type'])) { $attribute['attribute_type'] = 'text';}
if (empty($attribute['attribute_orderby'])) { $attribute['attribute_orderby'] = 'menu_order';}
if (empty($attribute['attribute_public'])) { $attribute['attribute_public'] = 0;}
if ( empty( $attribute['attribute_name'] ) || empty( $attribute['attribute_label'] ) ) {
return new WP_Error( 'error', __( 'Please, provide an attribute name and slug.', 'woocommerce' ) );
} elseif ( ( $valid_attribute_name = valid_attribute_name( $attribute['attribute_name'] ) ) && is_wp_error( $valid_attribute_name ) ) {
return $valid_attribute_name;
} elseif ( taxonomy_exists( wc_attribute_taxonomy_name( $attribute['attribute_name'] ) ) ) {
return new WP_Error( 'error', sprintf( __( 'Slug "%s" is already in use. Change it, please.', 'woocommerce' ), sanitize_title( $attribute['attribute_name'] ) ) );
}
$wpdb->insert( $wpdb->prefix . 'woocommerce_attribute_taxonomies', $attribute );
do_action( 'woocommerce_attribute_added', $wpdb->insert_id, $attribute );
flush_rewrite_rules();
delete_transient( 'wc_attribute_taxonomies' );
return true;
}
这会创建分类法,我可以在Products-> Attributes中看到它们。 但是,如果我创建一个首先创建分类法的脚本,并且他们尝试使用以下内容为其添加术语(使用父产品):
$var test = wp_set_post_terms($post_id, $avail_color, 'pa_color', true);
其中$ post_id是最近创建的产品帖子的ID,$ avail_color是一个带有''red','blue'}的数组,'pa_color'是创建的分类的名称。
我第一次运行它时,文本给出了无效的分类错误。但如果我运行它两次它运行良好并将条款插入pa_color分类法。 (请注意,第二次运行脚本时,不会创建税,因为它已经退出)。
我正在考虑必须要做某种冲洗,但我找不到如何解决它......