Comment ajouter un produit dans woocommerce avec du code php [fermé]


29

Je veux ajouter des produits avec du code PHP comme ci-dessous:

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

mais ce code est optimisé pour WooCommerce, comme le type de message et le guide et les métadonnées et ... Quelqu'un peut-il aider?


1
Ajouter des produits via PHP demandera beaucoup de travail car il y a beaucoup de choses différentes à insérer / mettre à jour. Peut - être que cette réponse et les plugins associés vous aideront à faire le travail plus facilement :)
Sven

1
En 2017, utilisez l'API REST comme suggéré dans stackoverflow.com/a/40133117/5749914 .
Warlike Chimpanzee

Réponses:


49

Son assez facile, vous avez travaillé sur les données ajoutées dans la méta post. Le problème que j'ai est d'ajouter des produits téléchargeables au magasin.

ci-dessous est le code que j'utilise il répertorie tous les meta post utilisés par woo commerce. Cela publie un produit mais le lien de téléchargement ne sera pas joint.

À l'origine, lorsque j'ai commencé, j'ai fait une erreur avec le tableau qui stocke le lien de téléchargement produisant un mauvais lien "b" suivi d'un deuxième fichier de téléchargement correct. Après avoir fixé le tableau pour qu'il corresponde à celui d'un produit ajouté manuellement, aucun solitaire n'affichera de fichier. Si quelqu'un a des informations à ce sujet, il serait grandement apprécié

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

j'espère que cela est conforme à la norme de qualité :)


Modifier après des semaines de recherche, il s'avère que j'ai un espace après les "_downloadable_files" donc il n'a pas été reconnu par woo commerce. J'ai également lu que les fichiers peuvent être stockés dans le dossier de téléchargement de woo commerce.
user3361421

Avec tous ces update_post_meta, je n'ai pas trouvé de moyen de définir la courte description du produit ajouté ... Comment puis-je définir la courte description d'un produit avec le code php?
prélite

2
J'ai travaillé sur quelque chose de similaire, mais j'ai constaté qu'après avoir utilisé wp_insert_post, le message est créé et les données saisies, mais le message n'apparaît pas dans la page de la boutique woo et la catégorie n'apparaît pas dans la barre latérale. Très étrange, car le message et toutes ses données existent dans le dos.
EHerman

@prelite n'est pas le post_excerpt la courte description?
Daniel

Fonctionne exactement comme prévu
Alaksandar Jesus Gene
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.