現在、クライアント API を使用して、製品をアップロードするためのシンプルなユーザー フロントエンドを実装しています。機能は正常client->products->create()
に動作しているようですが、1 つの問題を回避できません。
製品をアップロードするたびに、現在ログインしているユーザーではなく、管理者ユーザーにベンダーが設定されます。API を介してベンダーを設定する方法はありますか? 誰かがこれをやったことがありますか?
これは私が作成した関数で、フォームが送信されたときに AJaX によって呼び出されます (ここでは意図的にキーと Web サイトのフィールドを空のままにしています)。
function addProduct()
{
$options = array(
'debug' => false,
'return_as_array' => false,
'validate_url' => false,
'timeout' => 30,
'ssl_verify' => false,
);
try {
$client = new WC_API_Client('', '', '', $options);
$productName = $_POST["productname"];
$price = $_POST["price"];
$discountPrice = $_POST["discountPrice"];
$description = $_POST["description"];
$shortDescription = $_POST["shortDescription"];
$authorId = 5;
$client->products->create(array('title' => $productName, 'type' => 'simple', 'regular_price' => $price, 'description' => $description));
} catch (WC_API_Client_Exception $e) {
echo $e->getMessage() . PHP_EOL;
echo $e->getCode() . PHP_EOL;
if ($e instanceof WC_API_Client_HTTP_Exception) {
print_r($e->get_request());
print_r($e->get_response());
}
}
echo ("Publicado" . $authorId);
// Una función AJaX en WordPress debe siempre terminarse con die().
die();
}
問題はコンシューマ キーとコンシューマ シークレットにあるようです。プログラムでクライアントに API キーを提供し、これらを動的に取得する方法はありますか?