Come aggiungere un prodotto in WooCommerce con codice PHP
Voglio aggiungere prodotti con codice PHP come mostrato di seguito:
$post_information = array(
'post_title' => 'nuovo articolo negozio',
'post_content' => 'questo è un nuovo articolo del negozio',
'post_type' => 'post',
'post_status' => 'publish'
);
$post_id = wp_insert_post($post_information);
ma questo codice deve essere ottimizzato per WooCommerce per includere il tipo di post corretto, il GUID, i metadati e altro. Qualcuno può aiutarmi?

Il metodo seguente è ora obsoleto poiché WooCommerce ha aggiunto la tabella wc_product_meta_lookup
che deve essere aggiornata con alcuni dei valori meta.
WooCommerce ora fornisce un'interfaccia CRUD, quindi è meglio utilizzare quella.
$post_id = wp_insert_post( array(
'post_title' => $title,
'post_type' => 'product',
'post_status' => 'publish',
'post_content' => $body,
));
$product = wc_get_product( $post_id );
$product->set_sku( $sku );
// ecc...
$product->save();
Revisore, sentiti libero di modificare come ritieni opportuno.
È abbastanza semplice una volta che hai compreso i dati aggiunti nei post meta. Il problema che sto avendo è aggiungere prodotti scaricabili allo store.
Di seguito è riportato il codice che sto utilizzando, elenca tutti i post meta utilizzati da WooCommerce. Questo pubblica un prodotto, tuttavia il link di download non viene allegato.
Inizialmente, quando ho iniziato, ho commesso un errore con l'array che memorizza il link di download, producendo un link errato "b" seguito da un secondo file di download che era corretto. Dopo aver corretto l'array per corrispondere a quello di un prodotto aggiunto manualmente, non mostra più un file. Se qualcuno ha informazioni su questo, sarebbe molto apprezzato.
$post = array(
'post_author' => $user_id,
'post_content' => '',
'post_status' => "publish",
'post_title' => $product->part_num,
'post_parent' => '',
'post_type' => "product",
);
// Crea il 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', "" );
// I percorsi dei file saranno memorizzati in un array indicizzato con md5(percorso del file)
$downdloadArray =array('name'=>"Test", 'file' => $uploadDIR['baseurl']."/video/".$video);
$file_path =md5($uploadDIR['baseurl']."/video/".$video);
$_file_paths[ $file_path ] = $downdloadArray;
// concedi l'autorizzazione a qualsiasi file appena aggiunto su ordini esistenti per questo prodotto
// 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', '');
Spero che questo rispetti gli standard di qualità :)

Dopo settimane di ricerca ho scoperto che avevo uno spazio dopo "_downloadable_files" quindi non veniva riconosciuto da WooCommerce. Inoltre ho letto che i file potrebbero essere memorizzati nella cartella degli upload di WooCommerce.

Con tutti quegli update_post_meta non ho trovato un modo per impostare la descrizione breve del prodotto aggiunto... Come posso impostare la descrizione breve di un prodotto con codice PHP?

Stavo lavorando a qualcosa di simile, ma ho scoperto che dopo aver usato wp_insert_post il post viene creato e i dati inseriti, ma il post non compare nella pagina del negozio Woo e la categoria non appare nella sidebar. Molto strano perché il post e tutti i suoi dati esistono nel backend.

Ora puoi usare 'meta_input' per impostare tutti i meta all'interno del metodo wp_insert_post()
.
