Come aggiungere prodotto in woocommerce con codice php [chiuso]


29

Voglio aggiungere prodotti con codice PHP come di seguito:

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

ma questo codice ottimizza per WooCommerce come tipo di post e guid e metadati e ... Qualcuno può aiutarti?


1
L'aggiunta di prodotti tramite PHP richiederà parecchio lavoro poiché ci sono molte cose diverse da inserire / aggiornare. Forse questa risposta e i relativi plugin ti aiuteranno a svolgere il lavoro più facilmente :)
Sven

1
Nel 2017, utilizzare l'API REST come suggerito in stackoverflow.com/a/40133117/5749914 .
Warlike Chimpanzee,

Risposte:


49

È abbastanza facile aver elaborato i dati aggiunti nel post meta. Il problema che sto riscontrando è l'aggiunta di prodotti scaricabili al negozio.

di seguito è riportato il codice che sto usando, che elenca tutti i meta post utilizzati dal commercio di woo. Questo pubblica un prodotto ma il link per il download non si alleerà.

Inizialmente, quando ho iniziato, ho fatto 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 in modo che corrisponda a quello di un prodotto aggiunto manualmente, nessun solitario mostrerà 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",
);

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

spero che questo sia conforme allo standard di qualità :)


Modifica dopo settimane di ricerche si scopre che ho uno spazio dopo "_downloadable_files", quindi non è stato riconosciuto dal commercio di woo. Inoltre ho letto che i file possono essere archiviati nella cartella dei caricamenti di woo commerce.
user3361421

Con tutti questi update_post_meta non ho trovato il modo di impostare la breve descrizione del prodotto aggiunto ... Come posso impostare la breve descrizione di un prodotto con codice php?
prelito

2
Ho lavorato su qualcosa di simile a questo, ma ho scoperto che dopo aver usato wp_insert_post il post viene creato e i dati inseriti, ma il post non viene visualizzato nella pagina del negozio di woo e la categoria non viene visualizzata nella barra laterale. Molto strano come il post e tutti i suoi dati esistono nel supporto.
EHerman,

@prelite non è il post_excerpt la descrizione breve?
Daniel

Funziona esattamente come previsto
Alaksandar Jesus Gene il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.