{"id":2710,"date":"2025-08-20T03:27:10","date_gmt":"2025-08-20T03:27:10","guid":{"rendered":"https:\/\/umaax.com\/?post_type=product&#038;p=2710"},"modified":"2025-08-20T10:43:41","modified_gmt":"2025-08-20T10:43:41","slug":"wpapixitongduijiekaifa","status":"publish","type":"product","link":"https:\/\/umaax.com\/en\/product\/wpapixitongduijiekaifa\/","title":{"rendered":"WP API\u7cfb\u7edf\u5bf9\u63a5\u5f00\u53d1"},"content":{"rendered":"<h2>\u7cfb\u7edf\u5bf9\u63a5WordPress\u5efa\u7ad9\u5168\u9762\u89e3\u6790<\/h2>\n<p>\u5728\u5f53\u4eca\u6570\u5b57\u5316\u65f6\u4ee3\uff0c\u4f01\u4e1a\u9700\u8981\u4e00\u4e2a\u529f\u80fd\u5f3a\u5927\u4e14\u7075\u6d3b\u7684\u7f51\u7ad9\u6765\u5c55\u793a\u4ea7\u54c1\u3001\u670d\u52a1\u5e76\u4e0e\u5ba2\u6237\u4e92\u52a8\u3002WordPress\u4f5c\u4e3a\u5168\u7403\u6700\u53d7\u6b22\u8fce\u7684\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\uff0c\u56e0\u5176\u6613\u7528\u6027\u548c\u6269\u5c55\u6027\u6210\u4e3a\u4f17\u591a\u4f01\u4e1a\u7684\u9996\u9009\u3002\u7136\u800c\uff0c\u8981\u771f\u6b63\u53d1\u6325WordPress\u7684\u6f5c\u529b\uff0c\u7cfb\u7edf\u5bf9\u63a5\u662f\u4e00\u4e2a\u4e0d\u53ef\u5ffd\u89c6\u7684\u73af\u8282\u3002\u6211\u4eec\u5728\u591a\u5e74\u7684\u5b9e\u8df5\u4e2d\u53d1\u73b0\uff0c\u5408\u7406\u7684\u7cfb\u7edf\u5bf9\u63a5\u4e0d\u4ec5\u80fd\u63d0\u5347\u7f51\u7ad9\u529f\u80fd\uff0c\u8fd8\u80fd\u663e\u8457\u63d0\u9ad8\u4e1a\u52a1\u6548\u7387\u3002<\/p>\n<h3>\u4ec0\u4e48\u662fWordPress\u7cfb\u7edf\u5bf9\u63a5\uff1f<\/h3>\n<p>\u7cfb\u7edf\u5bf9\u63a5\u662f\u6307\u5c06WordPress\u7f51\u7ad9\u4e0e\u5176\u4ed6\u4e1a\u52a1\u7cfb\u7edf\u8fdb\u884c\u96c6\u6210\uff0c\u5b9e\u73b0\u6570\u636e\u5171\u4eab\u548c\u529f\u80fd\u4e92\u901a\u3002\u8fd9\u4e9b\u7cfb\u7edf\u53ef\u80fd\u5305\u62ec\uff1a<\/p>\n<ul>\n<li>CRM\uff08\u5ba2\u6237\u5173\u7cfb\u7ba1\u7406\u7cfb\u7edf\uff09<\/li>\n<li>ERP\uff08\u4f01\u4e1a\u8d44\u6e90\u8ba1\u5212\u7cfb\u7edf\uff09<\/li>\n<li>\u7535\u5b50\u5546\u52a1\u5e73\u53f0<\/li>\n<li>\u652f\u4ed8\u7f51\u5173<\/li>\n<li>\u7b2c\u4e09\u65b9API\u670d\u52a1<\/li>\n<li>\u90ae\u4ef6\u8425\u9500\u5de5\u5177<\/li>\n<li>\u6570\u636e\u5206\u6790\u5e73\u53f0<\/li>\n<\/ul>\n<p>\u901a\u8fc7\u7cfb\u7edf\u5bf9\u63a5\uff0c\u6211\u4eec\u53ef\u4ee5\u6784\u5efa\u4e00\u4e2a\u751f\u6001\u7cfb\u7edf\uff0c\u8ba9WordPress\u4e0d\u4ec5\u4ec5\u662f\u4e00\u4e2a\u5c55\u793a\u5185\u5bb9\u7684\u5e73\u53f0\uff0c\u800c\u662f\u4f01\u4e1a\u6570\u5b57\u5316\u6218\u7565\u7684\u6838\u5fc3\u7ec4\u6210\u90e8\u5206\u3002<\/p>\n<h2>\u7cfb\u7edf\u5bf9\u63a5\u7684\u4e3b\u8981\u65b9\u5f0f\u4e0e\u6280\u672f<\/h2>\n<h3>WordPress REST API<\/h3>\n<p>WordPress 4.7\u7248\u672c\u540e\u5185\u7f6e\u4e86REST API\uff0c\u8fd9\u4e3a\u7cfb\u7edf\u5bf9\u63a5\u63d0\u4f9b\u4e86\u6807\u51c6\u5316\u7684\u63a5\u53e3\u3002\u5229\u7528REST API\uff0c\u6211\u4eec\u53ef\u4ee5\uff1a<\/p>\n<ul>\n<li>\u8bfb\u53d6\u548c\u4fee\u6539WordPress\u5185\u5bb9<\/li>\n<li>\u7ba1\u7406\u7528\u6237\u548c\u6743\u9650<\/li>\n<li>\u63a7\u5236\u5a92\u4f53\u6587\u4ef6<\/li>\n<li>\u6269\u5c55\u81ea\u5b9a\u4e49\u6570\u636e\u7ed3\u6784<\/li>\n<\/ul>\n<p>\u4e00\u4e2a\u7b80\u5355\u7684\u8c03\u7528WordPress REST API\u7684\u793a\u4f8b\u4ee3\u7801\uff1a<\/p>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-php php hljs\"><span class=\"hljs-comment\">\/\/ \u83b7\u53d6\u6700\u65b010\u7bc7\u6587\u7ae0<\/span>\r\nfetch(<span class=\"hljs-string\">'https:\/\/your-wordpress-site.com\/wp-json\/wp\/v2\/posts?per_page=10'<\/span>)\r\n  .then(response =&gt; response.json())\r\n  .then(posts =&gt; {\r\n    console.log(posts);\r\n    <span class=\"hljs-comment\">\/\/ \u5904\u7406\u83b7\u53d6\u7684\u6587\u7ae0\u6570\u636e<\/span>\r\n  });<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h3>\u81ea\u5b9a\u4e49API\u5f00\u53d1<\/h3>\n<p>\u6709\u65f6\u5019\uff0cWordPress\u5185\u7f6e\u7684API\u53ef\u80fd\u65e0\u6cd5\u6ee1\u8db3\u7279\u5b9a\u9700\u6c42\uff0c\u8fd9\u65f6\u6211\u4eec\u9700\u8981\u5f00\u53d1\u81ea\u5b9a\u4e49API\u7aef\u70b9\uff0c\u6211\u4eec\u7ecf\u5e38\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u521b\u5efa\u81ea\u5b9a\u4e49API\uff1a<\/p>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-javascript javascript hljs\"><span class=\"hljs-comment\">\/\/ \u5728functions.php\u4e2d\u6ce8\u518c\u81ea\u5b9a\u4e49API\u7aef\u70b9<\/span>\r\nadd_action(<span class=\"hljs-string\">'rest_api_init'<\/span>, <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> () <\/span>{\r\n  register_rest_route(<span class=\"hljs-string\">'custom\/v1'<\/span>, <span class=\"hljs-string\">'\/product-sync'<\/span>, [\r\n    <span class=\"hljs-string\">'methods'<\/span> =&gt; <span class=\"hljs-string\">'POST'<\/span>,\r\n    <span class=\"hljs-string\">'callback'<\/span> =&gt; <span class=\"hljs-string\">'sync_products_with_erp'<\/span>,\r\n    <span class=\"hljs-string\">'permission_callback'<\/span> =&gt; <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>() <\/span>{\r\n      <span class=\"hljs-keyword\">return<\/span> current_user_can(<span class=\"hljs-string\">'manage_options'<\/span>);\r\n    }\r\n  ]);\r\n});\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">sync_products_with_erp<\/span>(<span class=\"hljs-params\">$request<\/span>) <\/span>{\r\n  <span class=\"hljs-comment\">\/\/ \u5904\u7406\u4ea7\u54c1\u540c\u6b65\u903b\u8f91<\/span>\r\n  $params = $request-&gt;get_params();\r\n  <span class=\"hljs-comment\">\/\/ \u6267\u884c\u540c\u6b65\u64cd\u4f5c<\/span>\r\n  <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> WP_REST_Response([<span class=\"hljs-string\">'status'<\/span> =&gt; <span class=\"hljs-string\">'success'<\/span>], <span class=\"hljs-number\">200<\/span>);\r\n}<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h3>Webhook\u96c6\u6210<\/h3>\n<p>Webhook\u662f\u4e00\u79cd\u5b9e\u65f6\u901a\u77e5\u673a\u5236\uff0c\u5f53\u7279\u5b9a\u4e8b\u4ef6\u53d1\u751f\u65f6\uff0c\u7cfb\u7edf\u4f1a\u81ea\u52a8\u5411\u9884\u8bbe\u7684URL\u53d1\u9001HTTP\u8bf7\u6c42\u3002\u8fd9\u662f\u5b9e\u73b0\u7cfb\u7edf\u5bf9\u63a5\u7684\u6709\u6548\u65b9\u5f0f\u4e4b\u4e00\u3002\u4f8b\u5982\uff0c\u6211\u4eec\u53ef\u4ee5\u8bbe\u7f6eWordPress\u5728\u53d1\u5e03\u65b0\u6587\u7ae0\u65f6\uff0c\u901a\u8fc7Webhook\u901a\u77e5CRM\u7cfb\u7edf\uff1a<\/p>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-php php hljs\"><span class=\"hljs-comment\">\/\/ \u5728\u65b0\u6587\u7ae0\u53d1\u5e03\u65f6\u89e6\u53d1Webhook<\/span>\r\nadd_action(<span class=\"hljs-string\">'publish_post'<\/span>, <span class=\"hljs-string\">'notify_crm_on_publish'<\/span>, <span class=\"hljs-number\">10<\/span>, <span class=\"hljs-number\">2<\/span>);\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">notify_crm_on_publish<\/span><span class=\"hljs-params\">(<span class=\"hljs-variable\">$post_id<\/span>, <span class=\"hljs-variable\">$post<\/span>)<\/span> <\/span>{\r\n  <span class=\"hljs-variable\">$crm_webhook_url<\/span> = <span class=\"hljs-string\">'https:\/\/your-crm-system.com\/api\/webhook'<\/span>;\r\n  \r\n  <span class=\"hljs-variable\">$data<\/span> = [\r\n    <span class=\"hljs-string\">'post_id'<\/span> =&gt; <span class=\"hljs-variable\">$post_id<\/span>,\r\n    <span class=\"hljs-string\">'title'<\/span> =&gt; <span class=\"hljs-variable\">$post<\/span>-&gt;post_title,\r\n    <span class=\"hljs-string\">'content'<\/span> =&gt; <span class=\"hljs-variable\">$post<\/span>-&gt;post_content,\r\n    <span class=\"hljs-string\">'author'<\/span> =&gt; get_the_author_meta(<span class=\"hljs-string\">'display_name'<\/span>, <span class=\"hljs-variable\">$post<\/span>-&gt;post_author),\r\n    <span class=\"hljs-string\">'date'<\/span> =&gt; <span class=\"hljs-variable\">$post<\/span>-&gt;post_date\r\n  ];\r\n  \r\n  wp_remote_post(<span class=\"hljs-variable\">$crm_webhook_url<\/span>, [\r\n    <span class=\"hljs-string\">'body'<\/span> =&gt; json_encode(<span class=\"hljs-variable\">$data<\/span>),\r\n    <span class=\"hljs-string\">'headers'<\/span> =&gt; [<span class=\"hljs-string\">'Content-Type'<\/span> =&gt; <span class=\"hljs-string\">'application\/json'<\/span>]\r\n  ]);\r\n}<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h2>\u5e38\u89c1\u7cfb\u7edf\u5bf9\u63a5\u573a\u666f\u89e3\u6790<\/h2>\n<h3>WordPress\u4e0eCRM\u7cfb\u7edf\u5bf9\u63a5<\/h3>\n<p>CRM\u7cfb\u7edf\u5bf9\u63a5\u662f\u4f01\u4e1a\u6700\u5e38\u89c1\u7684\u9700\u6c42\u4e4b\u4e00\u3002\u901a\u8fc7\u5c06WordPress\u4e0eCRM\u7cfb\u7edf\u5bf9\u63a5\uff0c\u6211\u4eec\u53ef\u4ee5\uff1a<\/p>\n<ul>\n<li>\u5c06\u8868\u5355\u63d0\u4ea4\u6570\u636e\u76f4\u63a5\u540c\u6b65\u5230CRM<\/li>\n<li>\u8ddf\u8e2a\u7f51\u7ad9\u8bbf\u5ba2\u884c\u4e3a\u5e76\u5173\u8054\u5230CRM\u5ba2\u6237\u8bb0\u5f55<\/li>\n<li>\u6839\u636eCRM\u6570\u636e\u4e2a\u6027\u5316\u7f51\u7ad9\u5185\u5bb9<\/li>\n<\/ul>\n<p>\u4e3b\u6d41\u7684CRM\u7cfb\u7edf\u5982Salesforce\u3001HubSpot\u3001Zoho\u7b49\u90fd\u63d0\u4f9b\u4e86WordPress\u96c6\u6210\u63d2\u4ef6\uff0c\u4f46\u6709\u65f6\u6211\u4eec\u9700\u8981\u5f00\u53d1\u81ea\u5b9a\u4e49\u89e3\u51b3\u65b9\u6848\u6765\u6ee1\u8db3\u7279\u5b9a\u9700\u6c42\u3002\u4f8b\u5982\uff0c\u5c06WooCommerce\u8ba2\u5355\u4fe1\u606f\u540c\u6b65\u5230CRM\uff1a<\/p>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-php php hljs\"><span class=\"hljs-comment\">\/\/ \u5f53WooCommerce\u8ba2\u5355\u72b6\u6001\u53d8\u4e3a\"\u5df2\u5b8c\u6210\"\u65f6\uff0c\u540c\u6b65\u5230CRM<\/span>\r\nadd_action(<span class=\"hljs-string\">'woocommerce_order_status_completed'<\/span>, <span class=\"hljs-string\">'sync_order_to_crm'<\/span>);\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">sync_order_to_crm<\/span><span class=\"hljs-params\">(<span class=\"hljs-variable\">$order_id<\/span>)<\/span> <\/span>{\r\n  <span class=\"hljs-variable\">$order<\/span> = wc_get_order(<span class=\"hljs-variable\">$order_id<\/span>);\r\n  <span class=\"hljs-variable\">$customer_email<\/span> = <span class=\"hljs-variable\">$order<\/span>-&gt;get_billing_email();\r\n  <span class=\"hljs-variable\">$customer_name<\/span> = <span class=\"hljs-variable\">$order<\/span>-&gt;get_billing_first_name() . <span class=\"hljs-string\">' '<\/span> . <span class=\"hljs-variable\">$order<\/span>-&gt;get_billing_last_name();\r\n  <span class=\"hljs-variable\">$order_total<\/span> = <span class=\"hljs-variable\">$order<\/span>-&gt;get_total();\r\n  <span class=\"hljs-variable\">$order_items<\/span> = [];\r\n  \r\n  <span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-variable\">$order<\/span>-&gt;get_items() <span class=\"hljs-keyword\">as<\/span> <span class=\"hljs-variable\">$item<\/span>) {\r\n    <span class=\"hljs-variable\">$order_items<\/span>[] = [\r\n      <span class=\"hljs-string\">'product_id'<\/span> =&gt; <span class=\"hljs-variable\">$item<\/span>-&gt;get_product_id(),\r\n      <span class=\"hljs-string\">'name'<\/span> =&gt; <span class=\"hljs-variable\">$item<\/span>-&gt;get_name(),\r\n      <span class=\"hljs-string\">'quantity'<\/span> =&gt; <span class=\"hljs-variable\">$item<\/span>-&gt;get_quantity(),\r\n      <span class=\"hljs-string\">'total'<\/span> =&gt; <span class=\"hljs-variable\">$item<\/span>-&gt;get_total()\r\n    ];\r\n  }\r\n  \r\n  <span class=\"hljs-comment\">\/\/ \u51c6\u5907\u53d1\u9001\u5230CRM\u7684\u6570\u636e<\/span>\r\n  <span class=\"hljs-variable\">$crm_data<\/span> = [\r\n    <span class=\"hljs-string\">'customer'<\/span> =&gt; [\r\n      <span class=\"hljs-string\">'email'<\/span> =&gt; <span class=\"hljs-variable\">$customer_email<\/span>,\r\n      <span class=\"hljs-string\">'name'<\/span> =&gt; <span class=\"hljs-variable\">$customer_name<\/span>\r\n    ],\r\n    <span class=\"hljs-string\">'order'<\/span> =&gt; [\r\n      <span class=\"hljs-string\">'id'<\/span> =&gt; <span class=\"hljs-variable\">$order_id<\/span>,\r\n      <span class=\"hljs-string\">'total'<\/span> =&gt; <span class=\"hljs-variable\">$order_total<\/span>,\r\n      <span class=\"hljs-string\">'items'<\/span> =&gt; <span class=\"hljs-variable\">$order_items<\/span>,\r\n      <span class=\"hljs-string\">'date'<\/span> =&gt; <span class=\"hljs-variable\">$order<\/span>-&gt;get_date_created()-&gt;date(<span class=\"hljs-string\">'Y-m-d H:i:s'<\/span>)\r\n    ]\r\n  ];\r\n  \r\n  <span class=\"hljs-comment\">\/\/ \u53d1\u9001\u6570\u636e\u5230CRM API<\/span>\r\n  <span class=\"hljs-variable\">$response<\/span> = wp_remote_post(<span class=\"hljs-string\">'https:\/\/your-crm-api.com\/orders'<\/span>, [\r\n    <span class=\"hljs-string\">'body'<\/span> =&gt; json_encode(<span class=\"hljs-variable\">$crm_data<\/span>),\r\n    <span class=\"hljs-string\">'headers'<\/span> =&gt; [\r\n      <span class=\"hljs-string\">'Content-Type'<\/span> =&gt; <span class=\"hljs-string\">'application\/json'<\/span>,\r\n      <span class=\"hljs-string\">'Authorization'<\/span> =&gt; <span class=\"hljs-string\">'Bearer your-api-key'<\/span>\r\n    ]\r\n  ]);\r\n}<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h3>WordPress\u4e0e\u652f\u4ed8\u7cfb\u7edf\u5bf9\u63a5<\/h3>\n<p>\u7535\u5b50\u5546\u52a1\u7f51\u7ad9\u9700\u8981\u4e0e\u5404\u79cd\u652f\u4ed8\u7f51\u5173\u5bf9\u63a5\uff0c\u4ee5\u4fbf\u63d0\u4f9b\u591a\u6837\u5316\u7684\u652f\u4ed8\u9009\u9879\u3002WordPress\u7684WooCommerce\u63d2\u4ef6\u652f\u6301\u591a\u79cd\u652f\u4ed8\u65b9\u5f0f\uff0c\u4f46\u6709\u65f6\u6211\u4eec\u9700\u8981\u96c6\u6210\u672c\u5730\u6216\u7279\u5b9a\u7684\u652f\u4ed8\u7cfb\u7edf\u3002\u4ee5\u4e0b\u662f\u4e00\u4e2a\u7b80\u5316\u7684\u652f\u4ed8\u7f51\u5173\u5bf9\u63a5\u793a\u4f8b\uff1a<\/p>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-php php hljs\"><span class=\"hljs-comment\">\/\/ \u6ce8\u518c\u81ea\u5b9a\u4e49\u652f\u4ed8\u7f51\u5173<\/span>\r\nadd_filter(<span class=\"hljs-string\">'woocommerce_payment_gateways'<\/span>, <span class=\"hljs-string\">'add_custom_payment_gateway'<\/span>);\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">add_custom_payment_gateway<\/span><span class=\"hljs-params\">(<span class=\"hljs-variable\">$gateways<\/span>)<\/span> <\/span>{\r\n  <span class=\"hljs-variable\">$gateways<\/span>[] = <span class=\"hljs-string\">'WC_Custom_Payment_Gateway'<\/span>;\r\n  <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-variable\">$gateways<\/span>;\r\n}\r\n\r\nadd_action(<span class=\"hljs-string\">'plugins_loaded'<\/span>, <span class=\"hljs-string\">'init_custom_payment_gateway'<\/span>);\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">init_custom_payment_gateway<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\r\n  <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">WC_Custom_Payment_Gateway<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">WC_Payment_Gateway<\/span> <\/span>{\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">__construct<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\r\n      <span class=\"hljs-variable\">$this<\/span>-&gt;id = <span class=\"hljs-string\">'custom_payment'<\/span>;\r\n      <span class=\"hljs-variable\">$this<\/span>-&gt;method_title = <span class=\"hljs-string\">'\u81ea\u5b9a\u4e49\u652f\u4ed8\u7f51\u5173'<\/span>;\r\n      <span class=\"hljs-variable\">$this<\/span>-&gt;title = <span class=\"hljs-string\">'\u4f7f\u7528\u81ea\u5b9a\u4e49\u652f\u4ed8\u65b9\u5f0f'<\/span>;\r\n      <span class=\"hljs-variable\">$this<\/span>-&gt;has_fields = <span class=\"hljs-keyword\">true<\/span>;\r\n      <span class=\"hljs-variable\">$this<\/span>-&gt;init_form_fields();\r\n      <span class=\"hljs-variable\">$this<\/span>-&gt;init_settings();\r\n    }\r\n    \r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">process_payment<\/span><span class=\"hljs-params\">(<span class=\"hljs-variable\">$order_id<\/span>)<\/span> <\/span>{\r\n      <span class=\"hljs-variable\">$order<\/span> = wc_get_order(<span class=\"hljs-variable\">$order_id<\/span>);\r\n      \r\n      <span class=\"hljs-comment\">\/\/ \u8c03\u7528\u5916\u90e8\u652f\u4ed8API<\/span>\r\n      <span class=\"hljs-variable\">$payment_result<\/span> = <span class=\"hljs-variable\">$this<\/span>-&gt;call_payment_api([\r\n        <span class=\"hljs-string\">'amount'<\/span> =&gt; <span class=\"hljs-variable\">$order<\/span>-&gt;get_total(),\r\n        <span class=\"hljs-string\">'currency'<\/span> =&gt; <span class=\"hljs-variable\">$order<\/span>-&gt;get_currency(),\r\n        <span class=\"hljs-string\">'description'<\/span> =&gt; <span class=\"hljs-string\">'\u8ba2\u5355 #'<\/span> . <span class=\"hljs-variable\">$order_id<\/span>\r\n      ]);\r\n      \r\n      <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-variable\">$payment_result<\/span>[<span class=\"hljs-string\">'success'<\/span>]) {\r\n        <span class=\"hljs-variable\">$order<\/span>-&gt;payment_complete();\r\n        <span class=\"hljs-keyword\">return<\/span> [\r\n          <span class=\"hljs-string\">'result'<\/span> =&gt; <span class=\"hljs-string\">'success'<\/span>,\r\n          <span class=\"hljs-string\">'redirect'<\/span> =&gt; <span class=\"hljs-variable\">$this<\/span>-&gt;get_return_url(<span class=\"hljs-variable\">$order<\/span>)\r\n        ];\r\n      } <span class=\"hljs-keyword\">else<\/span> {\r\n        <span class=\"hljs-keyword\">return<\/span> [\r\n          <span class=\"hljs-string\">'result'<\/span> =&gt; <span class=\"hljs-string\">'failure'<\/span>,\r\n          <span class=\"hljs-string\">'messages'<\/span> =&gt; <span class=\"hljs-variable\">$payment_result<\/span>[<span class=\"hljs-string\">'error_message'<\/span>]\r\n        ];\r\n      }\r\n    }\r\n    \r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">call_payment_api<\/span><span class=\"hljs-params\">(<span class=\"hljs-variable\">$data<\/span>)<\/span> <\/span>{\r\n      <span class=\"hljs-comment\">\/\/ \u5b9e\u9645\u8c03\u7528\u652f\u4ed8API\u7684\u4ee3\u7801<\/span>\r\n      <span class=\"hljs-comment\">\/\/ \u8fd4\u56de\u5904\u7406\u7ed3\u679c<\/span>\r\n    }\r\n  }\r\n}<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h2>\u6570\u636e\u540c\u6b65\u7b56\u7565\u4e0e\u4f18\u5316<\/h2>\n<h3>\u5b9e\u65f6\u540c\u6b65 vs \u6279\u91cf\u540c\u6b65<\/h3>\n<p>\u5728\u7cfb\u7edf\u5bf9\u63a5\u4e2d\uff0c\u6570\u636e\u540c\u6b65\u7b56\u7565\u81f3\u5173\u91cd\u8981\u3002\u6211\u4eec\u901a\u5e38\u8003\u8651\u4e24\u79cd\u4e3b\u8981\u540c\u6b65\u7b56\u7565\uff1a<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<th>\u540c\u6b65\u7b56\u7565<\/th>\n<th>\u9002\u7528\u573a\u666f<\/th>\n<th>\u4f18\u52bf<\/th>\n<th>\u52a3\u52bf<\/th>\n<\/tr>\n<tr>\n<td>\u5b9e\u65f6\u540c\u6b65<\/td>\n<td>\u8ba2\u5355\u5904\u7406\u3001\u5e93\u5b58\u7ba1\u7406\u3001\u7528\u6237\u6ce8\u518c<\/td>\n<td>\u6570\u636e\u5b9e\u65f6\u6027\u9ad8\uff0c\u7528\u6237\u4f53\u9a8c\u597d<\/td>\n<td>\u7cfb\u7edf\u8d1f\u8f7d\u5927\uff0c\u5bf9API\u4f9d\u8d56\u6027\u5f3a<\/td>\n<\/tr>\n<tr>\n<td>\u6279\u91cf\u540c\u6b65<\/td>\n<td>\u62a5\u8868\u751f\u6210\u3001\u6570\u636e\u5206\u6790\u3001\u975e\u5173\u952e\u4e1a\u52a1\u6570\u636e<\/td>\n<td>\u7cfb\u7edf\u8d1f\u8f7d\u4f4e\uff0c\u5bb9\u9519\u6027\u9ad8<\/td>\n<td>\u6570\u636e\u5ef6\u8fdf\uff0c\u53ef\u80fd\u5f71\u54cd\u51b3\u7b56<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5728\u5b9e\u9645\u9879\u76ee\u4e2d\uff0c\u6211\u4eec\u901a\u5e38\u91c7\u7528\u6df7\u5408\u7b56\u7565\uff0c\u6838\u5fc3\u4e1a\u52a1\u6570\u636e\u5b9e\u65f6\u540c\u6b65\uff0c\u975e\u5173\u952e\u6570\u636e\u6279\u91cf\u5904\u7406\u3002\u4f8b\u5982\uff0c\u53ef\u4ee5\u4f7f\u7528WordPress\u7684\u8ba1\u5212\u4efb\u52a1\u5b9e\u73b0\u6279\u91cf\u540c\u6b65\uff1a<\/p>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-php php hljs\"><span class=\"hljs-comment\">\/\/ \u6ce8\u518c\u6bcf\u65e5\u6570\u636e\u540c\u6b65\u8ba1\u5212\u4efb\u52a1<\/span>\r\nregister_activation_hook(<span class=\"hljs-keyword\">__FILE__<\/span>, <span class=\"hljs-string\">'setup_daily_sync_schedule'<\/span>);\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">setup_daily_sync_schedule<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\r\n  <span class=\"hljs-keyword\">if<\/span> (!wp_next_scheduled(<span class=\"hljs-string\">'daily_data_sync_event'<\/span>)) {\r\n    wp_schedule_event(time(), <span class=\"hljs-string\">'daily'<\/span>, <span class=\"hljs-string\">'daily_data_sync_event'<\/span>);\r\n  }\r\n}\r\n\r\nadd_action(<span class=\"hljs-string\">'daily_data_sync_event'<\/span>, <span class=\"hljs-string\">'perform_daily_data_sync'<\/span>);\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">perform_daily_data_sync<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\r\n  <span class=\"hljs-comment\">\/\/ \u83b7\u53d6\u9700\u8981\u540c\u6b65\u7684\u6570\u636e<\/span>\r\n  <span class=\"hljs-variable\">$products<\/span> = get_posts([\r\n    <span class=\"hljs-string\">'post_type'<\/span> =&gt; <span class=\"hljs-string\">'product'<\/span>,\r\n    <span class=\"hljs-string\">'posts_per_page'<\/span> =&gt; -<span class=\"hljs-number\">1<\/span>,\r\n    <span class=\"hljs-string\">'meta_query'<\/span> =&gt; [\r\n      [\r\n        <span class=\"hljs-string\">'key'<\/span> =&gt; <span class=\"hljs-string\">'_needs_sync'<\/span>,\r\n        <span class=\"hljs-string\">'value'<\/span> =&gt; <span class=\"hljs-string\">'1'<\/span>\r\n      ]\r\n    ]\r\n  ]);\r\n  \r\n  <span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-variable\">$products<\/span> <span class=\"hljs-keyword\">as<\/span> <span class=\"hljs-variable\">$product<\/span>) {\r\n    <span class=\"hljs-comment\">\/\/ \u6267\u884c\u540c\u6b65\u64cd\u4f5c<\/span>\r\n    <span class=\"hljs-variable\">$result<\/span> = sync_product_to_external_system(<span class=\"hljs-variable\">$product<\/span>-&gt;ID);\r\n    \r\n    <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-variable\">$result<\/span>) {\r\n      <span class=\"hljs-comment\">\/\/ \u66f4\u65b0\u540c\u6b65\u72b6\u6001<\/span>\r\n      update_post_meta(<span class=\"hljs-variable\">$product<\/span>-&gt;ID, <span class=\"hljs-string\">'_needs_sync'<\/span>, <span class=\"hljs-string\">'0'<\/span>);\r\n      update_post_meta(<span class=\"hljs-variable\">$product<\/span>-&gt;ID, <span class=\"hljs-string\">'_last_synced'<\/span>, current_time(<span class=\"hljs-string\">'mysql'<\/span>));\r\n    }\r\n  }\r\n  \r\n  <span class=\"hljs-comment\">\/\/ \u8bb0\u5f55\u540c\u6b65\u7ed3\u679c<\/span>\r\n  error_log(<span class=\"hljs-string\">'Daily product sync completed at '<\/span> . current_time(<span class=\"hljs-string\">'mysql'<\/span>));\r\n}<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h3>\u9519\u8bef\u5904\u7406\u4e0e\u91cd\u8bd5\u673a\u5236<\/h3>\n<p>\u7cfb\u7edf\u5bf9\u63a5\u4e2d\u7684\u4e00\u4e2a\u5173\u952e\u8003\u8651\u56e0\u7d20\u662f\u9519\u8bef\u5904\u7406\u3002\u5916\u90e8\u7cfb\u7edf\u53ef\u80fd\u6682\u65f6\u4e0d\u53ef\u7528\uff0cAPI\u53ef\u80fd\u53d1\u751f\u53d8\u5316\uff0c\u7f51\u7edc\u53ef\u80fd\u51fa\u73b0\u95ee\u9898\u3002\u4e00\u4e2a\u5065\u58ee\u7684\u7cfb\u7edf\u5bf9\u63a5\u89e3\u51b3\u65b9\u6848\u5e94\u5305\u542b\uff1a<\/p>\n<ul>\n<li>\u5b8c\u5584\u7684\u9519\u8bef\u65e5\u5fd7\u8bb0\u5f55<\/li>\n<li>\u5931\u8d25\u4efb\u52a1\u7684\u81ea\u52a8\u91cd\u8bd5\u673a\u5236<\/li>\n<li>\u5173\u952e\u64cd\u4f5c\u7684\u4e8b\u52a1\u5904\u7406<\/li>\n<li>\u7cfb\u7edf\u76d1\u63a7\u4e0e\u544a\u8b66<\/li>\n<\/ul>\n<p>\u4ee5\u4e0b\u662f\u4e00\u4e2a\u5305\u542b\u91cd\u8bd5\u673a\u5236\u7684API\u8c03\u7528\u793a\u4f8b\uff1a<\/p>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-php php hljs\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">call_external_api_with_retry<\/span><span class=\"hljs-params\">(<span class=\"hljs-variable\">$endpoint<\/span>, <span class=\"hljs-variable\">$data<\/span>, <span class=\"hljs-variable\">$max_retries<\/span> = <span class=\"hljs-number\">3<\/span>)<\/span> <\/span>{\r\n  <span class=\"hljs-variable\">$retry_count<\/span> = <span class=\"hljs-number\">0<\/span>;\r\n  <span class=\"hljs-variable\">$success<\/span> = <span class=\"hljs-keyword\">false<\/span>;\r\n  <span class=\"hljs-variable\">$result<\/span> = <span class=\"hljs-keyword\">null<\/span>;\r\n  \r\n  <span class=\"hljs-keyword\">while<\/span> (!<span class=\"hljs-variable\">$success<\/span> &amp;&amp; <span class=\"hljs-variable\">$retry_count<\/span> &lt; <span class=\"hljs-variable\">$max_retries<\/span>) {\r\n    <span class=\"hljs-variable\">$response<\/span> = wp_remote_post(<span class=\"hljs-variable\">$endpoint<\/span>, [\r\n      <span class=\"hljs-string\">'body'<\/span> =&gt; json_encode(<span class=\"hljs-variable\">$data<\/span>),\r\n      <span class=\"hljs-string\">'headers'<\/span> =&gt; [\r\n        <span class=\"hljs-string\">'Content-Type'<\/span> =&gt; <span class=\"hljs-string\">'application\/json'<\/span>,\r\n        <span class=\"hljs-string\">'Authorization'<\/span> =&gt; <span class=\"hljs-string\">'Bearer '<\/span> . get_option(<span class=\"hljs-string\">'api_key'<\/span>)\r\n      ],\r\n      <span class=\"hljs-string\">'timeout'<\/span> =&gt; <span class=\"hljs-number\">30<\/span>\r\n    ]);\r\n    \r\n    <span class=\"hljs-keyword\">if<\/span> (is_wp_error(<span class=\"hljs-variable\">$response<\/span>)) {\r\n      <span class=\"hljs-variable\">$error_message<\/span> = <span class=\"hljs-variable\">$response<\/span>-&gt;get_error_message();\r\n      error_log(<span class=\"hljs-string\">\"API\u8c03\u7528\u5931\u8d25(\u5c1d\u8bd5{$retry_count}): {$error_message}\"<\/span>);\r\n      <span class=\"hljs-variable\">$retry_count<\/span>++;\r\n      sleep(pow(<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-variable\">$retry_count<\/span>)); <span class=\"hljs-comment\">\/\/ \u6307\u6570\u9000\u907f\u7b56\u7565<\/span>\r\n      <span class=\"hljs-keyword\">continue<\/span>;\r\n    }\r\n    \r\n    <span class=\"hljs-variable\">$status_code<\/span> = wp_remote_retrieve_response_code(<span class=\"hljs-variable\">$response<\/span>);\r\n    \r\n    <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-variable\">$status_code<\/span> &gt;= <span class=\"hljs-number\">200<\/span> &amp;&amp; <span class=\"hljs-variable\">$status_code<\/span> &lt; <span class=\"hljs-number\">300<\/span>) {\r\n      <span class=\"hljs-variable\">$success<\/span> = <span class=\"hljs-keyword\">true<\/span>;\r\n      <span class=\"hljs-variable\">$result<\/span> = json_decode(wp_remote_retrieve_body(<span class=\"hljs-variable\">$response<\/span>), <span class=\"hljs-keyword\">true<\/span>);\r\n    } <span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-variable\">$status_code<\/span> &gt;= <span class=\"hljs-number\">500<\/span>) {\r\n      <span class=\"hljs-comment\">\/\/ \u670d\u52a1\u5668\u9519\u8bef\uff0c\u53ef\u4ee5\u91cd\u8bd5<\/span>\r\n      error_log(<span class=\"hljs-string\">\"API\u670d\u52a1\u5668\u9519\u8bef(\u5c1d\u8bd5{$retry_count}): \u72b6\u6001\u7801 {$status_code}\"<\/span>);\r\n      <span class=\"hljs-variable\">$retry_count<\/span>++;\r\n      sleep(pow(<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-variable\">$retry_count<\/span>));\r\n    } <span class=\"hljs-keyword\">else<\/span> {\r\n      <span class=\"hljs-comment\">\/\/ \u5ba2\u6237\u7aef\u9519\u8bef\uff0c\u4e0d\u91cd\u8bd5<\/span>\r\n      error_log(<span class=\"hljs-string\">\"API\u5ba2\u6237\u7aef\u9519\u8bef: \u72b6\u6001\u7801 {$status_code}\"<\/span>);\r\n      <span class=\"hljs-keyword\">break<\/span>;\r\n    }\r\n  }\r\n  \r\n  <span class=\"hljs-keyword\">if<\/span> (!<span class=\"hljs-variable\">$success<\/span>) {\r\n    <span class=\"hljs-comment\">\/\/ \u6240\u6709\u91cd\u8bd5\u90fd\u5931\u8d25\uff0c\u8bb0\u5f55\u5230\u5931\u8d25\u961f\u5217<\/span>\r\n    add_to_failed_queue(<span class=\"hljs-variable\">$endpoint<\/span>, <span class=\"hljs-variable\">$data<\/span>);\r\n  }\r\n  \r\n  <span class=\"hljs-keyword\">return<\/span> [\r\n    <span class=\"hljs-string\">'success'<\/span> =&gt; <span class=\"hljs-variable\">$success<\/span>,\r\n    <span class=\"hljs-string\">'result'<\/span> =&gt; <span class=\"hljs-variable\">$result<\/span>\r\n  ];\r\n}<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h2>\u5b89\u5168\u4e0e\u6027\u80fd\u8003\u91cf<\/h2>\n<h3>API\u8ba4\u8bc1\u4e0e\u6388\u6743<\/h3>\n<p>\u7cfb\u7edf\u5bf9\u63a5\u4e2d\u7684\u5b89\u5168\u6027\u81f3\u5173\u91cd\u8981\u3002\u5bf9\u4e8e\u66b4\u9732\u7684API\u7aef\u70b9\uff0c\u6211\u4eec\u9700\u8981\u5b9e\u65bd\u4e25\u683c\u7684\u8ba4\u8bc1\u548c\u6388\u6743\u673a\u5236\uff1a<\/p>\n<ul>\n<li>\u57fa\u4e8e\u4ee4\u724c\u7684\u8ba4\u8bc1(JWT, OAuth)<\/li>\n<li>IP\u767d\u540d\u5355\u9650\u5236<\/li>\n<li>\u8bf7\u6c42\u7b7e\u540d\u9a8c\u8bc1<\/li>\n<li>\u8bbf\u95ee\u9891\u7387\u9650\u5236<\/li>\n<\/ul>\n<p>\u4ee5\u4e0b\u662f\u4e00\u4e2a\u7b80\u5355\u7684JWT\u8ba4\u8bc1\u793a\u4f8b\uff1a<\/p>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-javascript javascript hljs\"><span class=\"hljs-comment\">\/\/ \u5b9e\u73b0JWT\u8ba4\u8bc1\u4e2d\u95f4\u4ef6<\/span>\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">jwt_auth_middleware<\/span>(<span class=\"hljs-params\">$request<\/span>) <\/span>{\r\n  $auth_header = $request-&gt;get_header(<span class=\"hljs-string\">'Authorization'<\/span>);\r\n  \r\n  <span class=\"hljs-keyword\">if<\/span> (!$auth_header || strpos($auth_header, <span class=\"hljs-string\">'Bearer '<\/span>) !== <span class=\"hljs-number\">0<\/span>) {\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> WP_Error(\r\n      <span class=\"hljs-string\">'jwt_auth_failed'<\/span>,\r\n      <span class=\"hljs-string\">'\u672a\u63d0\u4f9b\u6709\u6548\u7684\u8ba4\u8bc1\u4ee4\u724c'<\/span>,\r\n      [<span class=\"hljs-string\">'status'<\/span> =&gt; <span class=\"hljs-number\">401<\/span>]\r\n    );\r\n  }\r\n  \r\n  $token = substr($auth_header, <span class=\"hljs-number\">7<\/span>);\r\n  \r\n  <span class=\"hljs-keyword\">try<\/span> {\r\n    <span class=\"hljs-comment\">\/\/ \u4f7f\u7528JWT\u5e93\u9a8c\u8bc1\u4ee4\u724c<\/span>\r\n    $decoded = JWT::decode($token, get_option(<span class=\"hljs-string\">'jwt_secret_key'<\/span>), [<span class=\"hljs-string\">'HS256'<\/span>]);\r\n    <span class=\"hljs-comment\">\/\/ \u5c06\u89e3\u7801\u540e\u7684\u7528\u6237\u4fe1\u606f\u6dfb\u52a0\u5230\u8bf7\u6c42\u5bf9\u8c61\u4e2d<\/span>\r\n    $request-&gt;set_param(<span class=\"hljs-string\">'jwt_user'<\/span>, $decoded);\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-literal\">true<\/span>;\r\n  } <span class=\"hljs-keyword\">catch<\/span> (Exception $e) {\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> WP_Error(\r\n      <span class=\"hljs-string\">'jwt_auth_failed'<\/span>,\r\n      <span class=\"hljs-string\">'\u65e0\u6548\u7684\u8ba4\u8bc1\u4ee4\u724c: '<\/span> . $e-&gt;getMessage(),\r\n      [<span class=\"hljs-string\">'status'<\/span> =&gt; <span class=\"hljs-number\">401<\/span>]\r\n    );\r\n  }\r\n}\r\n\r\n<span class=\"hljs-comment\">\/\/ \u6ce8\u518c\u53d7\u4fdd\u62a4\u7684API\u7aef\u70b9<\/span>\r\nadd_action(<span class=\"hljs-string\">'rest_api_init'<\/span>, <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> () <\/span>{\r\n  register_rest_route(<span class=\"hljs-string\">'app\/v1'<\/span>, <span class=\"hljs-string\">'\/protected-data'<\/span>, [\r\n    <span class=\"hljs-string\">'methods'<\/span> =&gt; <span class=\"hljs-string\">'GET'<\/span>,\r\n    <span class=\"hljs-string\">'callback'<\/span> =&gt; <span class=\"hljs-string\">'get_protected_data'<\/span>,\r\n    <span class=\"hljs-string\">'permission_callback'<\/span> =&gt; <span class=\"hljs-string\">'jwt_auth_middleware'<\/span>\r\n  ]);\r\n});\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">get_protected_data<\/span>(<span class=\"hljs-params\">$request<\/span>) <\/span>{\r\n  $user = $request-&gt;get_param(<span class=\"hljs-string\">'jwt_user'<\/span>);\r\n  <span class=\"hljs-comment\">\/\/ \u73b0\u5728\u53ef\u4ee5\u5b89\u5168\u5730\u8fd4\u56de\u8be5\u7528\u6237\u7684\u79c1\u6709\u6570\u636e<\/span>\r\n  <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> WP_REST_Response([<span class=\"hljs-string\">'user_id'<\/span> =&gt; $user-&gt;id, <span class=\"hljs-string\">'data'<\/span> =&gt; <span class=\"hljs-string\">'\u79c1\u6709\u6570\u636e'<\/span>]);\r\n}<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h3>\u6027\u80fd\u4f18\u5316\u7b56\u7565<\/h3>\n<p>\u7cfb\u7edf\u5bf9\u63a5\u53ef\u80fd\u4f1a\u589e\u52a0\u670d\u52a1\u5668\u8d1f\u8f7d\uff0c\u5f71\u54cd\u7f51\u7ad9\u6027\u80fd\u3002\u4ee5\u4e0b\u662f\u4e00\u4e9b\u6027\u80fd\u4f18\u5316\u7b56\u7565\uff1a<\/p>\n<ul>\n<li>\u5b9e\u65bd\u7f13\u5b58\u673a\u5236\uff0c\u51cf\u5c11\u91cd\u590dAPI\u8c03\u7528<\/li>\n<li>\u4f7f\u7528\u961f\u5217\u5904\u7406\u5f02\u6b65\u4efb\u52a1<\/li>\n<li>\u4f18\u5316\u6570\u636e\u5e93\u67e5\u8be2<\/li>\n<li>\u4f7f\u7528CDN\u5206\u62c5\u9759\u6001\u8d44\u6e90\u8d1f\u8f7d<\/li>\n<\/ul>\n<p>\u7f13\u5b58API\u8c03\u7528\u7ed3\u679c\u7684\u793a\u4f8b\u4ee3\u7801\uff1a<\/p>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-php php hljs\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">get_external_data_with_cache<\/span><span class=\"hljs-params\">(<span class=\"hljs-variable\">$resource_id<\/span>)<\/span> <\/span>{\r\n  <span class=\"hljs-comment\">\/\/ \u5c1d\u8bd5\u4ece\u7f13\u5b58\u83b7\u53d6\u6570\u636e<\/span>\r\n  <span class=\"hljs-variable\">$cache_key<\/span> = <span class=\"hljs-string\">'external_data_'<\/span> . <span class=\"hljs-variable\">$resource_id<\/span>;\r\n  <span class=\"hljs-variable\">$cached_data<\/span> = get_transient(<span class=\"hljs-variable\">$cache_key<\/span>);\r\n  \r\n  <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-keyword\">false<\/span> !== <span class=\"hljs-variable\">$cached_data<\/span>) {\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-variable\">$cached_data<\/span>;\r\n  }\r\n  \r\n  <span class=\"hljs-comment\">\/\/ \u7f13\u5b58\u672a\u547d\u4e2d\uff0c\u8c03\u7528\u5916\u90e8API<\/span>\r\n  <span class=\"hljs-variable\">$response<\/span> = wp_remote_get(\r\n    <span class=\"hljs-string\">'https:\/\/external-api.com\/resources\/'<\/span> . <span class=\"hljs-variable\">$resource_id<\/span>,\r\n    [<span class=\"hljs-string\">'timeout'<\/span> =&gt; <span class=\"hljs-number\">15<\/span>]\r\n  );\r\n  \r\n  <span class=\"hljs-keyword\">if<\/span> (is_wp_error(<span class=\"hljs-variable\">$response<\/span>) || <span class=\"hljs-number\">200<\/span> !== wp_remote_retrieve_response_code(<span class=\"hljs-variable\">$response<\/span>)) {\r\n    <span class=\"hljs-comment\">\/\/ API\u8c03\u7528\u5931\u8d25\uff0c\u8fd4\u56de\u4e0a\u6b21\u7f13\u5b58\u7684\u6570\u636e\uff08\u5982\u679c\u6709\uff09\u6216\u9ed8\u8ba4\u503c<\/span>\r\n    <span class=\"hljs-variable\">$fallback_data<\/span> = get_option(<span class=\"hljs-string\">'fallback_data_'<\/span> . <span class=\"hljs-variable\">$resource_id<\/span>, []);\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-variable\">$fallback_data<\/span>;\r\n  }\r\n  \r\n  <span class=\"hljs-comment\">\/\/ API\u8c03\u7528\u6210\u529f\uff0c\u89e3\u6790\u5e76\u7f13\u5b58\u6570\u636e<\/span>\r\n  <span class=\"hljs-variable\">$data<\/span> = json_decode(wp_remote_retrieve_body(<span class=\"hljs-variable\">$response<\/span>), <span class=\"hljs-keyword\">true<\/span>);\r\n  set_transient(<span class=\"hljs-variable\">$cache_key<\/span>, <span class=\"hljs-variable\">$data<\/span>, HOUR_IN_SECONDS * <span class=\"hljs-number\">6<\/span>); <span class=\"hljs-comment\">\/\/ \u7f13\u5b586\u5c0f\u65f6<\/span>\r\n  \r\n  <span class=\"hljs-comment\">\/\/ \u540c\u65f6\u66f4\u65b0\u56de\u9000\u6570\u636e<\/span>\r\n  update_option(<span class=\"hljs-string\">'fallback_data_'<\/span> . <span class=\"hljs-variable\">$resource_id<\/span>, <span class=\"hljs-variable\">$data<\/span>);\r\n  \r\n  <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-variable\">$data<\/span>;\r\n}<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h2>WordPress\u5efa\u7ad9\u7cfb\u7edf\u5bf9\u63a5\u6700\u4f73\u5b9e\u8df5<\/h2>\n<h3>\u6a21\u5757\u5316\u8bbe\u8ba1<\/h3>\n<p>\u5728\u5f00\u53d1\u7cfb\u7edf\u5bf9\u63a5\u529f\u80fd\u65f6\uff0c\u6211\u4eec\u5e94\u8be5\u91c7\u7528\u6a21\u5757\u5316\u8bbe\u8ba1\uff0c\u5c06\u4e0d\u540c\u7cfb\u7edf\u7684\u96c6\u6210\u903b\u8f91\u5206\u79bb\u5230\u72ec\u7acb\u7684\u7ec4\u4ef6\u4e2d\u3002\u8fd9\u6837\u53ef\u4ee5\uff1a<\/p>\n<ul>\n<li>\u7b80\u5316\u4ee3\u7801\u7ef4\u62a4<\/li>\n<li>\u5141\u8bb8\u72ec\u7acb\u6d4b\u8bd5\u5404\u4e2a\u96c6\u6210\u70b9<\/li>\n<li>\u65b9\u4fbf\u672a\u6765\u6dfb\u52a0\u6216\u66ff\u6362\u96c6\u6210\u7cfb\u7edf<\/li>\n<\/ul>\n<p>\u4e00\u4e2a\u826f\u597d\u7684\u6a21\u5757\u5316\u7ed3\u6784\u53ef\u80fd\u5982\u4e0b\uff1a<\/p>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-php php hljs\">my-integration-plugin\/\r\n  \u251c\u2500\u2500 integrations\/\r\n  \u2502   \u251c\u2500\u2500 <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span>-<span class=\"hljs-title\">crm<\/span>-<span class=\"hljs-title\">integration<\/span>.<span class=\"hljs-title\">php<\/span>\r\n  \u2502   \u251c\u2500\u2500 <span class=\"hljs-title\">class<\/span>-<span class=\"hljs-title\">payment<\/span>-<span class=\"hljs-title\">gateway<\/span>-<span class=\"hljs-title\">integration<\/span>.<span class=\"hljs-title\">php<\/span>\r\n  \u2502   \u251c\u2500\u2500 <span class=\"hljs-title\">class<\/span>-<span class=\"hljs-title\">analytics<\/span>-<span class=\"hljs-title\">integration<\/span>.<span class=\"hljs-title\">php<\/span>\r\n  \u2502   \u2514\u2500\u2500 <span class=\"hljs-title\">class<\/span>-<span class=\"hljs-title\">erp<\/span>-<span class=\"hljs-title\">integration<\/span>.<span class=\"hljs-title\">php<\/span>\r\n  \u251c\u2500\u2500 <span class=\"hljs-title\">core<\/span>\/\r\n  \u2502   \u251c\u2500\u2500 <span class=\"hljs-title\">class<\/span>-<span class=\"hljs-title\">api<\/span>-<span class=\"hljs-title\">client<\/span>.<span class=\"hljs-title\">php<\/span>\r\n  \u2502   \u251c\u2500\u2500 <span class=\"hljs-title\">class<\/span>-<span class=\"hljs-title\">data<\/span>-<span class=\"hljs-title\">transformer<\/span>.<span class=\"hljs-title\">php<\/span>\r\n  \u2502   \u251c\u2500\u2500 <span class=\"hljs-title\">class<\/span>-<span class=\"hljs-title\">logger<\/span>.<span class=\"hljs-title\">php<\/span>\r\n  \u2502   \u2514\u2500\u2500 <span class=\"hljs-title\">class<\/span>-<span class=\"hljs-title\">queue<\/span>-<span class=\"hljs-title\">manager<\/span>.<span class=\"hljs-title\">php<\/span>\r\n  \u251c\u2500\u2500 <span class=\"hljs-title\">admin<\/span>\/\r\n  \u2502   \u251c\u2500\u2500 <span class=\"hljs-title\">class<\/span>-<span class=\"hljs-title\">settings<\/span>-<span class=\"hljs-title\">page<\/span>.<span class=\"hljs-title\">php<\/span>\r\n  \u2502   \u2514\u2500\u2500 <span class=\"hljs-title\">class<\/span>-<span class=\"hljs-title\">integration<\/span>-<span class=\"hljs-title\">dashboard<\/span>.<span class=\"hljs-title\">php<\/span>\r\n  \u251c\u2500\u2500 <span class=\"hljs-title\">my<\/span>-<span class=\"hljs-title\">integration<\/span>-<span class=\"hljs-title\">plugin<\/span>.<span class=\"hljs-title\">php<\/span>\r\n  \u2514\u2500\u2500 <span class=\"hljs-title\">readme<\/span>.<span class=\"hljs-title\">txt<\/span><\/span><\/code><\/pre>\n<p>&nbsp;<\/p>\n<h3>\u5168\u9762\u7684\u6d4b\u8bd5\u4e0e\u76d1\u63a7<\/h3>\n<p>\u7cfb\u7edf\u5bf9\u63a5\u5e94\u8be5\u5305\u542b\u5168\u9762\u7684\u6d4b\u8bd5\u548c\u76d1\u63a7\u673a\u5236\uff0c\u786e\u4fdd\u96c6\u6210\u6b63\u5e38\u8fd0\u884c\u5e76\u53ca\u65f6\u53d1\u73b0\u95ee\u9898\uff1a<\/p>\n<ul>\n<li>\u5355\u5143\u6d4b\u8bd5\u5404\u4e2a\u7ec4\u4ef6<\/li>\n<li>\u96c6\u6210\u6d4b\u8bd5\u9a8c\u8bc1\u7aef\u5230\u7aef\u6d41\u7a0b<\/li>\n<li>\u5931\u8d25\u544a\u8b66\u673a\u5236<\/li>\n<li>\u5b9a\u671f\u5065\u5eb7\u68c0\u67e5<\/li>\n<li>\u8be6\u7ec6\u7684\u65e5\u5fd7\u8bb0\u5f55<\/li>\n<\/ul>\n<p>\u4ee5\u4e0b\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u5065\u5eb7\u68c0\u67e5\u5b9e\u73b0\uff1a<\/p>\n<p>&nbsp;<\/p>\n<pre><code class=\"language-javascript javascript hljs\"><span class=\"hljs-comment\">\/\/ \u5b9a\u4e49\u5065\u5eb7\u68c0\u67e5API\u7aef\u70b9<\/span>\r\nadd_action(<span class=\"hljs-string\">'rest_api_init'<\/span>, <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> () <\/span>{\r\n  register_rest_route(<span class=\"hljs-string\">'system\/v1'<\/span>, <span class=\"hljs-string\">'\/health'<\/span>, [\r\n    <span class=\"hljs-string\">'methods'<\/span> =&gt; <span class=\"hljs-string\">'GET'<\/span>,\r\n    <span class=\"hljs-string\">'callback'<\/span> =&gt; <span class=\"hljs-string\">'check_system_health'<\/span>,\r\n    <span class=\"hljs-string\">'permission_callback'<\/span> =&gt; <span class=\"hljs-string\">'__return_true'<\/span> <span class=\"hljs-comment\">\/\/ \u516c\u5f00\u8bbf\u95ee<\/span>\r\n  ]);\r\n});\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">check_system_health<\/span>() <\/span>{\r\n  $health_status = [\r\n    <span class=\"hljs-string\">'wordpress'<\/span> =&gt; <span class=\"hljs-literal\">true<\/span>,\r\n    <span class=\"hljs-string\">'database'<\/span> =&gt; check_db_connection(),\r\n    <span class=\"hljs-string\">'external_systems'<\/span> =&gt; []\r\n  ];\r\n  \r\n  <span class=\"hljs-comment\">\/\/ \u68c0\u67e5CRM\u8fde\u63a5<\/span>\r\n  $crm_status = check_crm_connection();\r\n  $health_status[<span class=\"hljs-string\">'external_systems'<\/span>][<span class=\"hljs-string\">'crm'<\/span>] = $crm_status;\r\n  \r\n  <span class=\"hljs-comment\">\/\/ \u68c0\u67e5\u652f\u4ed8\u7f51\u5173\u8fde\u63a5<\/span>\r\n  $payment_status = check_payment_gateway_connection();\r\n  $health_status[<span class=\"hljs-string\">'external_systems'<\/span>][<span class=\"hljs-string\">'payment'<\/span>] = $payment_status;\r\n  \r\n  <span class=\"hljs-comment\">\/\/ \u68c0\u67e5\u5176\u4ed6\u96c6\u6210\u7cfb\u7edf...<\/span>\r\n  \r\n  <span class=\"hljs-comment\">\/\/ \u786e\u5b9a\u6574\u4f53\u5065\u5eb7\u72b6\u6001<\/span>\r\n  $all_systems_healthy = $health_status[<span class=\"hljs-string\">'database'<\/span>] &amp;&amp;\r\n                        !in_array(<span class=\"hljs-literal\">false<\/span>, array_column($health_status[<span class=\"hljs-string\">'external_systems'<\/span>], <span class=\"hljs-string\">'status'<\/span>));\r\n  \r\n  $response = [\r\n    <span class=\"hljs-string\">'status'<\/span> =&gt; $all_systems_healthy ? <span class=\"hljs-string\">'healthy'<\/span> : <span class=\"hljs-string\">'unhealthy'<\/span>,\r\n    <span class=\"hljs-string\">'timestamp'<\/span> =&gt; current_time(<span class=\"hljs-string\">'mysql'<\/span>),\r\n    <span class=\"hljs-string\">'details'<\/span> =&gt; $health_status\r\n  ];\r\n  \r\n  <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> WP_REST_Response($response, $all_systems_healthy ? <span class=\"hljs-number\">200<\/span> : <span class=\"hljs-number\">500<\/span>);\r\n}\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">check_db_connection<\/span>() <\/span>{\r\n  global $wpdb;\r\n  \r\n  <span class=\"hljs-keyword\">try<\/span> {\r\n    $result = $wpdb-&gt;get_var(<span class=\"hljs-string\">\"SELECT 1\"<\/span>);\r\n    <span class=\"hljs-keyword\">return<\/span> $result === <span class=\"hljs-string\">'1'<\/span>;\r\n  } <span class=\"hljs-keyword\">catch<\/span> (Exception $e) {\r\n    error_log(<span class=\"hljs-string\">'\u6570\u636e\u5e93\u8fde\u63a5\u68c0\u67e5\u5931\u8d25: '<\/span> . $e-&gt;getMessage());\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-literal\">false<\/span>;\r\n  }\r\n}\r\n\r\n<span class=\"hljs-comment\">\/\/ \u5176\u4ed6\u68c0\u67e5\u51fd\u6570...<\/span><\/code><\/pre>\n<p>&nbsp;<\/p>\n<h2>\u6784\u5efa\u7cfb\u7edf\u5bf9\u63a5WordPress\u7f51\u7ad9\u7684\u672a\u6765\u8d8b\u52bf<\/h2>\n<p>\u968f\u7740\u6280\u672f\u7684\u4e0d\u65ad\u53d1\u5c55\uff0cWordPress\u7cfb\u7edf\u5bf9\u63a5\u4e5f\u5728\u4e0d\u65ad\u6f14\u8fdb\u3002\u4ee5\u4e0b\u662f\u6211\u4eec\u89c2\u5bdf\u5230\u7684\u4e00\u4e9b\u8d8b\u52bf\uff1a<\/p>\n<h3>\u65e0\u5934WordPress (Headless WordPress)<\/h3>\n<p>\u8d8a\u6765\u8d8a\u591a\u7684\u4f01\u4e1a\u9009\u62e9\u91c7\u7528\u65e0\u5934WordPress\u67b6\u6784\uff0c\u5c06\u5185\u5bb9\u7ba1\u7406\u4e0e\u524d\u7aef\u5c55\u793a\u5206\u79bb\uff1a<\/p>\n<ul>\n<li>\u540e\u7aef\u4f7f\u7528WordPress\u7ba1\u7406\u5185\u5bb9<\/li>\n<li>\u524d\u7aef\u4f7f\u7528React\u3001Vue\u7b49\u73b0\u4ee3JavaScript\u6846\u67b6<\/li>\n<li>\u901a\u8fc7REST API\u6216GraphQL\u8fde\u63a5\u524d\u540e\u7aef<\/li>\n<\/ul>\n<p>\u8fd9\u79cd\u67b6\u6784\u4e3a\u7cfb\u7edf\u5bf9\u63a5\u63d0\u4f9b\u4e86\u66f4\u5927\u7684\u7075\u6d3b\u6027\uff0c\u5141\u8bb8WordPress\u6210\u4e3a\u66f4\u5e7f\u6cdb\u6570\u5b57\u751f\u6001\u7cfb\u7edf\u7684\u4e00\u90e8\u5206\u3002<\/p>\n<h3>\u5fae\u670d\u52a1\u67b6\u6784<\/h3>\n<p>\u4f20\u7edf\u7684\u5355\u4f53\u5e94\u7528\u6b63\u5728\u5411\u5fae\u670d\u52a1\u67b6\u6784\u8f6c\u53d8\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0cWordPress\u53ef\u80fd\u53ea\u662f\u6574\u4e2a\u7cfb\u7edf\u7684\u4e00\u4e2a\u7ec4\u4ef6\uff0c\u8d1f\u8d23\u7279\u5b9a\u7684\u529f\u80fd\uff08\u5982\u5185\u5bb9\u7ba1\u7406\uff09\uff0c\u800c\u5176\u4ed6\u5fae\u670d\u52a1\u5904\u7406\u5176\u4ed6\u4e1a\u52a1\u903b\u8f91\u3002<\/p>\n<h3>\u4eba\u5de5\u667a\u80fd\u4e0e\u81ea\u52a8\u5316<\/h3>\n<p>AI\u548c\u81ea\u52a8\u5316\u6b63\u5728\u6539\u53d8\u7cfb\u7edf\u5bf9\u63a5\u65b9\u5f0f\uff1a<\/p>\n<ul>\n<li>\u667a\u80fd\u6570\u636e\u540c\u6b65\u51b3\u7b56<\/li>\n<li>\u81ea\u52a8\u5316\u6545\u969c\u6062\u590d<\/li>\n<li>\u9884\u6d4b\u6027\u7ef4\u62a4<\/li>\n<li>\u667a\u80fd\u5185\u5bb9\u7ba1\u7406<\/li>\n<\/ul>\n<h2>\u7ed3\u8bed\uff1a\u9009\u62e9\u4e13\u4e1a\u7684WordPress\u7cfb\u7edf\u5bf9\u63a5\u670d\u52a1<\/h2>\n<p>\u7cfb\u7edf\u5bf9\u63a5\u662fWordPress\u5efa\u7ad9\u4e2d\u4e00\u4e2a\u6280\u672f\u542b\u91cf\u9ad8\u3001\u5f71\u54cd\u6df1\u8fdc\u7684\u73af\u8282\u3002\u901a\u8fc7\u5408\u7406\u7684\u7cfb\u7edf\u5bf9\u63a5\uff0c\u53ef\u4ee5\u663e\u8457\u63d0\u5347\u7f51\u7ad9\u7684\u529f\u80fd\u6027\u548c\u4e1a\u52a1\u4ef7\u503c\u3002\u4f5c\u4e3a\u4e13\u6ce8\u4e8eWordPress\u6280\u672f\u7684\u670d\u52a1\u63d0\u4f9b\u5546\uff0c<strong>umaax<\/strong>\u62e5\u6709\u4e30\u5bcc\u7684\u7cfb\u7edf\u5bf9\u63a5\u7ecf\u9a8c\uff0c\u80fd\u591f\u4e3a\u4f01\u4e1a\u63d0\u4f9b\u5168\u9762\u7684\u89e3\u51b3\u65b9\u6848\u3002<\/p>\n<p>\u6211\u4eec\u4e0d\u4ec5\u7cbe\u901aWordPress\u7684\u5185\u90e8\u673a\u5236\uff0c\u8fd8\u6df1\u5165\u4e86\u89e3\u5404\u7c7b\u4e1a\u52a1\u7cfb\u7edf\u7684\u5bf9\u63a5\u9700\u6c42\uff0c\u80fd\u591f\u8bbe\u8ba1\u548c\u5b9e\u73b0\u9ad8\u6548\u3001\u5b89\u5168\u3001\u7a33\u5b9a\u7684\u96c6\u6210\u65b9\u6848\u3002\u65e0\u8bba\u60a8\u9700\u8981\u5c06WordPress\u4e0eCRM\u7cfb\u7edf\u5bf9\u63a5\uff0c\u8fd8\u662f\u9700\u8981\u6784\u5efa\u590d\u6742\u7684\u591a\u7cfb\u7edf\u6570\u636e\u6d41\uff0c\u6211\u4eec\u90fd\u80fd\u63d0\u4f9b\u4e13\u4e1a\u7684\u6280\u672f\u652f\u6301\u3002<\/p>\n<p>\u901a\u8fc7\u9009\u62e9<strong>umaax<\/strong>\uff0c\u60a8\u5c06\u83b7\u5f97\uff1a<\/p>\n<ul>\n<li>\u91cf\u8eab\u5b9a\u5236\u7684\u7cfb\u7edf\u5bf9\u63a5\u65b9\u6848<\/li>\n<li>\u9ad8\u8d28\u91cf\u7684\u4ee3\u7801\u5b9e\u73b0<\/li>\n<li>\u5b8c\u5584\u7684\u6587\u6863\u548c\u57f9\u8bad<\/li>\n<li>\u957f\u671f\u7684\u6280\u672f\u652f\u6301<\/li>\n<li>\u53ef\u6269\u5c55\u7684\u89e3\u51b3\u65b9\u6848<\/li>\n<\/ul>\n<p>\u5728\u6570\u5b57\u5316\u8f6c\u578b\u7684\u9053\u8def\u4e0a\uff0c\u8ba9\u6211\u4eec\u6210\u4e3a\u60a8\u7684\u6280\u672f\u4f19\u4f34\uff0c\u5e2e\u52a9\u60a8\u7684WordPress\u7f51\u7ad9\u4e0e\u4e1a\u52a1\u7cfb\u7edf\u65e0\u7f1d\u5bf9\u63a5\uff0c\u91ca\u653e\u6570\u636e\u4ef7\u503c\uff0c\u63d0\u5347\u4e1a\u52a1\u6548\u7387\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7cfb\u7edf\u5bf9\u63a5WordPress\u5efa\u7ad9\u5168\u9762\u89e3\u6790 \u5728\u5f53\u4eca\u6570\u5b57\u5316\u65f6\u4ee3\uff0c\u4f01\u4e1a\u9700\u8981\u4e00\u4e2a [&hellip;]<\/p>\n","protected":false},"featured_media":2711,"template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"default","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}}},"product_brand":[],"product_cat":[51],"product_tag":[],"class_list":["post-2710","product","type-product","status-publish","has-post-thumbnail","product_cat-jishu-fuwu","desktop-align-left","tablet-align-left","mobile-align-left","ast-product-gallery-layout-horizontal-slider","ast-product-gallery-with-no-image","ast-product-tabs-layout-horizontal","first","instock","shipping-taxable","product-type-simple"],"_links":{"self":[{"href":"https:\/\/umaax.com\/en\/wp-json\/wp\/v2\/product\/2710","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umaax.com\/en\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/umaax.com\/en\/wp-json\/wp\/v2\/types\/product"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/umaax.com\/en\/wp-json\/wp\/v2\/media\/2711"}],"wp:attachment":[{"href":"https:\/\/umaax.com\/en\/wp-json\/wp\/v2\/media?parent=2710"}],"wp:term":[{"taxonomy":"product_brand","embeddable":true,"href":"https:\/\/umaax.com\/en\/wp-json\/wp\/v2\/product_brand?post=2710"},{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/umaax.com\/en\/wp-json\/wp\/v2\/product_cat?post=2710"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/umaax.com\/en\/wp-json\/wp\/v2\/product_tag?post=2710"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}