woocommerce
最近在给公司做一个外贸商城 主要用到的框架是WordPress+woocommerce 由于之前公司已经有了 不过由于php版本太低和界面UI不好等原因 需要重新开发一个,所以在网上找了找还是选择了WordPress。
First blood
第一步就是需要先讲数据导入新的数据库中:
- 利用内部函数
- csv导入数据
利用内部函数
No.1:将数据导入post表[1]
$user_id = get_current_user_id();
$product = array(
'post_author' => $user_id,
'post_date' => date('Y-m-d h:i:s'),
'post_data_gmt' => gmdate('Y-m-d h:i:s'),
'post_connect' => '',
'post_connect_filtered' => '',
'post_title' => '商品标题',
'post_excerpt' => '',
'post_type' => 'product',
'post_status' => 'publish',
'post_name' => 商品名称,
'post_modified' => date('Y-m-d h:i:s'),
'post_modified_gmt' => gmdate('Y-m-d h:i:s'),
'guid' => 'http://chutetest.test/?post_type=product&p=''',
);
$post_id= wp_insert_post($product, $wp_error = true, $fire_after_hooks = true);
add_metadata($meta_type, $post_id, '_' . $v_key, $v_val);
No.2:添加分类
$parent_arr = wp_insert_term(__($parent_cate_val->name), 'product_cat', $parent_cate_data);
foreach ($sub_cate as $sub_cate_val) {
$sub_cate_data = array(
'alias_of' => $sub_cate_val->sub_cate,
'parent' => $parent_arr['term_id']
);
$sub_arr = wp_insert_term(__($sub_cate_val->sub_cate), 'product_cat', $sub_cate_data);
}
这个用了之后效果还是很好的,不过还有有些不好的就是得敲很多的代码 为了解放双手我的建议是使用第二个方法
利用wp自带的工具
我们可以使用WordPress自带的import功能导入数据
注意 文件必须是csv文件
当你选择好对应的csv文件之后点击提交 你会看见这样的画面:
如果说你的csv文件和这个匹配的话就会完美的匹配好 如果有一些数据不匹配的话 需要自己在重新选择 就在右边的红色框框中选择 有时候你会发现有些你需要的标签并不在这里边 不过不需要担心 因为 WordPress有函数可以实现你所需要的东西
就在这个这地址
为了方便看我截取了这一部分代码
function add_column_to_importer( $options ) {
$options['custom_column'] = 'Custom Column';
return $options;
}
add_filter( 'woocommerce_csv_product_import_mapping_options', 'add_column_to_importer' );
function add_column_to_mapping_screen( $columns ) {
$columns['Custom Column'] = 'custom_column';
$columns['custom column'] = 'custom_column';
return $columns;
}
add_filter( 'woocommerce_csv_product_import_mapping_default_columns', 'add_column_to_mapping_screen' );
function process_import( $object, $data ) {
if ( ! empty( $data['custom_column'] ) ) {
$object->update_meta_data( 'custom_column', $data['custom_column'] );
}
return $object;
}
add_filter( 'woocommerce_product_import_pre_insert_product_object', 'process_import', 10, 2 );
当然 你的csv文件还是有别的其他要求的 如果你的属性好好多的话你会发现 不知道该怎么选择 所以这里就要在你生成csv文件之前处理一下你的数据了 我是这样处理的 (其中也包含了我添加的一些别的列)仅供参考 当然也欢迎大佬指出错误 我好改进
if($value['format'] == 'Plat' ){
$value['Epaisseur'] = $value['diameter'];
$value['Diameter_Largrue_Cote'] = $value['width'];
$value['Longueur'] = $value['length'];
}else{
$value['Epaisseur'] = $value['width'];
$value['Diameter_Largrue_Cote'] = $value['diameter'];
$value['Longueur'] = $value['length'];
}
$value['Categories'] = $value['parents'].'>'.$value['designation'];
$value['Tags'] = $value['format'];
$value['Stock'] = 1;
$value['Sold individually?'] = 1;
$value['Attribute 0 name'] = 'Format';
$value['Attribute 0 value(s)'] = $value['format'];
$value['Attribute 0 global'] = 1;
$value['Attribute 1 name'] = 'AFNOR';
$value['Attribute 1 value(s)'] = $value['AFNOR'];
$value['Attribute 1 global'] = 1;
$value['Attribute 2 name'] = 'Euronorme';
$value['Attribute 2 value(s)'] = $value['Euronorme'];
$value['Attribute 2 global'] = 1;
$value['Attribute 3 name'] = 'NF';
$value['Attribute 3 value(s)'] = $value['NF'];
$value['Attribute 3 global'] = 1;
这样子你在前面就将数据处理好 可以节省一大部分的时间 我就是在处理数据上没有弄好 返工了好几回才好
|