如何在woocommerce中使用php代码添加产品


29

我想添加带有PHP代码的产品,如下所示:

$post_information = array(
  'post_title' => 'new item shop',
  'post_content' => 'this is new item shop',
  'post_type' => 'post',
  'post_status' => 'publish'
);
$post_id = wp_insert_post($post_information);

但是这段代码针对WooCommerce进行了优化,例如帖子类型,GUID和元数据,以及...有人可以帮忙吗?


1
通过PHP添加产品将需要大量工作,因为有很多不同的事情要插入/更新。也许这个答案和相关的插件将帮助您更轻松地完成工作:)
Sven

1
在2017年,按照stackoverflow.com/a/40133117/5749914中的建议使用REST API 。
好战的黑猩猩

Answers:


49

您已经很容易算出发布元数据中添加的数据。我遇到的麻烦是正在向商店添加可下载的产品。

以下是我正在使用的代码,其中列出了woo Commerce使用的所有发布元。这将发布产品,但是下载链接将不附加。

最初,当我启动时,我对存储下载链接的数组出错,产生了错误的链接“ b”,然后是第二个正确的下载文件。修复阵列以使其与手动添加的产品相匹配后,不再显示任何文件。如果有人对此有信息,将不胜感激

$post = array(
    'post_author' => $user_id,
    'post_content' => '',
    'post_status' => "publish",
    'post_title' => $product->part_num,
    'post_parent' => '',
    'post_type' => "product",
);

//Create post
$post_id = wp_insert_post( $post, $wp_error );
if($post_id){
    $attach_id = get_post_meta($product->parent_id, "_thumbnail_id", true);
    add_post_meta($post_id, '_thumbnail_id', $attach_id);
}

wp_set_object_terms( $post_id, 'Races', 'product_cat' );
wp_set_object_terms($post_id, 'simple', 'product_type');

update_post_meta( $post_id, '_visibility', 'visible' );
update_post_meta( $post_id, '_stock_status', 'instock');
update_post_meta( $post_id, 'total_sales', '0');
update_post_meta( $post_id, '_downloadable', 'yes');
update_post_meta( $post_id, '_virtual', 'yes');
update_post_meta( $post_id, '_regular_price', "1" );
update_post_meta( $post_id, '_sale_price', "1" );
update_post_meta( $post_id, '_purchase_note', "" );
update_post_meta( $post_id, '_featured', "no" );
update_post_meta( $post_id, '_weight', "" );
update_post_meta( $post_id, '_length', "" );
update_post_meta( $post_id, '_width', "" );
update_post_meta( $post_id, '_height', "" );
update_post_meta($post_id, '_sku', "");
update_post_meta( $post_id, '_product_attributes', array());
update_post_meta( $post_id, '_sale_price_dates_from', "" );
update_post_meta( $post_id, '_sale_price_dates_to', "" );
update_post_meta( $post_id, '_price', "1" );
update_post_meta( $post_id, '_sold_individually', "" );
update_post_meta( $post_id, '_manage_stock', "no" );
update_post_meta( $post_id, '_backorders', "no" );
update_post_meta( $post_id, '_stock', "" );

// file paths will be stored in an array keyed off md5(file path)
$downdloadArray =array('name'=>"Test", 'file' => $uploadDIR['baseurl']."/video/".$video);

$file_path =md5($uploadDIR['baseurl']."/video/".$video);


$_file_paths[  $file_path  ] = $downdloadArray;
// grant permission to any newly added files on any existing orders for this product
// do_action( 'woocommerce_process_product_file_download_paths', $post_id, 0, $downdloadArray );
update_post_meta( $post_id, '_downloadable_files', $_file_paths);
update_post_meta( $post_id, '_download_limit', '');
update_post_meta( $post_id, '_download_expiry', '');
update_post_meta( $post_id, '_download_type', '');
update_post_meta( $post_id, '_product_image_gallery', '');

希望这符合质量标准:)


经过几周的搜索编辑,结果发现我在“ _downloadable_files”之后有一个空格,因此woo Commerce无法识别它。我也读过我的文件存储在woo commerce uploads文件夹下。
user3361421 2014年

对于所有这些update_post_meta,我没有找到一种方法来设置所添加产品的简短描述...如何使用php代码设置产品的简短描述?
Prelite

2
我一直在从事与此类似的工作,但是发现在使用wp_insert_post之后创建了帖子并输入了数据,但是该帖子未出现在woo shop页面中,并且类别也没有出现在侧边栏中。作为帖子及其所有数据,非常奇怪的是存在于后台。
EHerman

@prelite不是post_excerpt的简短描述吗?
丹尼尔(Daniel)

完全按预期工作
Alaksandar Jesus Gene
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.