Як додати продукт у 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, таких як тип публікації та настанови та метадані та ... Чи може хтось допомогти?


1
Додавання продуктів через PHP буде досить багато роботи, оскільки для вставки / оновлення існує багато різних речей. Можливо, ця відповідь та пов’язані з ними плагіни допоможуть вам легше виконати роботу :)
Свен

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

сподіваюся, що це відповідає стандарту якості :)


Редагувати після тижнів пошуку виявляється, що у мене є пробіл після "_завантажених_файлів", тому його не визнали комерції. Крім того, я читав, що мої файли зберігаються в папці завантаження WoW Commerce.
користувач3361421

З усіма цими update_post_meta я не знайшов способу встановити короткий опис доданого продукту ... Як я можу встановити короткий опис товару з кодом php?
преліт

2
Я працював над чимось подібним до цього, але виявив, що після використання wp_insert_post публікація створюється та вводяться дані, але публікація не відображається на сторінці магазину woo shop, а категорія не відображається на бічній панелі. Дуже дивно, оскільки посада та всі її дані існують у резервній частині.
EHerman

@prelite чи не post_excerpt короткого опису?
Даніель

Працює точно так, як очікувалося
Олександр Ісус Гена
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.