在WP All Import不断超时的情况下,如何将产品导入Woo Commerce

时间:2019-03-02 作者:J4G

我一直在使用WP All Import(不同程度的成功)将产品导入我的Woo Commerce网站。我的服务器一直超时并停止导入,这给我带来了困难,我没有太多运气就按照插件的官方建议进行了操作。我的导入分为约12个CSV文件,最大的有约100行。

是否有人有任何其他方法可以使用正确的变体向站点添加约400种产品?我考虑的一个解决方案是在本地运行我的站点,运行我的所有导入,然后用本地数据库替换我的live db,但我宁愿避免这种情况。。。

2 个回复
SO网友:hamdirizal

我假设您想在这里创建自己的导入插件。

由于在一个请求中导出所有产品,服务器可能超时。

因此,我将为该场景所做的是使用ajax导入。您可以使用ajax逐个存储产品,而不是尝试一次性保存所有数据。

SO网友:Elkrat

上载。将csv文件复制到服务器上,然后迭代这些条目,为Woocommerce API创建适当的数组。

像这样的。

$path = $_SERVER[\'DOCUMENT_ROOT\'];
require_once( $path.\'/wp-load.php\' );
$filepath = site_url()."/data/mybatchfile.csv";
$handle = fopen($filepath, "r") or die("Error opening file");

$i = 0;

while(($line = fgetcsv($handle)) !== FALSE) {
    if($i == 0) {
        $c = 0;
        foreach($line as $col) {
            $cols[$c] = $col;
            $c++;
        }
    } else if($i > 0) {
        $c = 0;
        foreach($line as $col) {
            $prod_data[$i][$cols[$c]] = $col;
            $c++;
        }
    }
    $i++;
}
fclose($handle);

foreach ($prod_data as $prod_row){
     $name = $prod_row["product_name"] // these are the column header names
     //get all the rest of your vars here
     $variation1SKU = $prod_row["first_variation_SKU"];
     $variation1name = $prod_row["first_variation_name"];
     $var1slug = strtolower(trim(preg_replace(\'/[^A-Za-z0-9-]+/\', \'-\', $variation1name)));
     $variation1price = $prod_row["first_variation_price"];
     $variation1color = $prod_row["first_variation_color"];
     $variation1optname = $prod_row["first_variation_option_name"];

     $variation2SKU = $prod_row["second_variation_SKU"];
     $variation2name = $prod_row["second_variation_name"];
     $var2slug = strtolower(trim(preg_replace(\'/[^A-Za-z0-9-]+/\', \'-\', $variation2name)));
     $variation2price = $prod_row["second_variation_price"];
     $variation2color = $prod_row["second_variation_color"];
     $variation1optname = $prod_row["first_variation_option_name"];

$api = new WC_REST_Products_Controller();
$request = new WP_REST_Request (\'POST\', \'\', \'\');
$request->set_body_params( array (
    \'name\' => $name,
    \'slug\' => $slug,
    \'type\' => \'simple\',
    \'status\' => \'publish\',
    \'regular_price\' => $price,
    \'price\' => $price,
    //\'sale_price\' => 40,
    \'description\' => \'This is the description for the \'.$name.\' product\',
    \'virtual\' => 1,
    \'tax_status\' => \'none\', // or \'taxable\'
    \'variations\' => array(
            array(
                \'sku\' => $variation1SKU,
                \'regular_price\' => $variation1price,
                \'attributes\' => array( 
                    array( 
                        \'id\' => date(\'YmdHis\', strtotime(\'+2 seconds\')),
                        \'slug\'=> $var1slug,
                        \'name\'=> $variation1name,
                        \'option\'=> $variation1optname, 
                    )
                ) 
            ),
            array(
                \'sku\' => $variation2SKU,
                \'regular_price\' => $variation2price,
                \'attributes\' => array( 
                    array( 
                        \'id\' => date(\'YmdHis\', strtotime(\'+2 seconds\')),
                        \'slug\'=> $var2slug,
                        \'name\'=> $variation2name,
                        \'option\'=> $variation2optname,
                    )
                ) 
            )
        )
));

$response = $api->create_item( $request );

$id = $response->data[\'id\']; // the post id of the new item
}
这只是一个未经测试的示例代码,向您展示了使用Woocommerce和Wordpress的API创建产品的有效方法。您需要创建一个具有友好列标题的CSV文件,然后在上载之前将其保存为UTF-8。如果您有一些简单的产品和一些可变的产品,那么您需要引入一个值检查,比如对第一个变体的名称字段的变量进行检查。如果为空,则将请求主体设置为单向,如果填充了请求主体,则使用变体构建请求主体。这类事情。希望有帮助!

另外,woocommerce API允许您使用

$response = $api->update_item( $request );
然后通过在请求正文中输入要更新的项目来告诉它

\'id\' => $id,
然后,请求主体中的其他变量(如价格或描述)将得到更新。我发现这是一个非常宝贵的工具,可以动态修改产品,创建订单,将这些产品添加到新订单中,然后将价格恢复到其原始价值。这就是如何创建具有自定义价格的自定义订单,而不在订单上显示折扣商品。

我从以下线程获得的变体示例代码:https://stackoverflow.com/questions/37823867/woocommerce-api-create-new-product-with-variations

相关推荐

Wordpress import error

首先我在我的网站上安装了WordPress,然后我使用导出工具为我的博客(akasujjwal.WordPress.com)生成了一个XML文件。当我尝试将此XML文件导入已安装的WordPress时,我会遇到以下错误:抱歉,出现错误。文件为空。请上传更多内容。此错误也可能是由于您的php.ini 或由post_max_size 定义为小于upload_max_filesize 在里面php.ini.为什么会发生这种情况?有什么解决办法吗?我试图在一个免费主机上的站点上安装WordPress。在这期间,我