Cómo agregar productos en woocommerce con código php [cerrado]

29

Quiero agregar productos con código PHP como a continuación:

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

pero este código se optimiza para WooCommerce, como tipo de publicación y guid y metadatos y ... ¿Alguien puede ayudar?

Hossein Hashemi
fuente
1
Agregar productos a través de PHP será mucho trabajo, ya que hay muchas cosas diferentes para insertar / actualizar. Tal vez esta respuesta y los complementos relacionados lo ayudarán a hacer el trabajo más fácilmente :)
Sven
1
En 2017, use la API REST como se sugiere en stackoverflow.com/a/40133117/5749914 .
Warlike Chimpanzee

Respuestas:

49

Es bastante fácil que haya resuelto los datos agregados en la meta meta. El problema que tengo es agregar productos descargables a la tienda.

a continuación se muestra el código que estoy usando, enumera todos los metadatos de publicación que utiliza woo commerce. Esto publica un producto, sin embargo, el enlace de descarga no se adjuntará.

Originalmente cuando comencé, cometí un error con la matriz que almacena el enlace de descarga produciendo un enlace incorrecto "b" seguido de un segundo archivo de descarga que era correcto. Después de arreglar la matriz para que coincida con la de un producto agregado manualmente, ya no mostrará un archivo. Si alguien tiene información sobre esto, sería muy apreciado

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

Espero que esto se ajuste al estándar de calidad :)

usuario3361421
fuente
Editar después de semanas de búsqueda resulta que tengo un espacio después de los "archivos descargables", por lo que no fue reconocido por el comercio woo. También he leído que los archivos se pueden almacenar en la carpeta de cargas de Woo Commerce.
user3361421
Con todos esos update_post_meta, no encontré una manera de configurar la descripción breve del producto agregado ... ¿Cómo puedo configurar la descripción breve de un producto con código php?
Prelite
2
He estado trabajando en algo similar a esto, pero descubrí que después de usar wp_insert_post se crea la publicación y se ingresan los datos, pero la publicación no aparece en la página de la tienda woo y la categoría no aparece en la barra lateral. Muy extraño ya que la publicación y todos sus datos existen en la copia de seguridad.
EHerman
@prelite no es el post_excerpt la descripción breve?
Daniel
Funciona exactamente como se esperaba
Alaksandar Jesus Gene