Cum să adaugi produse în WooCommerce folosind cod PHP
Vreau să adaug produse folosind cod PHP similar cu cel de mai jos:
$post_information = array(
'post_title' => 'articol nou magazin',
'post_content' => 'acesta este un articol nou în magazin',
'post_type' => 'post',
'post_status' => 'publish'
);
$post_id = wp_insert_post($post_information);
dar acest cod trebuie optimizat pentru WooCommerce cum ar fi tipul de postare, guid și metadate și... Poate cineva să mă ajute?

Metoda de mai jos este acum depășită, deoarece WooCommerce a adăugat tabelul wc_product_meta_lookup
care trebuie de asemenea actualizat cu unele dintre valorile meta.
Woo a oferit acum o interfață CRUD, așa că folosește aceea în schimb.
$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 );
// etc...
$product->save();
Reviewer, te rog să modifici după cum consideri potrivit.
Este destul de ușor odată ce ai stabilit datele adăugate în post meta. Problema pe care o am este adăugarea de produse descărcabile în magazin.
Mai jos este codul pe care îl folosesc, care listează toate meta-datelor postului utilizate de WooCommerce. Acesta publică un produs, însă link-ul de descărcare nu se atașează.
Inițial, când am început, am făcut o eroare cu array-ul care stochează link-ul de descărcare, producând un link incorect "b" urmat de un al doilea fișier de descărcare care era corect. După ce am corectat array-ul să se potrivească cu cel al unui produs adăugat manual, nu mai afișează un fișier. Dacă cineva are informații despre acest lucru, ar fi foarte apreciat.
$post = array(
'post_author' => $user_id,
'post_content' => '',
'post_status' => "publish",
'post_title' => $product->part_num,
'post_parent' => '',
'post_type' => "product",
);
//Crează postul
$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', "" );
// căile fișierelor vor fi stocate într-un array indexat după md5(cale fișier)
$downdloadArray =array('name'=>"Test", 'file' => $uploadDIR['baseurl']."/video/".$video);
$file_path =md5($uploadDIR['baseurl']."/video/".$video);
$_file_paths[ $file_path ] = $downdloadArray;
// acordă permisiune pentru orice fișiere nou adăugate la orice comenzi existente pentru acest produs
// 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', '');
Sper că acest lucru respectă standardul de calitate :)

După săptămâni de căutare, am descoperit că aveam un spațiu după "_downloadable_files", așa că nu a fost recunoscut de WooCommerce. De asemenea, am citit că fișierele pot fi stocate în folderul de încărcări WooCommerce.

Cu toate acele update_post_meta, nu am găsit nicio modalitate de a seta descrierea scurtă a produsului adăugat... Cum pot seta descrierea scurtă a unui produs folosind cod PHP?

Am lucrat la ceva similar cu asta, dar am descoperit că după ce am folosit wp_insert_post, articolul este creat și datele sunt introduse, dar articolul nu apare în pagina magazinului Woo, iar categoria nu apare în bara laterală. Foarte ciudat, deoarece articolul și toate datele sale există în back-end.

Acum poți folosi 'meta_input' pentru a seta toate metadatele în cadrul metodei wp_insert_post()
.
