0

我已经下载了 woocommerce php API 的最新存储库。我一直在关注 woocommerce REST API Docs 来创建测试产品。我已经从他们的文档中复制了示例,但它不起作用。这是我的代码。

API 文档: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: No product data specified to create product [woocommerce_api_missing_product_data]
4

1 回答 1

0

而不是$data = []使用$data['product'] = []

woocommerce API 正在检查是否$data['product']已设置,如果为空则返回 [woocommerce_api_missing_product_data]。

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 );
        }
于 2016-11-29T15:33:10.423 回答