Как добавить товар в woocommerce с помощью php-кода [закрыто]

29

Я хочу добавить продукты с PHP-кодом, как показано ниже:

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

но этот код оптимизировать для WooCommerce, таких как тип записи и guid и метаданные и ... Может кто-нибудь помочь?

Хоссейн Хашеми
источник
1
Добавление продуктов через PHP будет довольно трудоемким, поскольку есть много разных вещей для вставки / обновления. Может быть, этот ответ и соответствующие плагины помогут вам сделать работу проще :)
Sven
1
В 2017 году используйте API REST, как это предлагается в stackoverflow.com/a/40133117/5749914 .
Воинственный шимпанзе

Ответы:

49

Это довольно легко, вы обработали данные, добавленные в мета-пост. У меня проблемы с добавлением загружаемых продуктов в магазин.

ниже приведен код, который я использую в нем перечислены все мета постов, которые используются в Woo Commerce. Это публикует продукт, однако ссылка на скачивание не будет прикреплена.

Первоначально, когда я начал, я сделал ошибку с массивом, который хранит ссылку для скачивания, производящую плохую ссылку "b", сопровождаемую вторым файлом загрузки, который был правильным. После исправления массива, чтобы он соответствовал тому, который был добавлен в продукт, он больше не будет показывать файл. Если у кого-то есть информация по этому вопросу, мы будем очень признательны

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

надеюсь, что это соответствует стандарту качества :)

user3361421
источник
Редактировать после нескольких недель поиска выясняется, что у меня есть пробел после "_downloadable_files", поэтому он не был распознан коммерцией. Также я прочитал, что файлы могут храниться в папке загрузок woo commerce.
user3361421
Со всеми этими update_post_meta я не нашел способа задать краткое описание продукта, добавленного ... Как я могу установить краткое описание продукта с php-кодом?
Прелите
2
Я работал над чем-то похожим на это, но обнаружил, что после использования wp_insert_post сообщение создается и вводится данные, но сообщение не отображается на странице магазина woo, а категория не отображается на боковой панели. Очень странно, поскольку пост и все его данные существуют в резерве.
EHerman
@prelite не post_excerpt краткое описание?
Даниэль
Работает точно так, как ожидалось
Alaksandar Jesus Gene