PHPコードを使用してwoocommerceに製品を追加する方法[終了]


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);

しかし、このコードは投稿タイプやGUID、メタデータなどのWooCommerce向けに最適化され、...誰か助けてもらえますか?


1
PHPを介した製品の追加は、挿入/更新するためのさまざまなものがあるため、非常に多くの作業になります。たぶん、この答えと関連するプラグインは、あなたが仕事をより簡単
Sven

1
2017年には、stackoverflow.com / a / 40133117/5749914で提案されているREST APIを使用します。
好戦的なチンパンジー

回答:


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コマースアップロードフォルダーの下に保存されることを読みました。
user3361421 14年

これらすべてのupdate_post_metaで、追加された製品の短い説明を設定する方法が見つかりませんでした... PHPコードで製品の短い説明を設定するにはどうすればよいですか?
プリライト14

2
私はこれに似たものに取り組んでいますが、wp_insert_postを使用した後、投稿が作成され、データが入力されましたが、投稿はwoo shopページに表示されず、カテゴリはサイドバーに表示されません。投稿とそのすべてのデータが裏付けられているため、非常に奇妙です。
EHerman 14

@preliteはpost_excerptは短い説明ではありませんか?
ダニエル

期待どおりに動作します
Alaksandarイエスジーン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.