首页 > 解决方案 > Wordpress/Woocommerce rest api 根据用户角色返回产品价格

问题描述

我正在尝试实现一个连接到 Wordpress 和 Woocommerce 并根据用户角色显示产品价格的应用程序客户端。

这是我的实际观点:

我正在使用一个名为 Elex(免费版)的插件来应用基于角色的定价规则;

激活了rest api keys(api keys中的user字段是管理员);

创建了一个新的用户角色,例如“my_user_role”;

创建了一个角色为“my_user_role”的用户“new_user”;

为管理员 (x%) 和 my_user_role (y%) 创建折扣规则;

从客户端我调用带有 consumer_key 和 consumer_secret 参数的 https 请求:

   mydomain/wp-json/wc/v3/products?consumer_key=XXXXXXXXXX...&consumer_secret=YYYYYYY....  

在客户端应用程序中,我可以将产品显示为访客用户或登录用户。如果我打电话

    mydomain/wp-json/wc/v3/products 

作为访客用户,它会向我显示常规价格作为响应,如果我以 new_user 身份登录,它会向我显示管理员规则的价格折扣(这是因为 wordpress rest api 密钥不用作登录功能)!

如果我在添加产品时从 Wordpress 仪表板进行检查,我可以获得 Cookie 和 nonce。因此,如果我以 new_user 身份登录 wordpress 仪表板,我可以获取当前用户的 cookie 和 nonce,我可以从邮递员那里调用

   mydomain/wp-json/wc/v3/products  

添加

   X-WP-Nonce 
   Cookie

我得到了为 my_user_role 提供的产品价格。

我可以在包含以下内容的个人插件文件中从 wordpress 后端创建 cookie:

   register_rest_route("myurl", "/generate_cookie", array("methods" => "POST" , "callback" => "generate_cookies")

在我的 generate_cookies 函数中:

   // received username and password parameters
   $user = wp_authenticate($username,$password);
   $cookie = wp_generate_auth_cookie($user->ID,1209600,"logged_in");
   return array("cookie" => $cookie , "cookie_name" => LOGGED_IN_COOKIE, "user" => $this->getUserInfo($user));

我怎样才能得到随机数?或者实现我的目标的最佳方式是什么?

标签: wordpressrestwoocommerce

解决方案


推荐阅读