No product data specified to create product [woocommerce_api_missing_product_data]

怎甘沉沦 提交于 2019-12-25 09:02:58

问题


I have downloaded latest repository of woocommerce php API. I have been following woocommerce REST API Docs to create a test product. I have copied the sample from their documentation but it is not working. Here is my code.

API docs : http://woocommerce.github.io/woocommerce-rest-api-docs/?php#create-a-product

<?php

require_once("vendor/autoload.php");

use Automattic\WooCommerce\Client;

$woocommerce = new Client(
    'http://wocom.dev', 
    'ck_c62182de9983593c9da6ed5c4642ff50e79e1b4f', 
    'cs_8f69a9d588abb9ca1b0309f22ac2cd7841496d56',
    [
        'version' => 'v3',
        'ssl_verify'=> 'false',
        'timeout' => 30000
    ]
);



$data = [
    'name' => 'Ship Your Idea',
    'type' => 'variable',
    'description' => 'Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.',
    'short_description' => 'Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.',
    'categories' => [
        [
            'id' => 9
        ],
        [
            'id' => 14
        ]
    ],
    'images' => [
        [
            'src' => 'http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_4_front.jpg',
            'position' => 0
        ],
        [
            'src' => 'http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_4_back.jpg',
            'position' => 1
        ],
        [
            'src' => 'http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_3_front.jpg',
            'position' => 2
        ],
        [
            'src' => 'http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_3_back.jpg',
            'position' => 3
        ]
    ],
    'attributes' => [
        [
            'id' => 6,
            'position' => 0,
            'visible' => false,
            'variation' => true,
            'options' => [
                'Black',
                'Green'
            ]
        ],
        [
            'name' => 'Size',
            'position' => 0,
            'visible' => true,
            'variation' => true,
            'options' => [
                'S',
                'M'
            ]
        ]
    ],
    'default_attributes' => [
        [
            'id' => 6,
            'option' => 'Black'
        ],
        [
            'name' => 'Size',
            'option' => 'S'
        ]
    ],
    'variations' => [
        [
            'regular_price' => '19.99',
            'image' => [
                [
                    'src' => 'http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_4_front.jpg',
                    'position' => 0
                ]
            ],
            'attributes' => [
                [
                    'id' => 6,
                    'option' => 'black'
                ],
                [
                    'name' => 'Size',
                    'option' => 'S'
                ]
            ]
        ],
        [
            'regular_price' => '19.99',
            'image' => [
                [
                    'src' => 'http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_3_front.jpg',
                    'position' => 0
                ]
            ],
            'attributes' => [
                [
                    'id' => 6,
                    'option' => 'green'
                ],
                [
                    'name' => 'Size',
                    'option' => 'M'
                ]
            ]
        ]
    ]
];




try
{
    print_r($woocommerce->post('products', $data));

}
catch(Exception $e)
{
    echo $e->getMessage();
}

Error :

Error: No product data specified to create product [woocommerce_api_missing_product_data]

回答1:


Instead of $data = [] use $data['product'] = []

The woocommerce API is checking to see if $data['product'] is set, and returns [woocommerce_api_missing_product_data] if its empty.

See woocommerce/includes/api/legacy/v2/class-wc-api-products.php

public function create_product( $data ) {
$id = 0;
    try {
        if ( ! isset( $data['product'] ) ) {
            throw new WC_API_Exception( 'woocommerce_api_missing_product_data', sprintf( __( 'No %1$s data specified to create %1$s', 'woocommerce' ), 'product' ), 400 );
        }


来源:https://stackoverflow.com/questions/40316720/no-product-data-specified-to-create-product-woocommerce-api-missing-product-dat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!