IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 2021-09-10 -> 正文阅读

[PHP知识库]2021-09-10

woocommerce

最近在给公司做一个外贸商城 主要用到的框架是WordPress+woocommerce 由于之前公司已经有了 不过由于php版本太低和界面UI不好等原因 需要重新开发一个,所以在网上找了找还是选择了WordPress。

First blood

第一步就是需要先讲数据导入新的数据库中:

  1. 利用内部函数
  2. csv导入数据

利用内部函数

No.1:将数据导入post表[1]


//$product是一个数组
$user_id = get_current_user_id();// 获取当前使用者的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',// 如果是导入商品的话 必须是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);
//如果成功返回值是post_ id  也就是添加进去的商品的id  失败返回wp_error

/**
 * @link: https://developer.wordpress.org/reference/functions/wp_insert_post/
 */
 add_metadata($meta_type, $post_id, '_' . $v_key, $v_val);
 /**
  * mate_type = post  以为数据是导入wp_postmeta表中
  * post_id  = wp_insert_post生成的post_id
  * $v_key是数据的键  $v_val是数据的值
  */

No.2:添加分类

	//先导入父类分类
	$parent_arr = wp_insert_term(__($parent_cate_val->name), 'product_cat', $parent_cate_data); // return a Array ( [term_id] =>  [term_taxonomy_id] =>  )返回值是一个数组
//__()是一个翻译函数
//wp_insert_term  数据插入terms表
//循环导入子分类  
 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); //return  array
 }

这个用了之后效果还是很好的,不过还有有些不好的就是得敲很多的代码 为了解放双手我的建议是使用第二个方法

利用wp自带的工具

我们可以使用WordPress自带的import功能导入数据

就是这个功能

注意
文件必须是csv文件

当你选择好对应的csv文件之后点击提交 你会看见这样的画面:
请添加图片描述

如果说你的csv文件和这个匹配的话就会完美的匹配好 如果有一些数据不匹配的话 需要自己在重新选择
请添加图片描述就在右边的红色框框中选择 有时候你会发现有些你需要的标签并不在这里边 不过不需要担心 因为 WordPress有函数可以实现你所需要的东西

就在这个这地址

为了方便看我截取了这一部分代码

/**
 * Register the 'Custom Column' column in the importer.
 *
 * @param array $options
 * @return array $options
 */
function add_column_to_importer( $options ) {

	// column slug => column name
	$options['custom_column'] = 'Custom Column';

	return $options;
}
add_filter( 'woocommerce_csv_product_import_mapping_options', 'add_column_to_importer' );

/**
 * Add automatic mapping support for 'Custom Column'. 
 * This will automatically select the correct mapping for columns named 'Custom Column' or 'custom column'.
 *
 * @param array $columns
 * @return array $columns
 */
function add_column_to_mapping_screen( $columns ) {
	
	// potential column name => column slug
	$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' );

/**
 * Process the data read from the CSV file.
 * This just saves the value in meta data, but you can do anything you want here with the data.
 *
 * @param WC_Product $object - Product being imported or updated.
 * @param array $data - CSV data read for the product.
 * @return WC_Product $object
 */
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;

这样子你在前面就将数据处理好 可以节省一大部分的时间 我就是在处理数据上没有弄好 返工了好几回才好

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 18:34:35  更:2021-09-11 18:35:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 20:26:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码