{"id":1368,"date":"2022-10-13T10:30:00","date_gmt":"2022-10-13T15:30:00","guid":{"rendered":"http:\/\/racmanuel.dev\/?p=1368"},"modified":"2022-10-12T22:46:39","modified_gmt":"2022-10-13T03:46:39","slug":"como-usar-composer-en-un-plugin-de-wordpress","status":"publish","type":"post","link":"https:\/\/racmanuel.dev\/en\/como-usar-composer-en-un-plugin-de-wordpress\/","title":{"rendered":"How to use Composer in a WordPress plugin?"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Before starting the tutorial, it must be clarified that I am referring to Composer, the famous PHP dependency manager used in frameworks such as Laravel, and it has nothing to do with Visual Composer (a WordPress plugin for visual layout).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"618\" height=\"519\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-13.png\" alt=\"\" class=\"wp-image-1369\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-13.png 618w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-13-600x504.png 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-13-300x252.png 300w\" sizes=\"(max-width: 618px) 100vw, 618px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Now that it is clear we will not be discussing Visual Composer, let us begin with the basics.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"que-es-composer\"><span style=\"color: var(--theme-palette-color-2, #25ff00);\" class=\"stk-highlight\">What is Composer?<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Composer is a tool for dependency management in PHP. It allows us, as programmers, to declare the libraries on which our projects depend, and Composer will manage them (install \/ update).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"para-que-nos-sirve-composer-en-un-plugin-de-wordpress\"><span style=\"color: var(--theme-palette-color-2, #25ff00);\" class=\"stk-highlight\">What is the purpose of Composer in a WordPress plugin?<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine you are developing a WordPress plugin and you have several PHP libraries such as CMB2: Custom Meta Boxes, Advanced Custom Fields, and some libraries for generating PDFs or Excel files, PHPUnit, etc. The most common way to integrate these libraries is to go to the official website, download the latest version, and then copy them into your plugin folder. But...<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Can you imagine that in the future you need to maintain the plugin, or perhaps one of the libraries you used in the plugin is no longer compatible with the server's PHP version and you need to update the library? Well, Composer saves us from many of these types of problems, since through our command console we can update all libraries and even install them all, without needing to download them one by one, copying and pasting.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"como-instalar-composer\"><span style=\"color: var(--theme-palette-color-2, #25ff00);\" class=\"stk-highlight\">How to install Composer?<\/span><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"640\" height=\"372\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-14.png\" alt=\"\" class=\"wp-image-1373\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-14.png 640w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-14-600x349.png 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-14-300x174.png 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Open a new tab in your browser and search on Google.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"638\" height=\"380\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-15.png\" alt=\"\" class=\"wp-image-1374\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-15.png 638w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-15-600x357.png 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-15-300x179.png 300w\" sizes=\"(max-width: 638px) 100vw, 638px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We will type <strong><code>composer<\/code><\/strong> and go to the first Google result, making sure the website address is: <a href=\"https:\/\/getcomposer.org\" rel=\"nofollow noopener\" target=\"_blank\">https:\/\/getcomposer.org<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"636\" height=\"389\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-16.png\" alt=\"\" class=\"wp-image-1375\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-16.png 636w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-16-600x367.png 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-16-300x183.png 300w\" sizes=\"(max-width: 636px) 100vw, 636px\" \/><figcaption>Click on the download button.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"631\" height=\"375\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-17.png\" alt=\"\" class=\"wp-image-1376\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-17.png 631w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-17-600x357.png 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-17-300x178.png 300w\" sizes=\"(max-width: 631px) 100vw, 631px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We will see a new page and click on <a href=\"https:\/\/getcomposer.org\/Composer-Setup.exe\" data-type=\"URL\" data-id=\"https:\/\/getcomposer.org\/Composer-Setup.exe\" rel=\"nofollow noopener\" target=\"_blank\">Composer-Setup.exe.<\/a> Once the download of the .exe file is complete, we must run it. It will request some administrator permissions; we will click accept.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-19.png\" alt=\"\" class=\"wp-image-1378\" width=\"633\" height=\"480\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-19.png 812w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-19-600x455.png 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-19-300x228.png 300w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-19-768x583.png 768w\" sizes=\"(max-width: 633px) 100vw, 633px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We must click on the \u201cNext\u201d button.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-20.png\" alt=\"\" class=\"wp-image-1379\" width=\"637\" height=\"481\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-20.png 815w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-20-600x453.png 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-20-300x227.png 300w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-20-768x580.png 768w\" sizes=\"(max-width: 637px) 100vw, 637px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Next, it asks us to indicate the path to the PHP executable. In my case, since I am working with:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Laragon, the path is <span style=\"color: var(--theme-palette-color-2, #25ff00);\" class=\"stk-highlight\">C:\\laragon\\bin\\php\\php-version\\php.exe<\/span><\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">If you are using a local server such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>XAMPP, the path is <span style=\"color: var(--theme-palette-color-2, #25ff00);\" class=\"stk-highlight\">C:\\xampp\\php\\<\/span><\/li><li>WAMP, the path is <span style=\"color: var(--theme-palette-color-2, #25ff00);\" class=\"stk-highlight\">C:\\wamp\\bin\\php\\php <\/span><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">NOTE: You must select the php.exe file, then click \u201cNext\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-21.png\" alt=\"\" class=\"wp-image-1380\" width=\"635\" height=\"482\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-21.png 810w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-21-600x456.png 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-21-300x228.png 300w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-21-768x583.png 768w\" sizes=\"(max-width: 635px) 100vw, 635px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We will click \u201cNext\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-22.png\" alt=\"\" class=\"wp-image-1381\" width=\"641\" height=\"487\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-22.png 817w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-22-600x456.png 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-22-300x228.png 300w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-22-768x584.png 768w\" sizes=\"(max-width: 641px) 100vw, 641px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Click \u201cInstall\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once everything is installed, other windows may appear where you simply need to click Next, and then Finish; after so many Nexts, the Composer installer will have added the PHP folder path and its own Composer folder to our global PATH.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This allows us to work from the console by simply typing php or composer without needing to specify the executable path. To verify that everything is in order, we will perform two small tests, so it is time to open the console and type:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">php -v (press Enter)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To confirm everything is correct, we should see the version of each, as shown in the following image:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-24-1024x586.png\" alt=\"\" class=\"wp-image-1384\" width=\"631\" height=\"360\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-24-1024x586.png 1024w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-24-600x343.png 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-24-300x172.png 300w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-24.png 1092w\" sizes=\"(max-width: 631px) 100vw, 631px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">With this, we now have Composer installed and running on Windows. Now we just need to test Composer in our plugin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"como-usar-composer-en-un-plugin-de-wordpress\"><span style=\"color: var(--theme-palette-color-2, #25ff00);\" class=\"stk-highlight\">How to use Composer in a WordPress plugin?<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">First, we must go to our WordPress plugin folder. In my case, my plugin is located at the following path: <span style=\"color: var(--theme-palette-color-2, #25ff00);\" class=\"stk-highlight\">\\wp-content\\plugins\\demo_composer<\/span>, Inside this folder, we should have the main plugin file. In my case, I created a file for demonstration purposes only:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php\n\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Next, we will open the path to our plugin using the command line. In Windows, simply right-click on the plugin folder and click \u201cOpen in Terminal\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"588\" height=\"175\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-25.png\" alt=\"\" class=\"wp-image-1389\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-25.png 588w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-25-300x89.png 300w\" sizes=\"(max-width: 588px) 100vw, 588px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Our Windows command terminal will appear. Simply type the following line to use Composer in our WordPress plugin:.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">composer init<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-26-1024x325.png\" alt=\"\" class=\"wp-image-1391\" width=\"834\" height=\"265\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-26-1024x325.png 1024w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-26-600x190.png 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-26-300x95.png 300w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-26-768x244.png 768w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-26.png 1302w\" sizes=\"(max-width: 834px) 100vw, 834px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We will press \u201cEnter\u201d or the \u201cN\u201d key to skip the initial configuration.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-27-1024x375.png\" alt=\"\" class=\"wp-image-1393\" width=\"829\" height=\"304\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-27-1024x375.png 1024w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-27-600x220.png 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-27-300x110.png 300w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-27-768x282.png 768w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-27.png 1132w\" sizes=\"(max-width: 829px) 100vw, 829px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If it asks us to define our dependencies, we will type no in both cases. Then it will ask if we agree with the generation; we will type \u201cyes\u201d or press the \u201cEnter\u201d key, and Composer will generate a file in .json format called composer.json in our project.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"349\" height=\"176\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-28.png\" alt=\"\" class=\"wp-image-1394\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-28.png 349w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-28-300x151.png 300w\" sizes=\"(max-width: 349px) 100vw, 349px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Now we can proceed to install a library. We can search for many on <a href=\"https:\/\/packagist.org\/\" rel=\"nofollow noopener\" target=\"_blank\">Packagist<\/a> In this case, I will install the library <a href=\"https:\/\/packagist.org\/packages\/spipu\/html2pdf\" data-type=\"URL\" data-id=\"https:\/\/packagist.org\/packages\/spipu\/html2pdf\" rel=\"nofollow noopener\" target=\"_blank\">spipu\/html2pdf<\/a> for my plugin to generate PDFs. This library is installed with the following command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">composer require spipu\/html2pdf<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-29-1024x113.png\" alt=\"\" class=\"wp-image-1395\" width=\"694\" height=\"77\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-29-1024x113.png 1024w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-29-600x66.png 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-29-300x33.png 300w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-29-768x85.png 768w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-29.png 1240w\" sizes=\"(max-width: 694px) 100vw, 694px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-30.png\" alt=\"\" class=\"wp-image-1396\" width=\"695\" height=\"205\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-30.png 937w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-30-600x177.png 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-30-300x88.png 300w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-30-768x226.png 768w\" sizes=\"(max-width: 695px) 100vw, 695px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once the command is executed, we will see a screen like the previous one, and a folder named vendor will have been created in our project.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"348\" height=\"151\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/image-31.png\" alt=\"\" class=\"wp-image-1398\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/image-31.png 348w, https:\/\/racmanuel.dev\/wp-content\/uploads\/image-31-300x130.png 300w\" sizes=\"(max-width: 348px) 100vw, 348px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"color: var(--theme-palette-color-2, #25ff00);\" class=\"stk-highlight\">To use the libraries installed with Composer<\/span> and saved in the vendor folder <span style=\"color: var(--theme-palette-color-2, #25ff00);\" class=\"stk-highlight\">composer<\/span> within our WordPress plugin,\u00a0<code><span style=\"color: var(--theme-palette-color-2, #25ff00);\" class=\"stk-highlight\">vendor<\/span><\/code>, we only need to include the \u00abautoloader\u00bb located inside the vendor folder, which will handle including all dependencies in the main plugin file.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">With just the line of code that includes the file\u00a0<code>autoload.php<\/code>\u00a0within our plugin, we will have integrated Composer and all the PHP libraries you want, since that file handles everything.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once the \u201cvendor\u201d file is included, simply activate our plugin and program the corresponding code to use our library in the plugin.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"aun-con-dudas\"><span style=\"color: var(--theme-palette-color-2, #25ff00);\" class=\"stk-highlight\">Still have doubts?<\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Do you need help with a web project? Don&#039;t hesitate to contact me. I develop complete and customized solutions with WordPress and PHP, using modern tools and processes, HTML, CSS, SCSS, PHP, JavaScript, Bootstrap, and more. Ready? Send me a message and let&#039;s talk about your web project!<\/p>\n\n\n\n<div class=\"wp-block-jetpack-contact-form\">\n\n\n\n\n\n\n\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Imagina que tienes un plugin en WordPress que estas desarrollando, y tienes varias librer\u00edas de PHP que quieres integrar a tu plugin, la forma m\u00e1s com\u00fan de integrar estas librer\u00edas es ir a la p\u00e1gina oficial descargar la version m\u00e1s reciente, una vez descargadas, las copias a tu carpeta del plugin y haces un include pero&#8230; \u00bfNo crees que es muy largo el proceso? pues para y otras cosas existe composer el gestor de dependencias de PHP.<\/p>","protected":false},"author":1,"featured_media":1399,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_gspb_post_css":"","_glsr_average":0,"_glsr_ranking":0,"_glsr_reviews":0,"footnotes":""},"categories":[11],"tags":[],"niveles":[],"class_list":["post-1368","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sin-categorizar"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"acf":[],"_links":{"self":[{"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/posts\/1368","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/comments?post=1368"}],"version-history":[{"count":13,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/posts\/1368\/revisions"}],"predecessor-version":[{"id":1403,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/posts\/1368\/revisions\/1403"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/media\/1399"}],"wp:attachment":[{"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/media?parent=1368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/categories?post=1368"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/tags?post=1368"},{"taxonomy":"niveles","embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/niveles?post=1368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}