我想使用以下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,元数据和...有人可以帮忙吗?

评论

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

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

#1 楼

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

下面是我使用的代码,其中列出了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年3月11日13:10



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

–prelite
2014-09-25 18:27

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

– EHerman
2014年12月3日在18:34

@prelite不是post_excerpt的简短描述吗?

–丹尼尔(Daniel)
17年3月3日在13:04

现在,您可以使用'meta_input'来设置wp_insert_post()方法中的所有元数据。

–比约恩
18/12/21在5:57