gpt4 book ai didi

php - 以编程方式批量创建 WooCommerce 产品

转载 作者:行者123 更新时间:2023-12-05 01:45:18 28 4
gpt4 key购买 nike

可以在 WooCommerce 上批量创建产品吗?我正在使用 wp-cli Product 命令,但似乎我必须一个一个地创建。

<?php

$products = array(
array('title' => 'My product 1'),
array('title' => 'My product 2'),
// ...
// 10.000 more products
);

foreach ($products as $product) {
$cliProduct = new WC_CLI_Product();
$cliProduct->create(array(), $product);
WP_CLI::success("Added Product #{$product['title']}");
}

这会花费很多时间,因为它将对每个产品进行查询,更糟糕的是,这将是一个定期运行的 cron 作业。我还必须检查产品是否存在,在这种情况下,更新它而不是创建新产品。

所以查询次数会乘以2。

产品存在?更新它,否则创建它

有更好的方法吗?也许我应该直接查询数据库,但它看起来很脏。

是否有任何 WP 函数可以查询数据库而无需创建我自己的数据库连接?

最佳答案

A small note I had written this answer way back in 2017 at that time WooCommerce version was below < 3.0. So if you are using WooCommerce version 3.0. then please refer to this answer.

As of March 2022 this answer still works but I will recommend using this answer for > v3.0.

假设您有一个这样的数组,并且您有唯一的 SKU 来标识产品。

$products = [
0 => [
'title' => 'My Simple product 1',
'sku' => 'sku1',
'product_cat' => 'My cat'
//...
//...
],
1 => [
'title' => 'My Simple product 1',
'sku' => 'sku1'
//...
//...
]
];

通过 myCustomProduct() 方法传递上述数组。

function myCustomProduct($product_array)
{
if (!empty($product_array)):
foreach ($product_array as $product):
$product_id = wc_get_product_id_by_sku($product['sku']);
//no product exist with the given SKU so create one
if (!$product_id):
$post = [
'post_author' => '',
'post_content' => $product['content'],
'post_status' => "publish",
'post_title' => wp_strip_all_tags($product['title']),
'post_name' => $product['title'],
'post_parent' => '',
'post_type' => "product",
];
//Create Post
$product_id = wp_insert_post($post, $wp_error);

//set Product Category
wp_set_object_terms($product_id, $product['product_cat'], 'product_cat');

//set product type
wp_set_object_terms($product_id, 'simple', 'product_type');

update_post_meta($product_id, '_sku', $product['sku']);
update_post_meta($product_id, 'total_sales', '0');

//product found
else:
$post = [
'ID' => $product_id,
'post_title' => $product['title'],
'post_content' => $product['content'],
];
$post_id = wp_update_post($post, true);
// if (is_wp_error($post_id))
// {
// $errors = $post_id->get_error_messages();
// foreach ($errors as $error)
// {
// echo $error;
// }
// }
endif;

update_post_meta($product_id, '_visibility', 'visible');
update_post_meta($product_id, '_stock_status', 'instock');
update_post_meta($product_id, '_product_attributes', array());
update_post_meta($product_id, '_manage_stock', "yes");
update_post_meta($product_id, '_backorders', "no");
update_post_meta($product_id, '_stock', $product['qty']);
update_post_meta($product_id, '_price', $product['price']);
//update_post_meta($product_id, '_downloadable', 'yes');
//update_post_meta($product_id, '_virtual', 'yes');
//update_post_meta($product_id, '_regular_price', "1");
//update_post_meta($product_id, '_sale_price', "1");
//update_post_meta($product_id, '_purchase_note', "");
//update_post_meta($product_id, '_featured', "no");
//update_post_meta($product_id, '_weight', "");
//update_post_meta($product_id, '_length', "");
//update_post_meta($product_id, '_width', "");
//update_post_meta($product_id, '_height', "");
//update_post_meta($product_id, '_sale_price_dates_from', "");
//update_post_meta($product_id, '_sale_price_dates_to', "");
//update_post_meta($product_id, '_price', "1");
//update_post_meta($product_id, '_sold_individually', "");
endforeach;
endif;
}

这会让您简要了解如何创建/更新产品;如果您需要任何进一步的帮助,那么您必须分享您的 4-5 个数组元素,以便我可以了解您想要创建的产品类型以及它将具有的字段/元数据。

希望这对您有所帮助!

关于php - 以编程方式批量创建 WooCommerce 产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42064673/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com