Jak dodać produkt w woocommerce z kodem php [zamknięte]

29

Chcę dodać produkty z kodem PHP jak poniżej:

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

ale ten kod jest zoptymalizowany pod kątem WooCommerce, takich jak typ postu oraz guid i metadane i ... Czy ktoś może pomóc?

Hossein Hashemi
źródło
1
Dodawanie produktów za pośrednictwem PHP będzie wymagało sporo pracy, ponieważ istnieje wiele różnych rzeczy do wstawienia / aktualizacji. Może ta odpowiedź i powiązane wtyczki pomogą ci łatwiej wykonać zadanie :)
Sven
1
W 2017 r. Użyj interfejsu API REST, jak sugerowano w stackoverflow.com/a/40133117/5749914 .
Warlike Chimpanzee,

Odpowiedzi:

49

To dość proste, opracowałeś dane dodane w meta postu. Mam problem z dodawaniem produktów do pobrania do sklepu.

poniżej kod, którego używam, zawiera listę wszystkich meta postów używanych przez woo commerce. Spowoduje to opublikowanie produktu, jednak łącze pobierania nie zostanie dołączone.

Pierwotnie, kiedy zaczynałem, popełniłem błąd w tablicy, która przechowuje link do pobrania, powodując nieprawidłowe łącze „b”, a następnie drugi poprawny plik do pobrania. Po poprawieniu tablicy w celu dopasowania do tablicy produktu dodanego ręcznie, żaden samotnik nie wyświetli pliku. Jeśli ktoś ma informacje na ten temat, byłoby to bardzo mile widziane

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

mam nadzieję, że to odpowiada standardowi jakości :)

użytkownik3361421
źródło
Edycja po tygodniach wyszukiwania okazuje się, że mam spację po „plikach do pobrania”, więc nie została rozpoznana przez woo commerce. Przeczytałem również, że pliki mogą być przechowywane w folderze przesyłania woo commerce.
user3361421,
Z tymi wszystkimi update_post_meta nie znalazłem sposobu na ustawienie krótkiego opisu produktu dodanego ... Jak mogę ustawić krótki opis produktu z kodem php?
prelite
2
Pracowałem nad czymś podobnym do tego, ale odkryłem, że po użyciu wp_insert_post post jest tworzony i dane wprowadzane, ale post nie pojawia się na stronie sklepu woo, a kategoria nie pojawia się na pasku bocznym. Bardzo dziwne, ponieważ post i wszystkie jego dane istnieją w kopii zapasowej.
EHerman
@prelite nie jest post_excerpt krótkim opisem?
Daniel
Działa dokładnie zgodnie z oczekiwaniami
Alaksandar Jesus Gene