web-dev-qa-db-ja.com

WooCommerce製品をプログラムで作成したり、SQLクエリを使用して作成するにはどうすればよいですか?

管理パネルを使用せずに、問題なく製品をカートに追加したい。カートに追加してから、PHPコードを使用してチェックアウトします。では、どうすればそれを達成できますか、またどこにコードを配置すればよいですか?

プラグインから投稿データを受け入れるプラグインファイルでphpスクリプトを書いています。私のコードは

    <?php 
    var_dump($_POST);

    $post_id = wp_insert_post( array(
    'post_title' => 'Great new product',
    'post_content' => 'Here is content of the post, so this is our great new products description',
    'post_status' => 'publish',
    'post_type' => "product",
) );
    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', 'no' );
update_post_meta( $post_id, '_virtual', 'yes' );
update_post_meta( $post_id, '_regular_price', '' );
update_post_meta( $post_id, '_sale_price', '' );
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', '' );
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', '' );

?>

私はwordpress 4.9とwoocommerceプラグインを使用しています。私がこれを解決するのを助けてください私はワードプレスが初めてで、これをたくさん検索しましたが、何も私のために働いていません。このコードを記述できる場所、または不足しているもの

1
Nitin Pawar

これにより、開始するためのベースが得られます。

function generate_simple_product() {
    $name              = 'My Product Name';
    $will_manage_stock = true;
    $is_virtual        = false;
    $price             = 1000.00;
    $is_on_sale        = true;
    $sale_price        = 999.00;
    $product           = new \WC_Product();
    $image_id = 0; // Attachment ID
    $gallery  = self::maybe_get_gallery_image_ids();
    $product->set_props( array(
        'name'               => $name,
        'featured'           => false,
        'catalog_visibility' => 'visible',
        'description'        => 'My awesome product description',
        'short_description'  => 'My short description',
        'sku'                => sanitize_title( $name ) . '-' . Rand(0, 100), // Just an example
        'regular_price'      => $price,
        'sale_price'         => $sale_price,
        'date_on_sale_from'  => '',
        'date_on_sale_to'    => '',
        'total_sales'        => 0,
        'tax_status'         => 'taxable',
        'tax_class'          => '',
        'manage_stock'       => $will_manage_stock,
        'stock_quantity'     => $will_manage_stock ? 100 : null, // Stock quantity or null
        'stock_status'       => 'instock',
        'backorders'         => 'no',
        'sold_individually'  => true,
        'weight'             => $is_virtual ? '' : 15,
        'length'             => $is_virtual ? '' : 15,
        'width'              => $is_virtual ? '' : 15,
        'height'             => $is_virtual ? '' : 15,
        'upsell_ids'         => '',
        'cross_sell_ids'     => '',
        'parent_id'          => 0,
        'reviews_allowed'    => true,
        'purchase_note'      => '',
        'menu_order'         => 10,
        'virtual'            => $is_virtual,
        'downloadable'       => false,
        'category_ids'       => '',
        'tag_ids'            => '',
        'shipping_class_id'  => 0,
        'image_id'           => $image_id,
        'gallery_image_ids'  => $gallery,
    ) );

    $product->save();

    return $product;
}

上記のコードは、WooCommerce自身が作成したWooCommerce Smooth Generatorから取得したものです。主にテストに使用されます。

https://github.com/woocommerce/wc-smooth-generator

例:

// Generate WC_Product object and save it to database
// 70% change generated product is simple
// 30% chance generated product is variable
$product = \WC\SmoothGenerator\Generator\Product::generate();

// Returns WC_Product object of Simple product and don't save it  to database
$product = \WC\SmoothGenerator\Generator\Product::generate_simple_product();

// Returns WC_Product object of Variable Product and saves it to database
$variable_product = \WC\SmoothGenerator\Generator\Product::generate_variable_product();

Src: https://github.com/woocommerce/wc-smooth-generator/blob/master/includes/Generator/Product.php

プログラムで製品を作成する場合は、必要に応じて上記のProduct generatorクラスを編集できます。

1