我想使用以下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 楼
您已经很容易算出发布元数据中添加的数据。问题是我正在向商店添加可下载的产品。下面是我使用的代码,其中列出了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
评论
通过PHP添加产品将需要大量工作,因为有很多不同的事情要插入/更新。也许这个答案和相关的插件将帮助您更轻松地完成工作:)在2017年,按照stackoverflow.com/a/40133117/5749914中的建议使用REST API。