{"id":14789,"date":"2024-06-19T11:41:13","date_gmt":"2024-06-19T03:41:13","guid":{"rendered":"https:\/\/fgchen.com\/wpedu\/?p=14789"},"modified":"2026-03-30T14:30:46","modified_gmt":"2026-03-30T06:30:46","slug":"wordpress-custom-post-type%ef%bc%88%e8%87%aa%e5%ae%9a%e7%be%a9%e6%96%87%e7%ab%a0%e5%9e%8b%e6%85%8b%ef%bc%89","status":"publish","type":"post","link":"https:\/\/fgchen.com\/wpedu\/2024\/06\/wordpress-custom-post-type%ef%bc%88%e8%87%aa%e5%ae%9a%e7%be%a9%e6%96%87%e7%ab%a0%e5%9e%8b%e6%85%8b%ef%bc%89\/","title":{"rendered":"WordPress Custom Post Type\uff08\u81ea\u5b9a\u7fa9\u6587\u7ae0\u578b\u614b\uff09"},"content":{"rendered":"<p>\u5728 WordPress \u4e2d\uff0cCustom Post Type\uff08\u81ea\u5b9a\u7fa9\u6587\u7ae0\u578b\u614b\uff09\u662f\u4e00\u7a2e\u529f\u80fd\uff0c\u5141\u8a31\u958b\u767c\u8005\u548c\u7db2\u7ad9\u7ba1\u7406\u54e1\u5275\u5efa\u548c\u7ba1\u7406\u8207\u9810\u8a2d\u7684\u6587\u7ae0\uff08Post\uff09\u548c\u9801\u9762\uff08Page\uff09\u4e0d\u540c\u7684\u5167\u5bb9\u985e\u578b\u3002\u9019\u4e9b\u81ea\u5b9a\u7fa9\u6587\u7ae0\u985e\u578b\u53ef\u4ee5\u7528\u4f86\u7d44\u7e54\u548c\u5c55\u793a\u7279\u5b9a\u7684\u5167\u5bb9\uff0c\u5982\u7522\u54c1\u3001\u6d3b\u52d5\u3001\u4f5c\u54c1\u96c6\u3001\u5ba2\u6236\u8a55\u50f9\u7b49\u3002<\/p>\n<p>\u4ee5\u4e0b\u662f\u4e00\u4e9b\u95dc\u65bc Custom Post Type \u7684\u8981\u9ede\uff1a<\/p>\n<ol>\n<li><strong>\u5275\u5efa\u8207\u8a3b\u518a<\/strong>\uff1a\u4f7f\u7528 <code>register_post_type()<\/code> \u51fd\u6578\u4f86\u8a3b\u518a\u4e00\u500b\u65b0\u7684\u81ea\u5b9a\u7fa9\u6587\u7ae0\u985e\u578b\u3002\u5728\u9019\u500b\u51fd\u6578\u4e2d\uff0c\u4f60\u53ef\u4ee5\u8a2d\u5b9a\u9019\u500b\u6587\u7ae0\u985e\u578b\u7684\u6a19\u7c64\u3001\u516c\u958b\u6027\u3001\u662f\u5426\u652f\u6301\u6a19\u7c64\u548c\u985e\u5225\u7b49\u9078\u9805\u3002\n<pre style=\"position: relative;\"><code class=\"language-php\">function create_custom_post_type() {\n    register_post_type('product',\n        array(\n            'labels' =&gt; array(\n                'name' =&gt; __('Products'),\n                'singular_name' =&gt; __('Product')\n            ),\n            'public' =&gt; true,\n            'has_archive' =&gt; true,\n            'rewrite' =&gt; array('slug' =&gt; 'products'),\n            'supports' =&gt; array('title', 'editor', 'thumbnail', 'excerpt', 'comments')\n        )\n    );\n}\nadd_action('init', 'create_custom_post_type');<\/code><\/pre>\n<\/li>\n<li><strong>\u81ea\u5b9a\u7fa9\u5206\u985e\u6cd5<\/strong>\uff1a\u81ea\u5b9a\u7fa9\u6587\u7ae0\u985e\u578b\u53ef\u4ee5\u8207\u81ea\u5b9a\u7fa9\u5206\u985e\u6cd5\uff08Taxonomies\uff09\u7d50\u5408\u4f7f\u7528\uff0c\u9019\u6a23\u53ef\u4ee5\u66f4\u597d\u5730\u7d44\u7e54\u548c\u5206\u985e\u4f60\u7684\u5167\u5bb9\u3002\u4f60\u53ef\u4ee5\u4f7f\u7528 <code>register_taxonomy()<\/code> \u51fd\u6578\u4f86\u5275\u5efa\u81ea\u5b9a\u7fa9\u5206\u985e\u6cd5\uff0c\u4e26\u5c07\u5b83\u5011\u8207\u7279\u5b9a\u7684\u6587\u7ae0\u985e\u578b\u95dc\u806f\u3002<\/li>\n<li><strong>\u81ea\u5b9a\u7fa9\u6b04\u4f4d<\/strong>\uff1a\u4f60\u53ef\u4ee5\u70ba\u81ea\u5b9a\u7fa9\u6587\u7ae0\u985e\u578b\u6dfb\u52a0\u81ea\u5b9a\u7fa9\u6b04\u4f4d\uff08Custom Fields\uff09\uff0c\u9019\u6a23\u53ef\u4ee5\u5132\u5b58\u548c\u986f\u793a\u66f4\u591a\u7684\u7279\u5b9a\u4fe1\u606f\u3002\u4f8b\u5982\uff0c\u5c0d\u65bc\u7522\u54c1\u6587\u7ae0\u985e\u578b\uff0c\u4f60\u53ef\u4ee5\u6dfb\u52a0\u50f9\u683c\u3001\u5eab\u5b58\u72c0\u614b\u3001\u7522\u54c1\u898f\u683c\u7b49\u5b57\u6bb5\u3002<\/li>\n<li><strong>\u524d\u7aef\u986f\u793a<\/strong>\uff1a\u4f60\u53ef\u4ee5\u5275\u5efa\u81ea\u5b9a\u7fa9\u6a21\u677f\u6587\u4ef6\u4f86\u986f\u793a\u81ea\u5b9a\u7fa9\u6587\u7ae0\u985e\u578b\u7684\u5167\u5bb9\u3002\u4f8b\u5982\uff0c\u5275\u5efa <code>single-product.php<\/code> \u6587\u4ef6\u4f86\u986f\u793a\u55ae\u500b\u7522\u54c1\u7684\u8a73\u7d30\u4fe1\u606f\uff0c\u6216\u8005\u5275\u5efa <code>archive-product.php<\/code> \u6587\u4ef6\u4f86\u986f\u793a\u7522\u54c1\u7684\u5b58\u6a94\u9801\u9762\u3002<\/li>\n<li><strong>\u67e5\u8a62\u8207\u986f\u793a<\/strong>\uff1a\u4f60\u53ef\u4ee5\u4f7f\u7528 WP_Query \u985e\u4f86\u67e5\u8a62\u548c\u986f\u793a\u7279\u5b9a\u7684\u81ea\u5b9a\u7fa9\u6587\u7ae0\u985e\u578b\u3002\u4f8b\u5982\uff0c\u986f\u793a\u6700\u65b0\u7684 10 \u500b\u7522\u54c1\uff1a\n<pre style=\"position: relative;\"><code class=\"language-php\">$args = array(\n    'post_type' =&gt; 'product',\n    'posts_per_page' =&gt; 10\n);\n$loop = new WP_Query($args);\nwhile ($loop-&gt;have_posts()) : $loop-&gt;the_post();\n    the_title();\n    the_content();\nendwhile;<\/code><\/pre>\n<\/li>\n<li><strong>\u7ba1\u7406\u754c\u9762<\/strong>\uff1a\u5728 WordPress \u5f8c\u53f0\u4e2d\uff0c\u81ea\u5b9a\u7fa9\u6587\u7ae0\u985e\u578b\u6703\u986f\u793a\u5728\u5de6\u5074\u83dc\u55ae\u4e2d\uff0c\u4f60\u53ef\u4ee5\u5728\u90a3\u88e1\u6dfb\u52a0\u3001\u7de8\u8f2f\u548c\u7ba1\u7406\u9019\u4e9b\u6587\u7ae0\u3002\u4f60\u9084\u53ef\u4ee5\u81ea\u5b9a\u7fa9\u7ba1\u7406\u754c\u9762\uff0c\u6dfb\u52a0\u984d\u5916\u7684\u6b04\u4f4d\u548c\u529f\u80fd\u3002<\/li>\n<\/ol>\n<div class=\"markdown markdown-main-panel\" dir=\"ltr\">\n<h2 class=\"\" data-sourcepos=\"1:1-1:25\">\u5be6\u4f8b\uff1a\u5efa\u7acb\u4e00\u500b\u81ea\u8a02\u6587\u7ae0\u985e\u578b\u201cproduct\u201d<\/h2>\n<p data-sourcepos=\"3:1-3:43\">\u9019\u500b\u5be6\u4f8b\u5c07\u5c55\u793a\u5982\u4f55\u4f7f\u7528WordPress\u7684\u5167\u5efa\u51fd\u6578\u5efa\u7acb\u4e00\u500b\u81ea\u8a02\u6587\u7ae0\u985e\u578b\u201cproduct\u201d\u3002\u6b64\u81ea\u8a02\u6587\u7ae0\u985e\u578b\u5c07\u5177\u6709\u4ee5\u4e0b\u5c6c\u6027\uff1a<\/p>\n<ul data-sourcepos=\"5:1-6:10\">\n<li data-sourcepos=\"5:1-5:22\">\u5b83\u5c07\u5728WordPress\u7ba1\u7406\u5f8c\u53f0\u4e2d\u53ef\u898b\u3002<\/li>\n<li data-sourcepos=\"6:1-6:10\">\u5b83\u5c07\u6709\u4e00\u500b\u5c08\u9580\u7684\u6b78\u6a94\u9801\u9762\u3002<\/li>\n<li data-sourcepos=\"7:1-10:10\">\u5b83\u5c07\u5177\u6709\u4ee5\u4e0b\u81ea\u8a02\u5c6c\u6027\uff1a\n<ul data-sourcepos=\"8:5-10:10\">\n<li data-sourcepos=\"8:5-8:10\">\u7522\u54c1\u540d\u7a31<\/li>\n<li data-sourcepos=\"9:5-9:10\">\u7522\u54c1\u50f9\u683c<\/li>\n<li data-sourcepos=\"10:5-10:10\">\u7522\u54c1\u5716\u7247<\/li>\n<li data-sourcepos=\"11:5-12:0\">\u7522\u54c1\u63cf\u8ff0<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 class=\"\" data-sourcepos=\"13:1-13:17\">\u6b65\u9a5f 1\uff1a\u5efa\u7acb\u81ea\u8a02\u6587\u7ae0\u985e\u578b<\/h3>\n<div class=\"code-block ng-tns-c932167683-52 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header gmat-subtitle-1 ng-tns-c932167683-52 ng-star-inserted\"><span class=\"ng-tns-c932167683-52\">PHP<\/span><\/div>\n<div class=\"code-block-internal-container ng-tns-c932167683-52\">\n<div class=\"animated-opacity ng-tns-c932167683-52\">\n<pre class=\"ng-tns-c932167683-52\" style=\"position: relative;\"><code class=\"code-container ng-tns-c932167683-52\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"15:1-25:3\">register_post_type( <span class=\"hljs-string\">'product'<\/span>, <span class=\"hljs-keyword\">array<\/span>(\n  <span class=\"hljs-string\">'labels'<\/span> =&gt; <span class=\"hljs-keyword\">array<\/span>(\n    <span class=\"hljs-string\">'name'<\/span> =&gt; __( <span class=\"hljs-string\">'Products'<\/span>, <span class=\"hljs-string\">'my-textdomain'<\/span> ),\n    <span class=\"hljs-string\">'singular_name'<\/span> =&gt; __( <span class=\"hljs-string\">'Product'<\/span>, <span class=\"hljs-string\">'my-textdomain'<\/span> ),\n  ),\n  <span class=\"hljs-string\">'public'<\/span> =&gt; <span class=\"hljs-literal\">true<\/span>,\n  <span class=\"hljs-string\">'has_archive'<\/span> =&gt; <span class=\"hljs-literal\">true<\/span>,\n  <span class=\"hljs-string\">'supports'<\/span> =&gt; <span class=\"hljs-keyword\">array<\/span>( <span class=\"hljs-string\">'title'<\/span>, <span class=\"hljs-string\">'editor'<\/span>, <span class=\"hljs-string\">'thumbnail'<\/span>, <span class=\"hljs-string\">'custom-fields'<\/span> ),\n));\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h3 class=\"\" data-sourcepos=\"27:1-27:15\">\u6b65\u9a5f 2\uff1a\u5efa\u7acb\u81ea\u8a02\u5c6c\u6027<\/h3>\n<div class=\"code-block ng-tns-c932167683-53 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header gmat-subtitle-1 ng-tns-c932167683-53 ng-star-inserted\"><span class=\"ng-tns-c932167683-53\">PHP<\/span><\/div>\n<div class=\"code-block-internal-container ng-tns-c932167683-53\">\n<div class=\"animated-opacity ng-tns-c932167683-53\">\n<pre class=\"ng-tns-c932167683-53\" style=\"position: relative;\"><code class=\"code-container ng-tns-c932167683-53\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"29:1-78:41\">add_action( <span class=\"hljs-string\">'init'<\/span>, <span class=\"hljs-string\">'create_product_meta_fields'<\/span> );\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">create_product_meta_fields<\/span>() <\/span>{\n  add_meta_box( <span class=\"hljs-string\">'product_meta'<\/span>, __( <span class=\"hljs-string\">'Product Details'<\/span>, <span class=\"hljs-string\">'my-textdomain'<\/span> ), <span class=\"hljs-string\">'display_product_meta_fields'<\/span>, <span class=\"hljs-string\">'product'<\/span>, <span class=\"hljs-string\">'normal'<\/span>, <span class=\"hljs-string\">'high'<\/span> );\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">display_product_meta_fields<\/span>(<span class=\"hljs-params\"> <span class=\"hljs-variable\">$post<\/span> <\/span>) <\/span>{\n  wp_nonce_field( <span class=\"hljs-string\">'product_meta_nonce'<\/span>, <span class=\"hljs-string\">'product_meta_nonce'<\/span> );\n\n  <span class=\"hljs-variable\">$product_name<\/span> = get_post_meta( <span class=\"hljs-variable\">$post<\/span>-&gt;ID, <span class=\"hljs-string\">'product_name'<\/span>, <span class=\"hljs-literal\">true<\/span> );\n  <span class=\"hljs-variable\">$product_price<\/span> = get_post_meta( <span class=\"hljs-variable\">$post<\/span>-&gt;ID, <span class=\"hljs-string\">'product_price'<\/span>, <span class=\"hljs-literal\">true<\/span> );\n  <span class=\"hljs-variable\">$product_image<\/span> = get_post_meta( <span class=\"hljs-variable\">$post<\/span>-&gt;ID, <span class=\"hljs-string\">'product_image'<\/span>, <span class=\"hljs-literal\">true<\/span> );\n  <span class=\"hljs-variable\">$product_description<\/span> = get_post_meta( <span class=\"hljs-variable\">$post<\/span>-&gt;ID, <span class=\"hljs-string\">'product_description'<\/span>, <span class=\"hljs-literal\">true<\/span> );\n\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;table class=\"form-table\"&gt;'<\/span>;\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;tr&gt;'<\/span>;\n      <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;th scope=\"row\"&gt;&lt;label for=\"product_name\"&gt;'<\/span> . __( <span class=\"hljs-string\">'Product Name'<\/span>, <span class=\"hljs-string\">'my-textdomain'<\/span> ) . <span class=\"hljs-string\">'&lt;\/label&gt;&lt;\/th&gt;'<\/span>;\n      <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;td&gt;&lt;input type=\"text\" id=\"product_name\" name=\"product_name\" value=\"'<\/span> . esc_attr( <span class=\"hljs-variable\">$product_name<\/span> ) . <span class=\"hljs-string\">'\" class=\"regular-text\"&gt;&lt;\/td&gt;'<\/span>;\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;\/tr&gt;'<\/span>;\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;tr&gt;'<\/span>;\n      <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;th scope=\"row\"&gt;&lt;label for=\"product_price\"&gt;'<\/span> . __( <span class=\"hljs-string\">'Product Price'<\/span>, <span class=\"hljs-string\">'my-textdomain'<\/span> ) . <span class=\"hljs-string\">'&lt;\/label&gt;&lt;\/th&gt;'<\/span>;\n      <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;td&gt;&lt;input type=\"number\" id=\"product_price\" name=\"product_price\" value=\"'<\/span> . esc_attr( <span class=\"hljs-variable\">$product_price<\/span> ) . <span class=\"hljs-string\">'\" class=\"regular-text\"&gt;&lt;\/td&gt;'<\/span>;\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;\/tr&gt;'<\/span>;\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;tr&gt;'<\/span>;\n      <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;th scope=\"row\"&gt;&lt;label for=\"product_image\"&gt;'<\/span> . __( <span class=\"hljs-string\">'Product Image'<\/span>, <span class=\"hljs-string\">'my-textdomain'<\/span> ) . <span class=\"hljs-string\">'&lt;\/label&gt;&lt;\/th&gt;'<\/span>;\n      <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;td&gt;&lt;input type=\"file\" id=\"product_image\" name=\"product_image\"&gt;&lt;\/td&gt;'<\/span>;\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;\/tr&gt;'<\/span>;\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;tr&gt;'<\/span>;\n      <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;th scope=\"row\"&gt;&lt;label for=\"product_description\"&gt;'<\/span> . __( <span class=\"hljs-string\">'Product Description'<\/span>, <span class=\"hljs-string\">'my-textdomain'<\/span> ) . <span class=\"hljs-string\">'&lt;\/label&gt;&lt;\/th&gt;'<\/span>;\n      <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;td&gt;&lt;textarea id=\"product_description\" name=\"product_description\" class=\"large-text\"&gt;'<\/span> . esc_textarea( <span class=\"hljs-variable\">$product_description<\/span> ) . <span class=\"hljs-string\">'&lt;\/textarea&gt;&lt;\/td&gt;'<\/span>;\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;\/tr&gt;'<\/span>;\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;\/table&gt;'<\/span>;\n}\n\nadd_action( <span class=\"hljs-string\">'save_post'<\/span>, <span class=\"hljs-string\">'save_product_meta_fields'<\/span> );\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">save_product_meta_fields<\/span>(<span class=\"hljs-params\"> <span class=\"hljs-variable\">$post_id<\/span> <\/span>) <\/span>{\n  <span class=\"hljs-keyword\">if<\/span> ( ! <span class=\"hljs-keyword\">isset<\/span>( <span class=\"hljs-variable\">$_POST<\/span>[<span class=\"hljs-string\">'product_meta_nonce'<\/span>] ) ) {\n    <span class=\"hljs-keyword\">return<\/span>;\n  }\n\n  <span class=\"hljs-keyword\">if<\/span> ( ! wp_verify_nonce( <span class=\"hljs-variable\">$_POST<\/span>[<span class=\"hljs-string\">'product_meta_nonce'<\/span>], <span class=\"hljs-string\">'product_meta_nonce'<\/span> ) ) {\n    <span class=\"hljs-keyword\">return<\/span>;\n  }\n\n  <span class=\"hljs-variable\">$product_name<\/span> = sanitize_text_field( <span class=\"hljs-variable\">$_POST<\/span>[<span class=\"hljs-string\">'product_name'<\/span>] );\n  <span class=\"hljs-variable\">$product_price<\/span> = sanitize_text_field( <span class=\"hljs-variable\">$_POST<\/span>[<span class=\"hljs-string\">'product_price'<\/span>] );\n  <span class=\"hljs-variable\">$product_image<\/span> = sanitize_file_name( <span class=\"hljs-variable\">$_FILES<\/span>[<span class=\"hljs-string\">'product_image'<\/span>][<span class=\"hljs-string\">'name'<\/span>] );\n  <span class=\"hljs-variable\">$product_description<\/span> = wp_kses_post( <span class=\"hljs-variable\">$_<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<pre style=\"position: relative;\"><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5728 WordPress \u4e2d\uff0cCustom Post Type\uff08\u81ea\u5b9a\u7fa9\u6587\u7ae0\u578b\u614b\uff09\u662f &hellip; <\/p>\n","protected":false},"author":1,"featured_media":14443,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[266],"tags":[],"class_list":["post-14789","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-266"],"_links":{"self":[{"href":"https:\/\/fgchen.com\/wpedu\/wp-json\/wp\/v2\/posts\/14789","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fgchen.com\/wpedu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fgchen.com\/wpedu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fgchen.com\/wpedu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fgchen.com\/wpedu\/wp-json\/wp\/v2\/comments?post=14789"}],"version-history":[{"count":4,"href":"https:\/\/fgchen.com\/wpedu\/wp-json\/wp\/v2\/posts\/14789\/revisions"}],"predecessor-version":[{"id":14793,"href":"https:\/\/fgchen.com\/wpedu\/wp-json\/wp\/v2\/posts\/14789\/revisions\/14793"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fgchen.com\/wpedu\/wp-json\/wp\/v2\/media\/14443"}],"wp:attachment":[{"href":"https:\/\/fgchen.com\/wpedu\/wp-json\/wp\/v2\/media?parent=14789"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fgchen.com\/wpedu\/wp-json\/wp\/v2\/categories?post=14789"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fgchen.com\/wpedu\/wp-json\/wp\/v2\/tags?post=14789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}