{"id":12383792,"date":"2026-03-30T11:38:46","date_gmt":"2026-03-30T03:38:46","guid":{"rendered":"https:\/\/www.likacloud.com\/knowledge\/wordpress%e6%8f%92%e4%bb%b6%e5%bc%80%e5%8f%91%e5%85%a8%e6%94%bb%e7%95%a5%ef%bc%9a%e4%bb%8e%e9%9b%b6%e5%88%b0%e4%b8%80%e6%9e%84%e5%bb%ba%e9%ab%98%e8%b4%a8%e9%87%8f%e6%89%a9%e5%b1%95\/"},"modified":"2026-06-03T18:47:07","modified_gmt":"2026-06-03T10:47:07","slug":"wordpress-plugin-development-guide-build-high-quality-extensions","status":"publish","type":"knowledge_post","link":"https:\/\/www.likacloud.com\/en\/knowledge\/wordpress\/wordpress-plugin-development-guide-build-high-quality-extensions\/","title":{"rendered":"A Complete Guide to WordPress Plugin Development: Building High-Quality Extensions from Scratch"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Understanding the core elements before development<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before starting to write code, it is essential to set up a secure and efficient development environment. This not only improves development efficiency but also ensures the robustness of the code. You need a local WordPress installation environment, which can be set up using tools such as XAMPP, MAMP, or more modern solutions like Local by Flywheel or Docker. A code editor or an integrated development environment (IDE) such as VS Code or PHPStorm is also necessary; these tools provide features like code highlighting, syntax suggestions, and error detection when working with PHP, JavaScript, and CSS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A deep understanding of the core architecture of WordPress is the foundation for plugin development. WordPress itself follows an event-driven pattern and makes extensive use of hooks or filters.<code data-no-auto-translation=\"\">add_action<\/code>and<code data-no-auto-translation=\"\">add_filter<\/code>These two functions are like the \u201cswitches\u201d and \u201cvalves\u201d that control the functionality of a plugin. Additionally, plugins should maintain their independence and not interfere with the core functions of other plugins or themes. This means you need to be familiar with the basic concepts of namespaces, class encapsulation, and object-oriented programming.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Create your first plugin<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The first step in creating a plugin is to provide it with a \u201chome\u201d or a place where it can be stored. All plugins are stored in a specific location within the software or platform.<code data-no-auto-translation=\"\">\/wp-content\/plugins\/<\/code>Inside the directory, you need to create a new folder. The name of the folder should be unique and descriptive. It is common to use the lowercase version of the plugin name along with hyphens to form the folder name. For example:<code data-no-auto-translation=\"\">my-first-plugin<\/code>\u3002<\/p>\n<!-- AUTO_INTERNAL_LINKS_START --><p>Recommended Reading <a href=\"https:\/\/www.likacloud.com\/en\/knowledge\/wordpress\/ultimate-guide-to-wordpress-plugin-development-from-scratch-2026\/\">The Ultimate Guide to WordPress Plugin Development: Creating Your First Custom Plugin from Scratch<\/a>\u3002<\/p><!-- AUTO_INTERNAL_LINKS_END -->\n\n\n\n\n<p class=\"wp-block-paragraph\">In this folder, the most important file is the main plugin file. This main plugin file is usually named after the plugin itself, for example\u2026<code data-no-auto-translation=\"\">my-first-plugin.php<\/code>The comments at the beginning of this file are the key elements that allow the plugin to be recognized and displayed in the WordPress administration panel. They must contain specific metadata. Here is a basic example:<\/p>\n<!-- AUTO_SYNCED_PATTERN_INSERT_START -->\n\r\n<div class=\"flex justify-between items-center flex-col lg:flex-row xl:flex-col 2xl:flex-row gap-6 sm:gap-8 rounded-lg border border-gray-200 dark:border-gray-700 p-4 mb-8 lg:mb-10 sm:p-6 bg-white dark:bg-gray-750 shadow-md transition-colors duration-300\"\r\n     data-link=\"https:\/\/www.likacloud.com\/en\/tolink\/ultahost-wordpress-hosting\/\">\r\n     \r\n  <div class=\"flex flex-col gap-3 gap-4 sm:gap-6 w-full\">\r\n    <strong class=\"text-2xl font-semibold text-gray-900 dark:text-gray-200\">\r\n      UltaHost WordPress Hosting    <\/strong>\r\n    <div class=\"text-gray-600 dark:text-gray-300 word-word\">30-day refund guarantee, unlimited bandwidth and database usage, free DDoS protection; purchase for 3 years and get a discount of 50%.<\/div>\r\n  <\/div>\r\n\r\n  <div class=\"flex items-center flex-col md:flex-row lg:flex-col xl:flex-row 2xl:flex-col gap-6 shrink-0\">\r\n          <a href=\"https:\/\/www.likacloud.com\/en\/tolink\/ultahost-wordpress-hosting\/\">\r\n                  <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251227020448.webp\" alt=\"UltaHost LOGO\" class=\"content-promotion-card-icon h-9 min-h-9 dark:hidden\" title=\"\">\r\n          <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251229052118.webp\" alt=\"UltaHost LOGO\" class=\"content-promotion-card-icon h-9 min-h-9 hidden dark:block\" title=\"\">\r\n              <\/a>\r\n    \r\n    <a href=\"https:\/\/www.likacloud.com\/en\/tolink\/ultahost-wordpress-hosting\/\"\r\n       class=\"bg-blue-500 w-full md:w-auto lg:w-full xl:w-auto 2xl:w-full text-center !text-white dark:!text-gray-200 !px-5 !py-1.5 rounded-full hover:bg-blue-600 transition-colors\">\r\n       access page    <\/a>\r\n  <\/div>\r\n<\/div>\n<!-- AUTO_SYNCED_PATTERN_INSERT_END -->\n\n\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">&lt;?php\n\/**\n * Plugin Name: \u6211\u7684\u7b2c\u4e00\u4e2a\u63d2\u4ef6\n * Plugin URI:  https:\/\/example.com\/my-first-plugin\n * Description: \u4e00\u4e2a\u7528\u4e8e\u6f14\u793a\u7684\u7b80\u5355WordPress\u63d2\u4ef6\u3002\n * Version:     1.0.0\n * Author:      \u5f00\u53d1\u8005\u540d\u79f0\n * Author URI:  https:\/\/example.com\n * License:     GPL v2 or later\n * Text Domain: my-first-plugin\n * Domain Path: \/languages\n *\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">After creating and saving this file, you can log in to the WordPress administration panel, navigate to the \u201cPlugins\u201d page, and you will see a plugin named \u201cMy First Plugin\u201d that is in an inactive state. Activating it completes the first step. This plugin currently doesn\u2019t have any functionality, but it has already been officially recognized by the WordPress system as a valid plugin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Next, we\u2019ll add the simplest feature to it: a line of custom text at the bottom of the website\u2019s footer. This will help us understand how to use action hooks. We\u2019ll modify the main plugin file and add the code below the comments at the beginning of the file:<\/p>\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">\/\/ \u6ce8\u518c\u4e00\u4e2a\u51fd\u6570\u5230 wp_footer \u52a8\u4f5c\u94a9\u5b50\nfunction my_first_plugin_add_footer_text() {\n    echo &#039;&lt;p style=&quot;text-align: center;&quot;&gt;This text was added by &ldquo;My First Plugin&rdquo;.&lt;\/p&gt;&#039;;\n}\nadd_action( &#039;wp_footer&#039;, &#039;my_first_plugin_add_footer_text&#039; );<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">After saving the file, refresh the front-end page of the website and scroll to the bottom. You will see the text that you added.<code data-no-auto-translation=\"\">add_action<\/code>We tell WordPress: \u201cWhen the system executes to\u2026\u201d<code data-no-auto-translation=\"\">wp_footer<\/code>When performing this action, please invoke the function I have defined.<code data-no-auto-translation=\"\">my_first_plugin_add_footer_text<\/code>\u201dFunction.\u201d<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Implementing plugin functionality and data management<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A practical plugin usually needs to interact with a database. WordPress provides a powerful abstraction layer for accessing databases to facilitate this process.<code data-no-auto-translation=\"\">$wpdb<\/code>It makes it safe and convenient to perform SQL operations. For example, if you want to create a simple user note-taking feature, you may need to create a custom database table to store the data for each note.<\/p>\n<!-- AUTO_INTERNAL_LINKS_START --><p>Recommended Reading <a href=\"https:\/\/www.likacloud.com\/en\/knowledge\/wordpress\/wordpress-plugin-development-tutorial-beginner-to-advanced\/\">WordPress Plugin Development: From Beginner to Expert \u2013 Building Your First Functional Extension from Scratch<\/a>\u3002<\/p><!-- AUTO_INTERNAL_LINKS_END -->\n\n\n\n\n<p class=\"wp-block-paragraph\">The plugin\u2019s settings page is the primary means for users to configure plugin parameters. You need to use WordPress\u2019s settings API to create standardized settings forms and menu items. This process mainly involves three core functions:<code data-no-auto-translation=\"\">register_setting<\/code>Used to register a set of configuration fields.<code data-no-auto-translation=\"\">add_settings_section<\/code>Used to add a block on the settings page, as well as\u2026<code data-no-auto-translation=\"\">add_settings_field<\/code>Used to add specific fields within a block.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Add configuration options for the plugin.<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Assuming we want to add a feature that allows users to customize the text and color of the previous footer text plugin, we first need to use\u2026<code data-no-auto-translation=\"\">add_menu_page<\/code>Or<code data-no-auto-translation=\"\">add_options_page<\/code>The function adds a menu page in the administration backend. Then, within the callback function of this menu page, a form is created using the settings API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We need a function to initialize the settings, and this function is usually mounted (i.e., made available for use) in a specific context or system.<code data-no-auto-translation=\"\">admin_init<\/code>On the action hook. Here is a simplified example demonstrating how to register a setting field:<\/p>\n<!-- AUTO_SYNCED_PATTERN_INSERT_START -->\n\r\n<div class=\"flex justify-between items-center flex-col lg:flex-row xl:flex-col 2xl:flex-row gap-6 sm:gap-8 rounded-lg border border-gray-200 dark:border-gray-700 p-4 mb-8 lg:mb-10 sm:p-6 bg-white dark:bg-gray-750 shadow-md transition-colors duration-300\"\r\n     data-link=\"https:\/\/www.likacloud.com\/en\/tolink\/hosting-shared-hosting\/\">\r\n     \r\n  <div class=\"flex flex-col gap-3 gap-4 sm:gap-6 w-full\">\r\n    <strong class=\"text-2xl font-semibold text-gray-900 dark:text-gray-200\">\r\n      hosting.com Shared Hosting    <\/strong>\r\n    <div class=\"text-gray-600 dark:text-gray-300 word-word\">High performance with AMD EPYC CPUs, NVMe SSD storage and LiteSpeed, 24\/7, 24x7 expert in-house support, advanced security measures including SSL, brute force, malware and DDoS protection, savings of up to 73%<\/div>\r\n  <\/div>\r\n\r\n  <div class=\"flex items-center flex-col md:flex-row lg:flex-col xl:flex-row 2xl:flex-col gap-6 shrink-0\">\r\n          <a href=\"https:\/\/www.likacloud.com\/en\/tolink\/hosting-shared-hosting\/\">\r\n                  <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/09\/20250901222940.svg\" alt=\"hosting.com LOGO\" class=\"content-promotion-card-icon h-9 min-h-9 dark:hidden\" title=\"\">\r\n          <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251228220957.webp\" alt=\"hosting.com LOGO\" class=\"content-promotion-card-icon h-9 min-h-9 hidden dark:block\" title=\"\">\r\n              <\/a>\r\n    \r\n    <a href=\"https:\/\/www.likacloud.com\/en\/tolink\/hosting-shared-hosting\/\"\r\n       class=\"bg-blue-500 w-full md:w-auto lg:w-full xl:w-auto 2xl:w-full text-center !text-white dark:!text-gray-200 !px-5 !py-1.5 rounded-full hover:bg-blue-600 transition-colors\">\r\n       access page    <\/a>\r\n  <\/div>\r\n<\/div>\n<!-- AUTO_SYNCED_PATTERN_INSERT_END -->\n\n\n\n\n\n<pre class=\"wp-block-code\" data-no-auto-translation=\"\"><code class=\"language-php\" data-no-auto-translation=\"\">function my_first_plugin_settings_init() {\n    \/\/ \u6ce8\u518c\u4e00\u4e2a\u65b0\u7684\u8bbe\u7f6e\u7ed9 &quot;my_first_plugin_settings&quot; \u9875\u9762\n    register_setting( &#039;my_first_plugin_settings&#039;, &#039;my_first_plugin_footer_text&#039; );\n\n\/\/ \u5728\u9875\u9762\u4e2d\u6dfb\u52a0\u4e00\u4e2a\u65b0\u7684\u533a\u5757\n    add_settings_section(\n        &#039;my_first_plugin_section&#039;,\n        &#039;\u9875\u811a\u6587\u5b57\u8bbe\u7f6e&#039;,\n        null,\n        &#039;my_first_plugin_settings&#039;\n    );\n\n\/\/ \u5728\u533a\u5757\u5185\u6dfb\u52a0TextField\u5b57\u6bb5\n    add_settings_field(\n        &#039;my_first_plugin_field_text&#039;,\n        &#039;\u8bf7\u8f93\u5165\u8981\u663e\u793a\u7684\u6587\u672c&#039;,\n        &#039;my_first_plugin_field_text_cb&#039;,\n        &#039;my_first_plugin_settings&#039;,\n        &#039;my_first_plugin_section&#039;\n    );\n}\nadd_action( &#039;admin_init&#039;, &#039;my_first_plugin_settings_init&#039; );<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then, you need to define the callback functions for the fields.<code data-no-auto-translation=\"\">my_first_plugin_field_text_cb<\/code>It will render an HTML input field. Once the user saves the settings, the value will be stored in WordPress.<code data-no-auto-translation=\"\">options<\/code>In the table, you can\u2026<code data-no-auto-translation=\"\">get_option(\u2018my_first_plugin_footer_text\u2019)<\/code>Retrieve this value in the footer function and use it to replace the hardcoded text.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The release and maintenance of the plug-in<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Once your plugin has matured, is secure, and stable, you may wish to submit it to the official WordPress plugin directory to make it available to users around the world. This requires you to have a WordPress.org account and follow a detailed set of release guidelines. Your code must comply with the official coding standards; the plugin must be free from any malicious code, and it\u2019s ideal if it includes comprehensive internationalization and localization support.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Implementing internationalization means that the text of the plugin needs to be able to be translated into other languages. This requires the use of\u2026<code data-no-auto-translation=\"\">__()<\/code>and<code data-no-auto-translation=\"\">_e()<\/code>Wrap all user-facing strings with functions, and declare them at the beginning of the plugin.<code data-no-auto-translation=\"\">Text Domain<\/code>and<code data-no-auto-translation=\"\">Domain Path<\/code>Then, generate it using the tool.<code data-no-auto-translation=\"\">.pot<\/code>Translate the template file for use by translators.<\/p>\n<!-- AUTO_INTERNAL_LINKS_START --><p>Recommended Reading <a href=\"https:\/\/www.likacloud.com\/en\/knowledge\/wordpress\/wordpress-plugin-development-tutorial-from-scratch-a1wordpress\/\">Master WordPress plugin development comprehensively: build custom features from scratch<\/a>\u3002<\/p><!-- AUTO_INTERNAL_LINKS_END -->\n\n\n\n\n<h2 class=\"wp-block-heading\">summarize<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">From setting up the environment, understanding the core concepts, to creating the main files and implementing functionality using hooks, then to creating a management interface through API settings, and finally to managing the data and preparing for release \u2013 this process covers all the key steps required to build a high-quality WordPress extension. Remember that a great plugin is not just about having powerful features; it\u2019s also about having clear, secure code, and showing respect for the WordPress ecosystem. Continuously learning from the official documentation, following best practices, and actively testing are essential parts of the growth process for every plugin developer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ Frequently Asked Questions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">What level of PHP knowledge is required to develop a WordPress plugin using ###?<br \/>\nYou need to master the basic syntax of PHP, including variables, functions, conditional statements, and loops. More importantly, you should understand the fundamental concepts of object-oriented programming (OOP), such as classes, objects, properties, and methods. Since many modern plugins are written using object-oriented techniques, this knowledge will help with organizing and reusing code. Proficiency in handling PHP arrays and strings is also essential.<\/p>\n<!-- AUTO_SYNCED_PATTERN_INSERT_START -->\n\r\n<div class=\"flex justify-between items-center flex-col lg:flex-row xl:flex-col 2xl:flex-row gap-6 sm:gap-8 rounded-lg border border-gray-200 dark:border-gray-700 p-4 mb-8 lg:mb-10 sm:p-6 bg-white dark:bg-gray-750 shadow-md transition-colors duration-300\"\r\n     data-link=\"https:\/\/www.likacloud.com\/en\/tolink\/interserver-webhosting\/\">\r\n     \r\n  <div class=\"flex flex-col gap-3 gap-4 sm:gap-6 w-full\">\r\n    <strong class=\"text-2xl font-semibold text-gray-900 dark:text-gray-200\">\r\n      InterServer Shared Hosting    <\/strong>\r\n    <div class=\"text-gray-600 dark:text-gray-300 word-word\">Shared hosting $2.50 USD per month , first month $0.1 USD promo code tryinterserver, 461 cloud apps scripts, one click install.<\/div>\r\n  <\/div>\r\n\r\n  <div class=\"flex items-center flex-col md:flex-row lg:flex-col xl:flex-row 2xl:flex-col gap-6 shrink-0\">\r\n          <a href=\"https:\/\/www.likacloud.com\/en\/tolink\/interserver-webhosting\/\">\r\n                  <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251228045033.svg\" alt=\"InterServer LOGO\" class=\"content-promotion-card-icon h-9 min-h-9 dark:hidden\" title=\"\">\r\n          <img decoding=\"async\" src=\"https:\/\/www.likacloud.com\/wp-content\/uploads\/2025\/12\/20251229054830.webp\" alt=\"InterServer LOGO\" class=\"content-promotion-card-icon h-9 min-h-9 hidden dark:block\" title=\"\">\r\n              <\/a>\r\n    \r\n    <a href=\"https:\/\/www.likacloud.com\/en\/tolink\/interserver-webhosting\/\"\r\n       class=\"bg-blue-500 w-full md:w-auto lg:w-full xl:w-auto 2xl:w-full text-center !text-white dark:!text-gray-200 !px-5 !py-1.5 rounded-full hover:bg-blue-600 transition-colors\">\r\n       access page    <\/a>\r\n  <\/div>\r\n<\/div>\n<!-- AUTO_SYNCED_PATTERN_INSERT_END -->\n\n\n\n\n\n<h3 class=\"wp-block-heading\">How to add a custom database table in a plugin?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">First of all, you need a function that runs the SQL statement to create the table when the plugin is activated. This is usually done by\u2026<code data-no-auto-translation=\"\">register_activation_hook<\/code>Use a function to bind your table creation function. Inside this function, you need to utilize\u2026<code data-no-auto-translation=\"\">dbDelta<\/code>Use this function to create or update the table structure, as it can intelligently handle any changes to the table. Make sure to use it.<code data-no-auto-translation=\"\">$wpdb-&gt;prefix<\/code>Add a WordPress table prefix to your table names to ensure multi-site compatibility.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What aspects should be considered regarding the security of WordPress plugins?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Security is of utmost importance. The primary principle is to never trust user input. For all data coming from users or external sources,<code data-no-auto-translation=\"\">$_GET<\/code>, <code data-no-auto-translation=\"\">$_POST<\/code>) Perform validation and cleaning. Before outputting the data to the browser, it must be escaped. Use the functions provided by WordPress, such as\u2026<code data-no-auto-translation=\"\">sanitize_text_field()<\/code>, <code data-no-auto-translation=\"\">esc_html()<\/code>, <code data-no-auto-translation=\"\">wp_kses_post()<\/code> And prepared statements for\u2026 <code data-no-auto-translation=\"\">$wpdb<\/code> Queries. At the same time, adhere to the principle of least privilege by verifying the user's capabilities, such as their permission to use certain functions or resources.<code data-no-auto-translation=\"\">current_user_can()<\/code>This ensures that only authorized users can perform specific operations.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How should plugin code be organized to maintain a good structure?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A good code structure is key to sustainable maintenance. It is highly recommended to use object-oriented programming (OOP) to encapsulate related functions within classes. The main plugin file should remain concise and primarily handle the initialization and setup processes. Other functional modules, such as management interface classes, common utility classes, and widget classes, should be placed in separate PHP files and loaded as needed by the main file. Define a unique namespace or function prefix for your plugin to avoid name conflicts with other plugins or themes.<\/p>","protected":false},"excerpt":{"rendered":"<p>This article outlines the complete steps for developing WordPress plugins. It begins with the essential preparations before development, including setting up the development environment and understanding the plugin architecture. It then guides users through creating their first plugin and adding basic functionality. Finally, it explains how to manage plugin data and implement the settings page, helping developers systematically acquire the skills needed for plugin development.<\/p>","protected":false},"author":7,"featured_media":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"tags":[806,1978,436,2032,2189],"knowledge_category":[280],"class_list":["post-12383792","knowledge_post","type-knowledge_post","status-publish","hentry","tag-wordpress-development","tag-wordpress-plugin-development","tag-wordpress-tutorial","tag-getting-started","tag-plugin-tutorial","knowledge_category-wordpress"],"acf":{"site_seo_keywords":"WordPress\u63d2\u4ef6\u5f00\u53d1,\u63d2\u4ef6\u5f00\u53d1\u6559\u7a0b,WordPress\u94a9\u5b50,add_action,\u63d2\u4ef6\u8bbe\u7f6e\u9875\u9762,WordPress\u6570\u636e\u5e93,\u4ece\u96f6\u5f00\u53d1\u63d2\u4ef6,\u9ad8\u8d28\u91cf\u63d2\u4ef6\u6784\u5efa"},"_links":{"self":[{"href":"https:\/\/www.likacloud.com\/en\/wp-json\/wp\/v2\/knowledge_posts\/12383792","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.likacloud.com\/en\/wp-json\/wp\/v2\/knowledge_posts"}],"about":[{"href":"https:\/\/www.likacloud.com\/en\/wp-json\/wp\/v2\/types\/knowledge_post"}],"author":[{"embeddable":true,"href":"https:\/\/www.likacloud.com\/en\/wp-json\/wp\/v2\/users\/7"}],"version-history":[{"count":1,"href":"https:\/\/www.likacloud.com\/en\/wp-json\/wp\/v2\/knowledge_posts\/12383792\/revisions"}],"predecessor-version":[{"id":12403563,"href":"https:\/\/www.likacloud.com\/en\/wp-json\/wp\/v2\/knowledge_posts\/12383792\/revisions\/12403563"}],"wp:attachment":[{"href":"https:\/\/www.likacloud.com\/en\/wp-json\/wp\/v2\/media?parent=12383792"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.likacloud.com\/en\/wp-json\/wp\/v2\/tags?post=12383792"},{"taxonomy":"knowledge_category","embeddable":true,"href":"https:\/\/www.likacloud.com\/en\/wp-json\/wp\/v2\/knowledge_category?post=12383792"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}