每个属性至少选择一项

问题描述

嗨,我使用Dokan pro,我向Dokan pro添加了一些代码,以在“在供应商信息中心添加新产品”中显示产品属性,我希望用户每个属性至少使用一个术语

add_action('save_post','auto_add_product_attributes',50,3); 函数auto_add_product_attributes($ post_id,$ post,$ update){

## --- Checking --- ##

if ( $post->post_type != 'product') return; // Only products

// 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   = '1'; // 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)

// Loop through each exiting product attribute
foreach( $attributes as $attribute ){
    // Get the correct taxonomy for product attributes
    $taxonomy = 'pa_'.$attribute->attribute_name;
    $attribute_id = $attribute->attribute_id;

    // 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_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

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)