Wie man ein Produkt im Woocommerce mit PHP-Code hinzufügt [geschlossen]

29

Ich möchte folgende Produkte mit PHP-Code hinzufügen:

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

aber dieser Code optimiert für WooCommerce wie Posttyp und Guid und Metadaten und ... Kann mir jemand weiterhelfen?

Hossein Hashemi
quelle
1
Das Hinzufügen von Produkten über PHP wird eine Menge Arbeit bedeuten, da viele verschiedene Dinge eingefügt / aktualisiert werden müssen. Vielleicht hilft Ihnen diese Antwort und die zugehörigen Plugins dabei, die Arbeit leichter zu erledigen :)
Sven
1
Verwenden Sie 2017 die REST-API wie in stackoverflow.com/a/40133117/5749914 vorgeschlagen .
Kriegerischer Schimpanse

Antworten:

49

Es ist ziemlich einfach, Sie haben die im Post-Meta hinzugefügten Daten herausgearbeitet. Das Problem, das ich habe, ist das Hinzufügen von herunterladbaren Produkten zum Shop.

Unten ist der Code, den ich verwende. Er listet alle Post-Metas auf, die von Woo Commerce verwendet werden. Dies veröffentlicht ein Produkt, der Download-Link wird jedoch nicht angehängt.

Ursprünglich, als ich anfing, machte ich einen Fehler mit dem Array, das den Download-Link speichert und einen fehlerhaften Link "b" erzeugt, gefolgt von einer zweiten Download-Datei, die korrekt war. Nachdem das Array so angepasst wurde, dass es dem eines manuell hinzugefügten Produkts entspricht, zeigt kein Einzelner eine Datei an. Wenn jemand Informationen dazu hat, wäre er sehr dankbar

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

hoffe das entspricht dem Qualitätsstandard :)

user3361421
quelle
Nach wochenlanger Suche stellte sich heraus, dass ich nach "_downloadable_files" ein Leerzeichen habe, sodass es von woo commerce nicht erkannt wurde. Ich habe auch gelesen, dass die Dateien im woo commerce uploads Ordner gespeichert werden können.
user3361421
Bei all diesen update_post_meta habe ich keine Möglichkeit gefunden, die Kurzbeschreibung des hinzugefügten Produkts festzulegen ... Wie kann ich die Kurzbeschreibung eines Produkts mit PHP-Code festlegen?
25.
2
Ich habe an etwas ähnlichem gearbeitet, aber festgestellt, dass nach der Verwendung von wp_insert_post der Beitrag erstellt und Daten eingegeben werden, der Beitrag jedoch nicht auf der Seite des Woo-Shops und die Kategorie nicht in der Seitenleiste angezeigt wird. Sehr seltsam, da der Beitrag und alle seine Daten im Hintergrund vorhanden sind.
EHerman
@prelite ist der post_excerpt nicht die Kurzbeschreibung?
Daniel
Funktioniert genau wie erwartet
Alaksandar Jesus Gene