4

現在、クライアント 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 キーを提供し、これらを動的に取得する方法はありますか?

4

3 に答える 3

0

はい、次のように、コードで行う必要がある細かいカスタマイズがあります。

背景情報:

各ユーザーのコンシューマー キー、コンシューマー シークレット キー、および読み取り/書き込みアクセス許可 ( WooCommerce API キーがそのユーザー用に生成されている場合) は、それぞれ ' woocommerce_api_consumer_key '、' woocommerce_api_consumer_secret ' および ' woocommerce_api_key_permissions 'として meta_keys と共に wordpress の usermeta テーブルに保存されます。

したがって、最初に現在のユーザーIDを取得してから、上記のようにそのユーザーのメタ値を取得し、いくつかの変数に割り当ててパラメーターとして送信する必要があります。

于 2015-07-10T14:29:53.543 に答える
0

キーはユーザーごとに所有されており、他のユーザーには役に立たないため、ウーコマースサービスを消費したい魔女のために、その顧客のAPIキーをプログラムで生成することが問題だと思います。

私のアドバイスは、woocommerce の管理者ソース コードを調べることです。

于 2015-08-28T08:54:14.773 に答える