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 commerce uploads 폴더에 저장되어 있다는 것을 읽었습니다.
user3361421

모든 update_post_meta를 사용하여 추가 된 제품에 대한 간단한 설명을 설정하는 방법을 찾지 못했습니다 ... PHP 코드로 제품에 대한 간단한 설명을 어떻게 설정할 수 있습니까?
prelite

2
나는 이것과 비슷한 것을 연구하고 있지만 wp_insert_post를 사용한 후에 게시물이 생성되고 데이터가 입력되었지만 게시물이 우샵 페이지에 나타나지 않고 카테고리가 사이드 바에 나타나지 않는다는 것을 알았습니다. 게시물과 모든 데이터가 뒷받침되어 있기 때문에 매우 이상합니다.
EHerman

@prelite post_excerpt가 짧은 설명이 아닌가?
Daniel

예상대로 정확하게 작동
Alaksandar Jesus Gene
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.