{"id":5450,"date":"2017-09-04T21:40:05","date_gmt":"2017-09-04T19:40:05","guid":{"rendered":"https:\/\/blog.hostinger.io\/es-tutoriales\/?p=5450"},"modified":"2025-12-18T22:51:14","modified_gmt":"2025-12-18T21:51:14","slug":"tutorial-wordpress-plugins-crear-plugin-wordpress","status":"publish","type":"post","link":"\/es\/tutoriales\/tutorial-wordpress-plugins-crear-plugin-wordpress\/","title":{"rendered":"C\u00f3mo crear un plugin de WordPress"},"content":{"rendered":"<p>WordPress dispone de una enorme colecci&oacute;n de plugins que introducen funcionalidades personalizadas. Es m&aacute;s, los plugins pueden a&ntilde;adir nuevas funciones a tu sitio web de WordPress sin tener que cambiar el c&oacute;digo principal.<\/p><p>Aunque hay toneladas de plugins gratuitos y premium entre los que elegir, puede haber ocasiones en las que necesites funciones espec&iacute;ficas de WordPress que no est&eacute;n disponibles. Para ello, es posible que tengas que crear tu propio plugin de WordPress.<\/p><p>En este tutorial aprender&aacute;s los pasos para crear un plugin de WordPress. Tambi&eacute;n repasaremos las mejores pr&aacute;cticas y normas de programaci&oacute;n y creaci&oacute;n de plugins.<\/p><p>Adem&aacute;s, este art&iacute;culo cubrir&aacute; las diferencias entre un plugin y un tema y c&oacute;mo funcionan en la plataforma WordPress.<\/p><p>\n\n\n\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-que-necesitas-para-hacer-un-plugin-de-wordpress\">&iquest;Qu&eacute; necesitas para hacer un plugin de WordPress?<\/h2><ul class=\"wp-block-list\">\n<li>Editor de texto<\/li>\n\n\n\n<li><a href=\"\/es\/tutoriales\/configurar-filezilla\/\">Acceso FTP<\/a> a tu cuenta de hosting<\/li>\n\n\n\n<li>Una <a href=\"\/es\/tutoriales\/como-instalar-wordpress\/\">instalaci&oacute;n de WordPress<\/a> que funcione<\/li>\n<\/ul><p>Necesitar&aacute;s un editor de texto para escribir el c&oacute;digo del plugin. Algunos de los <a href=\"\/es\/tutoriales\/mejores-editores-html\/\">editores de HTML<\/a> m&aacute;s populares son <a href=\"https:\/\/notepad-plus-plus.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Notepad++<\/a> y <a href=\"https:\/\/atom.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Atom<\/a><a href=\"https:\/\/netbeans.org\/\" target=\"_blank\" rel=\"noopener\">.<\/a> <\/p><p>Despu&eacute;s de instalar el editor de texto, con&eacute;ctalo a tu servidor FTP para modificar el c&oacute;digo. Puedes aprender a conectar Notepad++ a tu servidor FTP leyendo nuestro tutorial en ingl&eacute;s sobre <a href=\"https:\/\/www.hostinger.com\/tutorials\/how-to-connect-to-ftp-with-notepad\/\">c&oacute;mo conectarte a FTP con Notepad++<\/a>.<\/p><p>Luego, configura un cliente FTP para subir el archivo del plugin a tu sitio web. Recomendamos utilizar la aplicaci&oacute;n <a href=\"\/es\/tutoriales\/configurar-filezilla\/\">FTP FileZilla<\/a>, ya que es f&aacute;cil de configurar.<\/p><p>Por &uacute;ltimo, aseg&uacute;rate de que tienes una instalaci&oacute;n de WordPress que est&aacute; actualizada y funciona. Hay varias formas de actualizar los archivos del n&uacute;cleo de WordPress si has desactivado las actualizaciones autom&aacute;ticas. <a href=\"\/es\/tutoriales\/una-copia-seguridad-sitio-wordpress\/\">Haz una copia de seguridad de tus archivos de WordPress<\/a> antes de actualizar el sitio para evitar la p&eacute;rdida de datos.<\/p><p>Como alternativa, considera la posibilidad de <a href=\"\/es\/tutoriales\/instalar-wordpress-en-local\/\">instalar WordPress localmente<\/a>. Este m&eacute;todo no requiere un sitio web en vivo con un nombre de dominio y un plan de alojamiento, por lo que puedes probar tu plugin en WordPress sin que los visitantes lo vean de inmediato.<\/p><p>Tener un conocimiento b&aacute;sico de PHP beneficiar&aacute; tu proceso de desarrollo de plugins. Tendr&aacute;s que escribir una funci&oacute;n personalizada y llamar a funciones existentes del n&uacute;cleo de WordPress. Como m&iacute;nimo, deber&iacute;as estar familiarizado con las convenciones de nomenclatura de PHP y la estructuraci&oacute;n de archivos.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"\/es\/hosting-wordpress\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/06\/ES-New-WP_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-40615\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/06\/ES-New-WP_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/06\/ES-New-WP_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/06\/ES-New-WP_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/06\/ES-New-WP_in-text-banner.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div><h2 class=\"wp-block-heading\" id=\"h-plugins-de-wordpress-vs-temas-de-wordpress\">Plugins de WordPress vs Temas de WordPress<\/h2><p>La funcionalidad del sitio de WordPress puede modificarse mediante plugins y temas.<\/p><p>Los temas de WordPress tienen un archivo <strong>functions.php<\/strong> almacenado en la carpeta <strong>\/wp-includes\/<\/strong>, que te permite a&ntilde;adir c&oacute;digo personalizado para nuevas funciones.<\/p><p>Aunque este m&eacute;todo funciona para peque&ntilde;as alteraciones, es poco pr&aacute;ctico para implementar cambios importantes que afecten a todo el sitio web.<\/p><p>Esto se debe a que la funcionalidad almacenada en el archivo <strong>functions.php<\/strong> depende de si el tema est&aacute; activo o no. Desactivar el tema de WordPress revertir&aacute; los cambios realizados en dicho archivo y provocar&aacute; un error cuando el sitio llame a las funciones que faltan.<\/p><p>A menos que utilices un tema hijo, la actualizaci&oacute;n del tema tambi&eacute;n sobrescribir&aacute; el archivo <strong>functions.php<\/strong>, oblig&aacute;ndote a restaurar manualmente el c&oacute;digo personalizado de WordPress.<\/p><p>Por eso es &uacute;til crear un plugin personalizado. Hacerlo facilita la modificaci&oacute;n del comportamiento predeterminado de WordPress para adaptarlo a tus necesidades.<\/p><p>Puedes a&ntilde;adir plugins de WordPress a cualquier instalaci&oacute;n de WordPress. Las funciones introducidas por el plugin seguir&aacute;n funcionando aunque cambies de tema. Adem&aacute;s, las actualizaciones no sobrescribir&aacute;n las funciones existentes, lo que te ahorrar&aacute; tiempo y esfuerzo.<\/p><h2 class=\"wp-block-heading\" id=\"h-que-son-los-hooks-de-wordpress\">&iquest;Qu&eacute; son los hooks de WordPress?<\/h2><p>Los Plugins de WordPress interact&uacute;an con c&oacute;digo de n&uacute;cleo utilizando <strong>hooks<\/strong>, que en espa&ntilde;ol se traducir&iacute;an como ganchos. Hay dos tipos diferentes de hooks.<\/p><ol class=\"wp-block-list\">\n<li><strong>Hooks de acci&oacute;n<\/strong>: sirven para agregar o quitar funciones.<\/li>\n\n\n\n<li><strong>Hooks de filtro<\/strong>: sirven para modificar datos arrojados por funciones.<\/li>\n<\/ol><h3 class=\"wp-block-heading\" id=\"h-acciones-y-hooks-de-accion\">Acciones y Hooks de Acci&oacute;n<\/h3><p>Una acci&oacute;n es una funci&oacute;n PHP llamada a trav&eacute;s de un hook de acci&oacute;n espec&iacute;fico cuando un usuario visita una p&aacute;gina web de WordPress. Los desarrolladores web pueden a&ntilde;adir sus propias funciones a la lista de acciones o eliminar las preexistentes a&ntilde;adiendo el script de hook de acci&oacute;n<strong> wp_head()<\/strong> antes de la etiqueta de cierre <strong>(&lt;\/head&gt;<\/strong>) de cualquier p&aacute;gina.<\/p><p>Los ganchos de acci&oacute;n son contextuales: algunos se llaman en cada p&aacute;gina de tu sitio web, otros s&oacute;lo se llaman cuando se visualiza el Panel de control del administrador, etc. Se puede encontrar una lista completa de los hooks de acciones y el contexto en el que se llaman en la p&aacute;gina <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\" target=\"_blank\" rel=\"noreferrer noopener\">WordPress Plugin API\/Action Reference<\/a>.<\/p><p><strong>A&ntilde;adiendo funciones a un hook de acci&oacute;n usando add_action()<\/strong><\/p><p>Para agregar funciones a un hook de acci&oacute;n en un archivo de plugin se debe llamar a la funci&oacute;n <b>add_action()<\/b> con al menos dos par&aacute;metros.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"css\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Hook to the 'init' action, which is called after WordPress is finished loading the core code\nadd_action( 'init', 'add_Cookie' );\n \n\/\/ Set a cookie with the current time of day\nfunction add_Cookie() {\n  setcookie(\"last_visit_time\", date(\"r\"), time()+60*60*24*30, \"\/\");\n}<\/pre><p>El primer par&aacute;metro es el nombre del <strong>hook de acci&oacute;n<\/strong> que quieres adjuntar la llamada de retorno, mientras que el segundo par&aacute;metro contiene el nombre de la<strong> funci&oacute;n<\/strong> que quieres ejecutar.<\/p><p>El tercer par&aacute;metro (opcional) es la <strong>prioridad<\/strong> de la funci&oacute;n que deseas ejecutar. La prioridad predeterminada es 10, poniendo tu funci&oacute;n personalizada despu&eacute;s de cualquiera de las funciones integradas de WordPress. <\/p><p>El cuarto par&aacute;metro (opcional) es el <strong>n&uacute;mero de argumentos<\/strong>, lo que significa cu&aacute;ntos par&aacute;metros tu funci&oacute;n personalizada puede tomar. El valor predeterminado es 1.<\/p><p><strong>Ejemplo de c&oacute;digo de plugin para mostrar texto despu&eacute;s del pie de cada p&aacute;gina<\/strong><\/p><p>Este complemento asocia el hook de acci&oacute;n <strong>wp_footer()<\/strong>, que se llama justo antes de la etiqueta <strong>&lt;\/body&gt;<\/strong> de cierre de cada p&aacute;gina, y a&ntilde;ade una nueva funci&oacute;n llamada <strong>mfp_Add_Text()<\/strong>. Puesto que esto es parte de un plugin y no del tema, continuar&aacute; funcionando as&iacute; actives un tema totalmente diferente. <\/p><p>Puedes guardar este ejemplo como un archivo PHP, cargarlo en la carpeta de <strong>plugins<\/strong>.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"css\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/*\nNombre del Plugin: A&ntilde;adir Texto Al Pie de la P&aacute;gina\n*\/\n \n\/\/ Hook the 'wp_footer' action hook, add the function named 'mfp_Add_Text' to it\nadd_action(\"wp_footer\", \"mfp_Add_Text\");\n \n\/\/ Define 'mfp_Add_Text'\nfunction mfp_Add_Text()\n{\n  echo \"&lt;p style='color: black;'&gt;After the footer is loaded, my text is added!&lt;\/p&gt;\";\n}<\/pre><p>La siguiente captura de pantalla muestra el plugin en acci&oacute;n despu&eacute;s de activarlo a trav&eacute;s del panel de administraci&oacute;n de WordPress: <\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"800\" height=\"107\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2017\/09\/wordpress-plugin-agregar-texto-al-pie-de-pagina.png\/public\" alt=\"\" class=\"wp-image-5452\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2017\/09\/wordpress-plugin-agregar-texto-al-pie-de-pagina.png\/w=800,fit=scale-down 800w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2017\/09\/wordpress-plugin-agregar-texto-al-pie-de-pagina.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2017\/09\/wordpress-plugin-agregar-texto-al-pie-de-pagina.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2017\/09\/wordpress-plugin-agregar-texto-al-pie-de-pagina.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n<\/div><p>\n\n\n<div class=\"announcement-block announcement-block--important\">\n            <span class=\"announcement-block__heading\">\n                <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n                          d=\"M12 22.5C17.799 22.5 22.5 17.799 22.5 12C22.5 6.20101 17.799 1.5 12 1.5C6.20101 1.5 1.5 6.20101 1.5 12C1.5 17.799 6.20101 22.5 12 22.5ZM13.637 7.65198C13.637 6.74791 12.9041 6.01501 12 6.01501C11.0959 6.01501 10.363 6.74791 10.363 7.65198C10.5335 9.53749 10.875 13.383 10.875 13.383C10.875 14.0043 11.3787 14.508 12 14.508C12.6213 14.508 13.125 14.0043 13.125 13.383V13.38L13.637 7.65198ZM11.9927 15.714C11.3714 15.714 10.8677 16.2177 10.8677 16.839C10.8677 17.4603 11.3714 17.964 11.9927 17.964H12.0073C12.6286 17.964 13.1323 17.4603 13.1323 16.839C13.1323 16.2177 12.6286 15.714 12.0073 15.714H11.9927Z\"\n                          fill=\"#FEA419\"\/>\n                <\/svg>\n                Important\n            <\/span>\n            <p class=\"announcement-block__content\">\n                <strong>&iexcl;Importante!:<\/strong> PHP eval&uacute;a todo el script antes de ejecutarlo. Escribir las llamadas <strong>add_action()<\/strong> en la parte superior del archivo en el orden en que se ejecutan y, a continuaci&oacute;n, definir tus funciones en el mismo orden, hace que el archivo sea m&aacute;s f&aacute;cil de leer. \n            <\/p><\/div>\n\n\n\n<\/p><p><strong>Eliminando funciones de un hook de acci&oacute;n usando remove_action()<\/strong><\/p><p>Para <strong>eliminar<\/strong> una acci&oacute;n de un hook de acci&oacute;n, debes escribir una nueva funci&oacute;n que llame a <strong>remove_action()<\/strong> y, a continuaci&oacute;n, llama a la funci&oacute;n que has escrito utilizando <strong>add_action()<\/strong>. <\/p><p>La funci&oacute;n  <strong>remove_action()<\/strong> debe contener al menos dos par&aacute;metros.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"css\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Hook the 'init' action, which is called after WordPress is finished loading the core code, add the function 'remove_My_Meta_Tags'\nadd_action( 'init', 'remove_My_Meta_Tags' );\n\n\/\/ Remove the 'add_My_Meta_Tags' function from the wp_head action hook\nfunction remove_My_Meta_Tags()\n{\n  remove_action( 'wp_head', 'add_My_Meta_Tags');\n}<\/pre><p>El primer par&aacute;metro requerido es el nombre del <strong>hook de acci&oacute;n<\/strong> al que est&aacute; asociada la funci&oacute;n mientras que el segundo par&aacute;metro requerido es el nombre de la <strong>funci&oacute;n<\/strong> que deseas eliminar.<\/p><p>El tercer par&aacute;metro (opcional) es la <strong>prioridad<\/strong> de la funci&oacute;n original. Este par&aacute;metro debe ser id&eacute;ntico a la prioridad que se defini&oacute; originalmente al agregar la acci&oacute;n al gancho de acci&oacute;n. Si no definiste una prioridad en tu funci&oacute;n personalizada, no incluyas el par&aacute;metro.<\/p><p>Una forma de hacerlo es utilizar la funci&oacute;n PHP date() para obtener el d&iacute;a actual, seguida de etiquetas condicionales para comprobar si es lunes. Despu&eacute;s de analizar la informaci&oacute;n, la p&aacute;gina ejecutar&aacute; la funci&oacute;n remove_action() en todos los posts publicados los lunes.<\/p><p>En el siguiente ejemplo, evitaremos que el texto extra agregado al pie de p&aacute;gina aparezca en las entradas de los lunes.<\/p><p>Una forma de hacerlo es utilizando la funci&oacute;n fecha de PHP para obtener el d&iacute;a actual, seguido de una instrucci&oacute;n condicional para probar si el d&iacute;a actual es lunes. Despu&eacute;s de analizar la informaci&oacute;n, la p&aacute;gina ejecutar&aacute; la funci&oacute;n <strong>remove_action ()<\/strong> en todos los posts publicados los lunes.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"css\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n \n\/\/ Hook the 'wp_footer' action, run the function named 'mfp_Add_Text()'\nadd_action(\"wp_footer\", \"mfp_Add_Text\");\n \n\/\/ Hook the 'wp_head' action, run the function named 'mfp_Remove_Text()'\nadd_action(\"wp_head\", \"mfp_Remove_Text\");\n \n\/\/ Define the function named 'mfp_Add_Text('), which just echoes simple text\nfunction mfp_Add_Text()\n{\n  echo \"&lt;p style='color: #FFF;'&gt;After the footer is loaded, my text is added!&lt;\/p&gt;\";\n}\n \n\/\/ Define the function named 'mfp_Remove_Text()' to remove our previous function from the 'wp_footer' action\nfunction mfp_Remove_Text()\n{\n  if (date(\"l\") === \"Monday\") {\n    \/\/ Target the 'wp_footer' action, remove the 'mfp_Add_Text' function from it\n    remove_action(\"wp_footer\", \"mfp_Add_Text\");\n  }\n}<\/pre><h3 class=\"wp-block-heading\" id=\"h-filtros-y-hooks-de-filtro\">Filtros y hooks de filtro<\/h3><p>Un filtro es una funci&oacute;n PHP llamada por un hook de filtro espec&iacute;fico que modifica los datos devueltos por las funciones existentes. Al igual que los hooks de acci&oacute;n, los hooks de filtro tambi&eacute;n son contextuales.<\/p><p>Una lista completa de los hooks de filtro y el contexto en el que se llaman se pueden encontrar en la <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Filter_Reference\" target=\"_blank\" rel=\"noopener\">p&aacute;gina de<\/a> <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Filter_Reference\" target=\"_blank\" rel=\"noreferrer noopener\">WordPress Plugin API\/Filter Reference<\/a>.<\/p><p><strong>A&ntilde;adiendo filtros usando add_filter()<\/strong><\/p><p>Para <b>agregar<\/b> una funci&oacute;n de filtro a cualquier gancho de filtro, tu complemento debe llamar a la funci&oacute;n de WordPress <b>add_filter()<\/b>, con al menos dos par&aacute;metros.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"css\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Hook the 'the_content' filter hook (content of any post), run the function named 'mfp_Fix_Text_Spacing'\nadd_filter(\"the_content\", \"mfp_Fix_Text_Spacing\");\n\n\/\/ Automatically correct double spaces from any post\nfunction mfp_Fix_Text_Spacing($the_Post)\n{\n $the_New_Post = str_replace(\"  \", \" \", $the_Post);\n \n return $the_New_Post;\n}<\/pre><p>El primer par&aacute;metro requerido es el nombre del <strong>hook&nbsp;del filtro<\/strong> que quieres asociar, mientras que el segundo par&aacute;metro contiene el nombre de la <strong>funci&oacute;n<\/strong> que quieres que se ejecute cuando se aplique el filtro.<\/p><p>El tercer par&aacute;metro (opcional) es la <strong>prioridad<\/strong> de la funci&oacute;n que deseas ejecutar. Puedes asociar cualquier cantidad de funciones de filtro diferentes a un mismo hook de filtro. La prioridad predeterminada es 10, poniendo tu funci&oacute;n personalizada despu&eacute;s de cualquier funci&oacute;n incorporada. <\/p><p>El cuarto par&aacute;metro (opcional) es el <strong>n&uacute;mero de argumentos<\/strong>, lo que significa cu&aacute;ntos par&aacute;metros tu funci&oacute;n de filtro personalizado ser&aacute; capaz de tomar. El valor predeterminado es 1.<\/p><p><strong>Ejemplo de plugin para modificar el extracto de una publicaci&oacute;n<\/strong><\/p><p>WordPress tiene una funci&oacute;n que arroja el extracto de una entrada, est&aacute; funci&oacute;n se llama <strong>get_the_excerpt()<\/strong>, que tambi&eacute;n es un hook de filtro. Esta funci&oacute;n realmente lo que hace es mostrar el extracto que <strong>get_the_excerpt()<\/strong> arroja, es ah&iacute; donde se aplica el filtro y el fragmento se altera antes de ser mostrado. <\/p><p>El siguiente ejemplo de plugin define una funci&oacute;n de filtro que toma el extracto como su &uacute;nico par&aacute;metro de entrada, a&ntilde;ade un texto antes de &eacute;l y devuelve el nuevo valor cada vez que el script llama a la funci&oacute;n <strong>get_the_excerpt().<\/strong><\/p><p>Como el valor devuelto de la funci&oacute;n <strong>get_the_excerpt()<\/strong> es el texto del extracto real, el plugin introducir&aacute; autom&aacute;ticamente el nuevo valor como par&aacute;metro de la funci&oacute;n <strong>$old_Excerpt<\/strong> cuando se llame usando <strong>add_filter()<\/strong>. La funci&oacute;n que definas debe devolver el nuevo valor.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"css\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/*\nPlugin Name: Add Excerpt \n*\/\n\n\/\/ Hook the get_the_excerpt filter hook, run the function named mfp_Add_Text_To_Excerpt\nadd_filter(\"get_the_excerpt\", \"mfp_Add_Text_To_Excerpt\");\n\n\/\/ Take the excerpt, add some text before it, and return the new excerpt\nfunction mfp_Add_Text_To_Excerpt($old_Excerpt)\n{\n  $new_Excerpt = \"&lt;b&gt;Excerpt: &lt;\/b&gt;\" . $old_Excerpt;\n  return $new_Excerpt;\n}<\/pre><p><strong>Eliminando filtros mediante remove_filter ()<\/strong><\/p><p>Eliminar un filtro es mucho m&aacute;s sencillo que eliminar una acci&oacute;n, ya que WordPress te permite llamar a la funci&oacute;n<strong> remove_filter()<\/strong> sin necesidad de definir una nueva funci&oacute;n. <\/p><p>En el siguiente ejemplo, eliminaremos el texto adicional del extracto si el d&iacute;a actual es jueves. Utilizaremos la funci&oacute;n <strong>remove_filter()<\/strong> con al menos dos par&aacute;metros.<\/p><p>El primero debe contener el hook del filtro al que se adjunta la funci&oacute;n. El segundo par&aacute;metro debe ser el nombre del filtro que quieres eliminar. A&ntilde;ade un par&aacute;metro de prioridad si lo has definido al crear la funci&oacute;n.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"css\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Hook the get_the_excerpt filter hook, run the function named mfp_Add_Text_To_Excerpt\nadd_filter(\"get_the_excerpt\", \"mfp_Add_Text_To_Excerpt\");\n\n\/\/ If today is a Thursday, remove the filter from the_excerpt()\nif (date(\"l\") === \"Thursday\") {\n  remove_filter(\"get_the_excerpt\", \"mfp_Add_Text_To_Excerpt\");\n}\n\n\/\/ Take the excerpt, add some text before it, and return the new excerpt\nfunction mfp_Add_Text_To_Excerpt($old_Excerpt)\n{\n  $new_Excerpt = \"&lt;b&gt;Excerpt: &lt;\/b&gt;\" . $old_Excerpt;\n  return $new_Excerpt;\n}<\/pre><p>Ahora que tienes una comprensi&oacute;n b&aacute;sica de los ganchos y los filtros, vamos a crear un plugin simple de WordPress que a&ntilde;ade un nuevo enlace y una p&aacute;gina al Panel de control del administrador.<\/p><p>\n\n\n\n<div class=\"announcement-block announcement-block--important\">\n            <span class=\"announcement-block__heading\">\n                <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n                          d=\"M12 22.5C17.799 22.5 22.5 17.799 22.5 12C22.5 6.20101 17.799 1.5 12 1.5C6.20101 1.5 1.5 6.20101 1.5 12C1.5 17.799 6.20101 22.5 12 22.5ZM13.637 7.65198C13.637 6.74791 12.9041 6.01501 12 6.01501C11.0959 6.01501 10.363 6.74791 10.363 7.65198C10.5335 9.53749 10.875 13.383 10.875 13.383C10.875 14.0043 11.3787 14.508 12 14.508C12.6213 14.508 13.125 14.0043 13.125 13.383V13.38L13.637 7.65198ZM11.9927 15.714C11.3714 15.714 10.8677 16.2177 10.8677 16.839C10.8677 17.4603 11.3714 17.964 11.9927 17.964H12.0073C12.6286 17.964 13.1323 17.4603 13.1323 16.839C13.1323 16.2177 12.6286 15.714 12.0073 15.714H11.9927Z\"\n                          fill=\"#FEA419\"\/>\n                <\/svg>\n                Important\n            <\/span>\n            <p class=\"announcement-block__content\">\n                <strong>&iexcl;Importante! <\/strong>Utilizar un sitio de staging de WordPress para probar nuevos plugins te ayudar&aacute; a evitar errores que puedan causar un tiempo de inactividad. Hay dos maneras de <a href=\"\/es\/tutoriales\/entorno-staging-wordpress\/\">crear un entorno de staging<\/a>: manualmente o utilizando un plugin como WP Staging. Tambi&eacute;n puedes instalar WordPress localmente en tu ordenador. \n            <\/p><\/div>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-paso-1-almacenamiento-del-plugin\">Paso 1 &ndash; Almacenamiento del plugin<\/h2><p>El primer paso para crear tu plugin de WordPress es crear una carpeta para almacenar todos tus archivos. El nombre de la carpeta debe ser &uacute;nico y descriptivo. Comprueba los nombres de las otras carpetas de plugins dentro de <strong>\/wp-content\/plugins\/<\/strong> para asegurarte de que el nuevo nombre no est&aacute; ya en uso.<\/p><p>Utiliza <a href=\"\/es\/tutoriales\/configurar-filezilla\/\">un cliente FTP<\/a>  para conectarte a tu cuenta de alojamiento y facilitar el proceso de subida de archivos. Desde el directorio principal de WordPress, navega a <strong>wp-content<\/strong> -&gt; <strong>plugins<\/strong>. Dentro de la <strong>carpeta de plugins<\/strong>, crea una nueva carpeta llamada <strong>my-first-plugin<\/strong> (&ldquo;mi primer plugin&rdquo; en espa&ntilde;ol): <\/p><figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"318\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/ftp-client-crear-una-carpeta.png\/w=1024,h=1024,fit=scale-down\" alt=\"Una captura de pantalla del cliente FTP mostrando d&oacute;nde crear la carpeta my-first-plugin\" class=\"wp-image-26038\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/ftp-client-crear-una-carpeta.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/ftp-client-crear-una-carpeta.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/ftp-client-crear-una-carpeta.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/ftp-client-crear-una-carpeta.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/ftp-client-crear-una-carpeta.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/ftp-client-crear-una-carpeta.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><p>Practicar la gesti&oacute;n de archivos durante el desarrollo de WordPress facilitar&aacute; mucho el proceso a largo plazo. Por esto, te recomendamos separar los distintos archivos que componen tu plugin de WordPress en subcarpetas seg&uacute;n su funcionalidad.<\/p><p>Por ejemplo, guarda los archivos CSS, PHP y JavaScript en carpetas separadas. A medida que desarrolles tu plugin de WordPress personalizado, ser&aacute; m&aacute;s f&aacute;cil localizar archivos espec&iacute;ficos cuando todo tenga un directorio dedicado.<\/p><h2 class=\"wp-block-heading\" id=\"h-paso-2-creacion-del-primer-archivo\">Paso 2 &ndash; Creaci&oacute;n del primer archivo<\/h2><p>El archivo principal del plugin contendr&aacute; la informaci&oacute;n que WordPress necesita para mostrar tu plugin en la lista de plugins, donde podr&aacute;s activarlo.<\/p><p>Crea un nuevo archivo PHP llamado <b>my-first-plugin.php<\/b> en la carpeta que has creado antes. Este archivo principal del plugin contendr&aacute; comentarios de cabecera con informaci&oacute;n adicional para que WordPress la lea o muestre.<\/p><figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"363\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/ftp-client-ver-o-editar-un-archivo.png\/w=1024,h=1024,fit=scale-down\" alt=\"Una captura de pantalla del cliente FTP que muestra c&oacute;mo ver o editar tu archivo PHP\" class=\"wp-image-26039\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/ftp-client-ver-o-editar-un-archivo.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/ftp-client-ver-o-editar-un-archivo.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/ftp-client-ver-o-editar-un-archivo.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/ftp-client-ver-o-editar-un-archivo.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/ftp-client-ver-o-editar-un-archivo.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/ftp-client-ver-o-editar-un-archivo.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><p>A continuaci&oacute;n, haz clic con el bot&oacute;n derecho en el archivo y selecciona <strong>Ver\/Editar<\/strong> para a&ntilde;adir el siguiente c&oacute;digo mediante un editor de HTML:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/*\nPlugin Name: My First Plugin\nDescription: This is my first plugin! It makes a new admin menu link!\nAuthor: Your Name\n*\/<\/pre><p>Puedes consultar este <a href=\"https:\/\/www.php.net\/basic-syntax.instruction-separation\" target=\"_blank\" rel=\"noreferrer noopener\">manual de PHP<\/a> para entender por qu&eacute; la etiqueta de cierre<strong> ?&gt;<\/strong> no es necesaria aqu&iacute;.<\/p><p>Guarda el archivo. A continuaci&oacute;n, navega a la secci&oacute;n de <strong>plugins<\/strong> de tu panel de control de WordPress. Si WordPress ha le&iacute;do correctamente el nuevo archivo, ver&aacute;s <strong>My First Plugin<\/strong> en la lista:<\/p><p><\/p><figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"410\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/nuevo-plugin-adjuntado-wp.png\/w=1024,h=1024,fit=scale-down\" alt=\"Una captura de pantalla del dahboard de WordPress que muestra d&oacute;nde encontrar tu plugin\" class=\"wp-image-26051\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/nuevo-plugin-adjuntado-wp.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/nuevo-plugin-adjuntado-wp.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/nuevo-plugin-adjuntado-wp.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/nuevo-plugin-adjuntado-wp.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/nuevo-plugin-adjuntado-wp.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/nuevo-plugin-adjuntado-wp.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><h2 class=\"wp-block-heading\" id=\"h-paso-3-escribiendo-las-funciones-del-plugin\">Paso 3 &ndash; Escribiendo las funciones del plugin<\/h2><p>Antes de empezar a escribir las funciones del plugin, es muy recomendable dar a todos los archivos, funciones y variables un prefijo &uacute;nico en su nombre para evitar cualquier conflicto con otros plugins. En nuestro ejemplo, utilizaremos el prefijo <strong>mfp<\/strong>, que es la abreviatura de <strong>My First Plugin<\/strong>.<\/p><p>En la carpeta principal de tu plugin, crea una nueva carpeta llamada <strong>includes<\/strong>. Lo utilizaremos para almacenar los archivos de apoyo utilizados por el archivo principal. En esta carpeta, crea un nuevo archivo PHP y gu&aacute;rdalo como <strong>mfp-functions.php<\/strong>. Debes declarar la apertura con la etiqueta <strong>&lt;?php<\/strong>&nbsp;en la primera l&iacute;nea. <\/p><p>Este nuevo archivo es donde se almacenar&aacute;n todas las funciones de tu plugin.<\/p><p>Ahora regresa a&nbsp;<strong>my-first-plugin.php,&nbsp;<\/strong>en la carpeta principal de tu plugin. Debes incluir el archivo <strong>mfp-functions.php<\/strong> para que puedas usar las nuevas funciones. Utiliza <strong>require_once<\/strong> para asegurarte de que el plugin solo funciona si el archivo de funciones est&aacute; disponible. <\/p><p>Edita <strong>my-first-plugin.php<\/strong> como se muestra a continuaci&oacute;n, luego gu&aacute;rdalo y c&aacute;rgalo una vez m&aacute;s, sobrescribiendo la versi&oacute;n anterior cuando se te pregunte.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"css\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/*\nPlugin Name: My First Plugin\nDescription: This is my first plugin! It makes a new admin menu link!\nAuthor: Your Name\n*\/\n\n\/\/ Include mfp-functions.php, use require_once to stop the script if mfp-functions.php is not found\nrequire_once plugin_dir_path(__FILE__) . 'includes\/mfp-functions.php';\n<\/pre><p>La funci&oacute;n de WordPress <strong>plugin_dir_path(FILE)<\/strong> te permite incluir archivos de tu carpeta de plugins, dando la ruta completa al directorio que almacena el nuevo plugin.<\/p><p>Ahora, vuelve al archivo <strong>mfp-functions.php <\/strong>en el directorio <strong>Includes<\/strong>. Debido a que nuestro plugin a&ntilde;adir&aacute; un nuevo enlace de nivel superior al men&uacute; de navegaci&oacute;n del panel de control del administrador, utilizaremos una funci&oacute;n personalizada llamada <strong>mfp_Add_My_Admin_Link()<\/strong>. A&ntilde;ade el siguiente bloque de c&oacute;digo al archivo<strong> mfp-functions.php<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"css\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/*\n * Add my new menu to the Admin Control Panel\n *\/\n\/\/ Hook the 'admin_menu' action hook, run the function named 'mfp_Add_My_Admin_Link()'\nadd_action( 'admin_menu', 'mfp_Add_My_Admin_Link' );\n\/\/ Add a new top level menu link to the ACP\nfunction mfp_Add_My_Admin_Link()\n{\n      add_menu_page(\n        'My First Page', \/\/ Title of the page\n        'My First Plugin', \/\/ Text to show on the menu link\n        'manage_options', \/\/ Capability requirement to see the link\n        'includes\/mfp-first-acp-page.php' \/\/ The 'slug' - file to display when clicking the link\n    );\n}<\/pre><p>\n\n\n\n<div class=\"announcement-block announcement-block--important\">\n            <span class=\"announcement-block__heading\">\n                <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n                          d=\"M12 22.5C17.799 22.5 22.5 17.799 22.5 12C22.5 6.20101 17.799 1.5 12 1.5C6.20101 1.5 1.5 6.20101 1.5 12C1.5 17.799 6.20101 22.5 12 22.5ZM13.637 7.65198C13.637 6.74791 12.9041 6.01501 12 6.01501C11.0959 6.01501 10.363 6.74791 10.363 7.65198C10.5335 9.53749 10.875 13.383 10.875 13.383C10.875 14.0043 11.3787 14.508 12 14.508C12.6213 14.508 13.125 14.0043 13.125 13.383V13.38L13.637 7.65198ZM11.9927 15.714C11.3714 15.714 10.8677 16.2177 10.8677 16.839C10.8677 17.4603 11.3714 17.964 11.9927 17.964H12.0073C12.6286 17.964 13.1323 17.4603 13.1323 16.839C13.1323 16.2177 12.6286 15.714 12.0073 15.714H11.9927Z\"\n                          fill=\"#FEA419\"\/>\n                <\/svg>\n                Important\n            <\/span>\n            <p class=\"announcement-block__content\">\n                 <strong>&iexcl;Importante!<\/strong> Agrupa las funciones similares y a&ntilde;ade una descripci&oacute;n sobre cada una de ellas mediante un comentario de varias l&iacute;neas. Esto facilitar&aacute; las futuras actualizaciones y la depuraci&oacute;n del plugin. \n            <\/p><\/div>\n\n\n\n<\/p><p><strong>mfp_Add_My_Admin_Link()<\/strong> utiliza la funci&oacute;n integrada de WordPress <strong>add_menu_page()<\/strong> con al menos cuatro par&aacute;metros en el siguiente orden:<\/p><ul class=\"wp-block-list\">\n<li><strong>T&iacute;tulo de la p&aacute;gina<\/strong>: el nombre de la p&aacute;gina que se muestra en la pesta&ntilde;a del navegador.<\/li>\n\n\n\n<li><strong>T&iacute;tulo del men&uacute;<\/strong>: el texto utilizado para el elemento del men&uacute;. En nuestro ejemplo, es el nombre del plugin.<\/li>\n\n\n\n<li><strong>Capacidad<\/strong>: requisito de capacidad del usuario para ver el men&uacute; del plugin. Aqu&iacute;, solo los usuarios con la capacidad <strong>manage_options <\/strong>pueden acceder a la p&aacute;gina enlazada.<\/li>\n\n\n\n<li><strong>Slug del men&uacute;<\/strong>: el archivo que se utilizar&aacute; para mostrar la p&aacute;gina real. Crearemos el archivo <strong>mfp-first-acp-page.php<\/strong> vinculado en la carpeta <strong>Includes<\/strong> en la siguiente secci&oacute;n.<\/li>\n\n\n\n<li><strong>Funci&oacute;n (opcional)<\/strong>: la funci&oacute;n que produce el contenido de la p&aacute;gina.<\/li>\n<\/ul><p>Adjuntar la funci&oacute;n personalizada mediante <strong>add_action()<\/strong> permite que el plugin llame al hook de acci&oacute;n en determinadas circunstancias. A&ntilde;adir <strong>admin_menu <\/strong>como primer par&aacute;metro llamar&aacute; a la funci&oacute;n cuando un usuario acceda al men&uacute; de administraci&oacute;n. Mientras tanto, <strong>mfp_Add_My_Admin_Link<\/strong> es la funci&oacute;n que se ejecutar&aacute; cuando se especifique como segundo par&aacute;metro.<\/p><p>Por &uacute;ltimo, sube el archivo del plugin <strong>mfp-functions.php<\/strong> a la carpeta <strong>Includes<\/strong>.<\/p><h2 class=\"wp-block-heading\" id=\"h-paso-4-creacion-de-la-nueva-pagina-de-administracion\">Paso 4 &ndash; Creaci&oacute;n de la nueva p&aacute;gina de administraci&oacute;n<\/h2><p>Despu&eacute;s de definir las funciones del plugin, es hora de construir la p&aacute;gina a la que nos llevar&aacute; el bot&oacute;n del men&uacute;. Crea un nuevo archivo PHP llamado <strong>mfp-first-acp-page.php<\/strong> en la subcarpeta <strong>Includes<\/strong> y a&ntilde;ade el siguiente c&oacute;digo:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"css\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;div class=\"wrap\"&gt;\n  &lt;h1&gt;Hello!&lt;\/h1&gt;\n  &lt;p&gt;This is my plugin's first page&lt;\/p&gt;\n&lt;\/div&gt;<\/pre><p>Al crear las p&aacute;ginas de administraci&oacute;n, WordPress recomienda adjuntar tu propio HTML con una etiqueta &nbsp;<strong>&lt;div&gt;&nbsp;<\/strong>y darle la clase <strong>&ldquo;wrap&rdquo;<\/strong>, como se muestra arriba. Esto garantiza que todo tu contenido aparezca en el lugar correcto, al igual que cualquier otra p&aacute;gina de administraci&oacute;n. Hacerlo tambi&eacute;n ayuda a mantener el c&oacute;digo organizado.<\/p><p>Por &uacute;ltimo, ve a la secci&oacute;n de <strong>plugins<\/strong> de tu panel de control de WordPress y activa el nuevo plugin. Si el proceso tiene &eacute;xito, el enlace del panel de administraci&oacute;n de tu primer plugin aparecer&aacute; en la parte inferior del men&uacute; de navegaci&oacute;n. <\/p><figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"386\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/imagen-nuevo-plugin-en-WP.png\/w=1024,h=1024,fit=scale-down\" alt=\"Una captura de pantalla del panel de control de WordPress que muestra tu plugin en la parte inferior del men&uacute; de navegaci&oacute;n\" class=\"wp-image-26049\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/imagen-nuevo-plugin-en-WP.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/imagen-nuevo-plugin-en-WP.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/imagen-nuevo-plugin-en-WP.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/imagen-nuevo-plugin-en-WP.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/imagen-nuevo-plugin-en-WP.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/imagen-nuevo-plugin-en-WP.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><p>&iexcl;Enhorabuena! Has creado con &eacute;xito tu primer plugin de WordPress.<\/p><p>Si has creado el plugin en un sitio de staging, tendr&aacute;s que <a href=\"\/es\/tutoriales\/plugins-en-wordpress-gratis\/\">instalar el plugin<\/a> en el sitio real. Los siguientes pasos te mostrar&aacute;n c&oacute;mo hacerlo:<\/p><ol class=\"wp-block-list\">\n<li>En FileZilla, haz clic con el bot&oacute;n derecho en la carpeta de <strong>my-new-plugin<\/strong> y selecciona <strong>Descargar<\/strong>. A continuaci&oacute;n, comprime los archivos en un archivo ZIP.<\/li>\n<\/ol><figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"379\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/descargar-plugin-ftp-client.png\/w=1024,h=1024,fit=scale-down\" alt=\"Una captura de pantalla de FileZilla mostrando c&oacute;mo descargar tu plugin\" class=\"wp-image-26041\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/descargar-plugin-ftp-client.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/descargar-plugin-ftp-client.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/descargar-plugin-ftp-client.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/descargar-plugin-ftp-client.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/descargar-plugin-ftp-client.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/descargar-plugin-ftp-client.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><ol class=\"wp-block-list\" start=\"2\">\n<li>Ve al men&uacute; de <strong>plugins<\/strong> desde tu panel de control de WordPress. A continuaci&oacute;n, haz clic en <strong>A&ntilde;adir nuevo<\/strong>.<\/li>\n\n\n\n<li>Haz clic en <strong>Subir Plugin<\/strong> y selecciona el archivo ZIP de tu plugin.<\/li>\n<\/ol><figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/cargar-plugin-en-wordpress.png\/w=1024,h=1024,fit=scale-down\" alt=\"Una captura de pantalla del panel de control de WordPress que muestra d&oacute;nde subir tu plugin\" class=\"wp-image-26042\" width=\"840\" height=\"227\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/cargar-plugin-en-wordpress.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/cargar-plugin-en-wordpress.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/cargar-plugin-en-wordpress.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/cargar-plugin-en-wordpress.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/cargar-plugin-en-wordpress.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/cargar-plugin-en-wordpress.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 840px) 100vw, 840px\" \/><\/figure><ol class=\"wp-block-list\" start=\"4\">\n<li>Selecciona <strong>Instalar ahora<\/strong> para iniciar el proceso de instalaci&oacute;n.<\/li>\n<\/ol><p>\n\n\n\n        <div class=\"protip\">\n            <div class=\"protip__heading\">\n                <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M1.49234 23.5024C1.23229 23.5024 0.972242 23.4024 0.782206 23.2123C0.562165 22.9923 0.452144 22.6822 0.502153 22.3722C0.562165 21.9221 1.14227 17.9113 3.00262 16.351C3.63274 15.8209 4.43289 15.5509 5.26305 15.5609C6.09321 15.5909 6.87335 15.9109 7.47347 16.4911C8.6937 17.6913 8.76371 19.6717 7.6435 20.9919C6.0832 22.8523 2.08245 23.4324 1.63237 23.4924C1.59236 23.4924 1.54235 23.4924 1.50234 23.4924L1.49234 23.5024ZM5.16303 17.5613C4.84297 17.5613 4.53291 17.6713 4.29287 17.8813C3.60274 18.4614 3.07264 19.9317 2.75258 21.242C4.06282 20.9219 5.5331 20.3918 6.11321 19.7017C6.55329 19.1716 6.54329 18.3814 6.0832 17.9213C5.85316 17.7013 5.5431 17.5713 5.20304 17.5613C5.19304 17.5613 5.17303 17.5613 5.16303 17.5613ZM11.7243 21.8821C11.4942 21.8821 11.2642 21.8021 11.0841 21.652C10.8541 21.462 10.7241 21.1819 10.7241 20.8819V15.9109L8.08358 13.2705H3.11264C2.81259 13.2705 2.53254 13.1404 2.3425 12.9104C2.15246 12.6803 2.07245 12.3803 2.12246 12.0902C2.19247 11.7102 2.84259 8.36953 4.70294 7.12929C6.33325 6.04909 8.96375 6.49918 10.244 6.80923C11.5442 4.96889 13.2546 3.4286 15.2349 2.33839C17.4553 1.11816 19.9858 0.518051 22.4963 0.498047C23.0464 0.498047 23.4865 0.948132 23.4865 1.49824C23.4865 5.0389 22.3763 9.97983 17.1753 13.7605C17.4853 15.0408 17.9354 17.6613 16.8552 19.2816C15.615 21.1419 12.2744 21.7921 11.8943 21.8621C11.8343 21.8721 11.7743 21.8821 11.7143 21.8821H11.7243ZM12.7245 16.181V19.6016C13.7146 19.2916 14.7948 18.7915 15.2049 18.1814C15.675 17.4812 15.605 16.091 15.385 14.9008C14.5248 15.3808 13.6346 15.8109 12.7245 16.181ZM9.66388 12.0302L11.9643 14.3307C13.1845 13.8306 14.3648 13.2204 15.485 12.5103C19.9358 9.51974 21.2361 5.60901 21.4561 2.53843C19.6157 2.67846 17.8254 3.20856 16.2051 4.09872C14.2847 5.14892 12.6544 6.68921 11.4942 8.54956C10.7841 9.65977 10.174 10.82 9.66388 12.0302ZM4.39289 11.2701H7.81353C8.1936 10.3599 8.63368 9.46974 9.11377 8.60957C7.92355 8.38953 6.51329 8.31952 5.81315 8.78961C5.19304 9.19968 4.70294 10.3099 4.39289 11.2701Z\" fill=\"#673DE6\"\/>\n                <\/svg>\n                <p class=\"protip__title\">\n                    Lecturas recomendadas                <\/p>\n            <\/div>\n            <p class=\"protip__content\"> <br>&iquest;Te preguntas en qu&eacute; idiomas est&aacute;n escritos los plugins de WordPress? Aprende m&aacute;s en las siguientes gu&iacute;as:<br><a href=\"\/es\/tutoriales\/que-es-html\/\">&iquest;Qu&eacute; es HTML?<\/a><br><a href=\"\/es\/tutoriales\/que-es-css\/\">&iquest;Qu&eacute; es CSS?<\/a><br><a href=\"\/es\/tutoriales\/que-es-javascript-introduccion-basica\/\">&iquest;Qu&eacute; es JavaScript?<\/a> <\/p>\n                    <\/div>\n        \n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-grandes-normas-y-practicas-al-crear-plugins-personalizados\">Grandes normas y pr&aacute;cticas al crear plugins personalizados<\/h2><p>A medida que las necesidades de tu sitio evolucionen continuamente, tendr&aacute;s que revisar el c&oacute;digo del plugin para implementar actualizaciones y parches de seguridad.<\/p><p>Teniendo esto en cuenta, sigue las mejores pr&aacute;cticas para el desarrollo de plugins desde el principio. Si lo haces, todo el proceso ser&aacute; m&aacute;s f&aacute;cil para ti y para los desarrolladores web con los que puedas trabajar en el futuro.<\/p><p>Adem&aacute;s, consulta los <a href=\"\/es\/tutoriales\/mejores-plugins-wordpress\/\">mejores ejemplos de plugins de WordPress<\/a> para inspirarte. F&iacute;jate en su c&oacute;digo fuente, en c&oacute;mo organizan sus carpetas y en otras pr&aacute;cticas que debes aplicar al crear plugins de WordPress.<\/p><p>Aqu&iacute; tienes algunas de las mejores pr&aacute;cticas de codificaci&oacute;n y desarrollo de plugins para ayudarte en la creaci&oacute;n de tu primer plugin de WordPress:<\/p><ul class=\"wp-block-list\">\n<li><strong>Desarrolla y prueba los plugins de WP en un entorno de staging.<\/strong> De este modo, no habr&aacute; riesgo de romper el sitio si un plugin tiene un c&oacute;digo defectuoso.<\/li>\n\n\n\n<li><strong>Construye una estructura de carpetas l&oacute;gica. <\/strong>Crea sub carpetas para cada funcionalidad y divide el c&oacute;digo en archivos separados seg&uacute;n su finalidad o tipo de lenguaje para evitar el desorden.<\/li>\n\n\n\n<li><strong>Nombra cada archivo, carpeta y elemento con precauci&oacute;n.<\/strong> Utiliza prefijos &uacute;nicos, para que no choquen con los nombres de los archivos de otros plugins o del n&uacute;cleo de WordPress.<\/li>\n\n\n\n<li><strong>A&ntilde;ade comentarios para etiquetar cada funci&oacute;n.<\/strong> Hacerlo te permite a ti y a otros desarrolladores entender tu c&oacute;digo al actualizarlo o depurarlo.<\/li>\n\n\n\n<li><strong>Crea documentaci&oacute;n.<\/strong> Esta pr&aacute;ctica es especialmente beneficiosa si creas plugins con funcionalidades complejas para un gran n&uacute;mero de usuarios.<\/li>\n\n\n\n<li><strong>Utiliza un software de control de versiones para hacer un seguimiento de los cambios realizados en tu c&oacute;digo. <\/strong>Saber qui&eacute;n ha a&ntilde;adido algo al c&oacute;digo, ayudar&aacute; a evitar choques entre actualizaciones y a reducir el n&uacute;mero de errores.<\/li>\n\n\n\n<li><strong>Consulta el <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/best-practices\/coding-standards\/\" target=\"_blank\" rel=\"noreferrer noopener\">Codex de WordPress<\/a> para conocer las normas de codificaci&oacute;n espec&iacute;ficas del idioma.<\/strong> Aseg&uacute;rate de cumplirlas cuando colabores en un proyecto.<\/li>\n\n\n\n<li><strong>Activa <a href=\"\/es\/tutoriales\/wordpress-debug\/\">WP_DEBUG<\/a> o utiliza una herramienta de depuraci&oacute;n cuando desarrolles plugins.<\/strong> Hacerlo facilitar&aacute; la localizaci&oacute;n de errores, acelerando el proceso general de construcci&oacute;n de plugins.<\/li>\n<\/ul><h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusi&oacute;n<\/h2><p>Desarrollar un plugin personalizado es una forma de a&ntilde;adir funcionalidad a un sitio de WordPress que los plugins disponibles actualmente no ofrecen. Puede ser un plugin sencillo que implemente peque&ntilde;as alteraciones o uno complejo que modifique todo el sitio.<\/p><p>Para recapitular, estos son los pasos para crear un plugin de WordPress desde cero:<\/p><ol class=\"wp-block-list\">\n<li>Crear una carpeta para almacenar los archivos del plugin.<\/li>\n\n\n\n<li>Crear el archivo principal de tu plugin.<\/li>\n\n\n\n<li>A&ntilde;adir c&oacute;digo a varios archivos para las funciones del plugin.<\/li>\n\n\n\n<li>Construir la p&aacute;gina de administraci&oacute;n del plugin.<\/li>\n<\/ol><p>Como con cualquier otra habilidad, se necesita tiempo para ser bueno en la creaci&oacute;n de plugins de WordPress. Con suficiente pr&aacute;ctica, podr&aacute;s crear plugins y ponerlos a disposici&oacute;n para su descarga en el directorio de plugins de WordPress o incluso venderlos en alguno de los marketplaces.<\/p><p>Esperamos que este art&iacute;culo te haya ense&ntilde;ado a crear un plugin para WordPress. Si tienes alguna pregunta u observaci&oacute;n, no dudes en dejar un comentario.<\/p><h2 class=\"wp-block-heading\" id=\"h-como-crear-un-plugin-para-wordpress-faq\">C&oacute;mo crear un plugin para WordPress &ndash; FAQ<\/h2><div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-69447752c43ee\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">&iquest;Puedes ganar dinero haciendo plugins para WordPress?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>S&iacute;, puedes vender plugins a trav&eacute;s de tu propio sitio web o en un marketplace.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-69447752c43f0\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">&iquest;Qui&eacute;n puede crear un plugin de WordPress?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Cualquiera que sepa codificar puede crear un plugin para WordPress. Puedes usar un tema para crear un plugin, si sabes PHP b&aacute;sico.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-69447752c43f1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">&iquest;Los plugins de WordPress est&aacute;n escritos en PHP?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Los plugins de WordPress suelen estar escritos en PHP, pero tambi&eacute;n necesitar&aacute;s saber algo de HTML y CSS b&aacute;sicos para gestionar correctamente la salida del plugin.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>WordPress dispone de una enorme colecci&oacute;n de plugins que introducen funcionalidades personalizadas. Es m&aacute;s, los plugins pueden a&ntilde;adir nuevas funciones a tu sitio web de WordPress sin tener que cambiar el c&oacute;digo principal. Aunque hay toneladas de plugins gratuitos y premium entre los que elegir, puede haber ocasiones en las que necesites funciones espec&iacute;ficas de [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/es\/tutoriales\/tutorial-wordpress-plugins-crear-plugin-wordpress\/\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":138,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"C\u00f3mo crear un plugin de WordPress - Gu\u00eda paso a paso","rank_math_description":"Para muchos desarrolladores es esencial dejar de lado las limitaciones de WordPress y crear sus propios plugins.","rank_math_focus_keyword":"crear plugin wordpress","footnotes":""},"categories":[4747,14330],"tags":[5070,6407],"class_list":["post-5450","post","type-post","status-publish","format-standard","hentry","category-wordpress","category-plugins","tag-plugins-wordpress","tag-tutoriales-wordpress"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/how-to-create-wordpress-plugin\/","default":1},{"locale":"pt-BR","link":"https:\/\/www.hostinger.com\/br\/tutoriais\/criar-plugin-wordpress\/","default":0},{"locale":"fr-FR","link":"https:\/\/www.hostinger.com\/fr\/tutoriels\/creer-un-plugin-wordpress\/","default":0},{"locale":"es-ES","link":"https:\/\/www.hostinger.com\/es\/tutoriales\/tutorial-wordpress-plugins-crear-plugin-wordpress\/","default":0},{"locale":"id-ID","link":"https:\/\/www.hostinger.com\/id\/tutorial\/membuat-plugin-wordpress\/","default":0},{"locale":"de-DE","link":"https:\/\/www.hostinger.com\/de\/tutorials\/wordpress-plugin-erstellen\/","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/how-to-create-wordpress-plugin\/","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/how-to-create-wordpress-plugin\/","default":0},{"locale":"en-GB","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/how-to-create-wordpress-plugin\/","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/how-to-create-wordpress-plugin\/","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/how-to-create-wordpress-plugin\/","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/how-to-create-wordpress-plugin\/","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/how-to-create-wordpress-plugin\/","default":0},{"locale":"es-AR","link":"https:\/\/www.hostinger.com\/ar\/tutoriales\/tutorial-wordpress-plugins-crear-plugin-wordpress\/","default":0},{"locale":"es-MX","link":"https:\/\/www.hostinger.com\/mx\/tutoriales\/tutorial-wordpress-plugins-crear-plugin-wordpress\/","default":0},{"locale":"es-CO","link":"https:\/\/www.hostinger.com\/co\/tutoriales\/tutorial-wordpress-plugins-crear-plugin-wordpress\/","default":0},{"locale":"pt-PT","link":"https:\/\/www.hostinger.com\/pt\/tutoriais\/criar-plugin-wordpress\/","default":0}],"acf":[],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts\/5450","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/users\/138"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/comments?post=5450"}],"version-history":[{"count":30,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts\/5450\/revisions"}],"predecessor-version":[{"id":50037,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts\/5450\/revisions\/50037"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/media?parent=5450"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/categories?post=5450"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/tags?post=5450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}