Cách thêm sản phẩm trong thương mại điện tử với mã php [đã đóng]


29

Tôi muốn thêm các sản phẩm có mã PHP như dưới đây:

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

nhưng mã này tối ưu hóa cho WooC Commerce như loại bài đăng, hướng dẫn và siêu dữ liệu và ... Ai đó có thể giúp đỡ không?


1
Thêm sản phẩm qua PHP sẽ có khá nhiều công việc vì có rất nhiều thứ khác nhau để chèn / cập nhật. Có thể câu trả lời này và các plugin liên quan sẽ giúp bạn hoàn thành công việc dễ dàng hơn :)
Sven

1
Trong năm 2017, hãy sử dụng API REST như được đề xuất trong stackoverflow.com/a/40133117/5749914 .
Tinh tinh hiếu chiến

Câu trả lời:


49

Nó khá dễ dàng, bạn đã tìm ra dữ liệu được thêm vào trong meta post. Rắc rối tôi đang gặp phải là thêm các sản phẩm có thể tải xuống vào cửa hàng.

bên dưới là mã tôi đang sử dụng nó liệt kê tất cả các meta bài đăng được sử dụng bởi thương mại woo. Điều này xuất bản một sản phẩm tuy nhiên liên kết tải xuống sẽ không đính kèm.

Ban đầu khi tôi bắt đầu, tôi đã gặp lỗi với mảng lưu trữ liên kết tải xuống tạo ra liên kết xấu "b", sau đó là tệp tải xuống thứ hai là chính xác. Sau khi sửa mảng để khớp với sản phẩm được thêm thủ công, nó sẽ không hiển thị một tập tin. Nếu bất cứ ai có thông tin về điều này, nó sẽ được đánh giá rất cao

$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', '');

hy vọng điều này phù hợp với tiêu chuẩn chất lượng :)


Chỉnh sửa sau nhiều tuần tìm kiếm, hóa ra tôi có một khoảng trắng sau "_doadable_files" để nó không được thương mại woo nhận ra. Ngoài ra tôi đã đọc được rằng các tập tin của tôi được lưu trữ trong thư mục tải lên thương mại woo.
dùng3361421

Với tất cả những update_post_meta tôi đã không tìm được cách đặt mô tả ngắn về sản phẩm được thêm vào ... Làm cách nào tôi có thể đặt mô tả ngắn về sản phẩm bằng mã php?
prelite

2
Tôi đã làm việc với một cái gì đó tương tự như thế này, nhưng thấy rằng sau khi sử dụng wp_insert_post, bài đăng được tạo và dữ liệu được nhập, nhưng bài đăng không xuất hiện trong trang woo shop và danh mục không xuất hiện trong thanh bên. Rất lạ khi bài đăng và tất cả dữ liệu của nó tồn tại ở mặt sau.
EHerman

@prelite không phải là post_excerpt mô tả ngắn?
Daniel

Hoạt động chính xác như mong đợi
Alaksandar Jesus Gene
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.