Como adicionar produto no woocommerce com código php [fechado]


29

Quero adicionar produtos com código PHP como abaixo:

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

mas esse código é otimizado para o WooCommerce, como tipo de postagem, guia e metadados e ... Alguém pode ajudar?


1
Adicionar produtos via PHP será bastante trabalhoso, pois existem muitas coisas diferentes para inserir / atualizar. Talvez esta resposta e os plugins relacionados irá ajudá-lo a fazer o trabalho mais facilmente :)
Sven

1
Em 2017, use a API REST conforme sugerido em stackoverflow.com/a/40133117/5749914 .
Chimpanzé de guerra

Respostas:


49

É bem fácil você ter trabalhado com os dados adicionados na meta post. O problema que estou enfrentando é adicionar produtos para download à loja.

abaixo está o código que estou usando, lista todos os meta meta que são usados ​​pelo woo commerce. Isso publica um produto, mas o link para download não será anexado.

Originalmente, quando iniciei, cometi um erro na matriz que armazena o link de download, produzindo um link ruim "b", seguido por um segundo arquivo de download correto. Depois de fixar a matriz para corresponder à de um produto adicionado manualmente, o loner não mostrará um arquivo. Se alguém tiver informações sobre isso, seria muito 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 isso esteja em conformidade com o padrão de qualidade :)


Editar depois de semanas de pesquisa, verifica-se que eu tenho um espaço após os "_downloadable_files" para que ele não fosse reconhecido pelo woo commerce. Também li que os arquivos podem ser armazenados na pasta woo commerce uploads.
user3361421

Com todos os update_post_meta, não encontrei uma maneira de definir a descrição resumida do produto adicionado ... Como definir a descrição resumida de um produto com código php?
prelite 25/09/14

2
Estou trabalhando em algo semelhante a isso, mas descobri que, depois de usar wp_insert_post, a postagem é criada e os dados inseridos, mas a postagem não aparece na página da loja woo e a categoria não aparece na barra lateral. Muito estranho como o post e todos os seus dados existem no backup.
EHerman

@prelite não é o post_excerpt a descrição curta?
Daniel

Funciona exatamente como o esperado
Alaksandar Jesus Gene
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.