{"id":2223,"date":"2023-06-02T10:00:00","date_gmt":"2023-06-02T15:00:00","guid":{"rendered":"http:\/\/racmanuel.dev\/?p=2223"},"modified":"2023-05-27T19:28:04","modified_gmt":"2023-05-28T00:28:04","slug":"crea-un-plugin-de-wordpress-con-vue-js-en-la-parte-de-administracion","status":"publish","type":"post","link":"https:\/\/racmanuel.dev\/en\/crea-un-plugin-de-wordpress-con-vue-js-en-la-parte-de-administracion\/","title":{"rendered":"Create a WordPress plugin with Vue.js in the admin area"},"content":{"rendered":"<h2 class=\"wp-block-heading\" id=\"introduccion\">Introducci\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En este tutorial, aprender\u00e1s c\u00f3mo desarrollar un plugin de WordPress utilizando Vue.js en la parte de administraci\u00f3n. Combinar el poder de WordPress y Vue.js te permitir\u00e1 crear interfaces de usuario interactivas y din\u00e1micas para tu plugin. El resultado final ser\u00e1 una p\u00e1gina de administraci\u00f3n que muestra un mensaje generado por Vue.js.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"678\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/pexels-photo-574080-1024x678.jpeg\" alt=\"person wearing black watch holding macbook pro\" class=\"wp-image-2226\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/pexels-photo-574080-1024x678.jpeg 1024w, https:\/\/racmanuel.dev\/wp-content\/uploads\/pexels-photo-574080-600x397.jpeg 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/pexels-photo-574080-300x199.jpeg 300w, https:\/\/racmanuel.dev\/wp-content\/uploads\/pexels-photo-574080-768x509.jpeg 768w, https:\/\/racmanuel.dev\/wp-content\/uploads\/pexels-photo-574080-1536x1017.jpeg 1536w, https:\/\/racmanuel.dev\/wp-content\/uploads\/pexels-photo-574080.jpeg 1880w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Photo by Lukas on <a href=\"https:\/\/www.pexels.com\/photo\/person-wearing-black-watch-holding-macbook-pro-574080\/\" rel=\"nofollow noopener\" target=\"_blank\">Pexels.com<\/a><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"paso-1-configurar-el-entorno\">Paso 1: Configurar el entorno:<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Aseg\u00farate de tener una instalaci\u00f3n de WordPress en tu servidor local o remoto.<\/li>\n\n\n\n<li>Crea una carpeta para tu plugin dentro del directorio &#8220;wp-content\/plugins&#8221; de tu instalaci\u00f3n de WordPress.<\/li>\n\n\n\n<li>Dentro de la carpeta de tu plugin, crea un archivo llamado &#8220;index.php&#8221;.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"paso-2-anadir-el-codigo-del-plugin\">Paso 2: A\u00f1adir el c\u00f3digo del plugin:<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Abre el archivo &#8220;index.php&#8221; y a\u00f1ade el siguiente c\u00f3digo:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php\r\n\/**\r\n * Plugin Name: Mi primer plugin con VueJS\n * Description: A\u00f1ade una p\u00e1gina de administraci\u00f3n de WordPress que muestra un mensaje usando Vue JS.\r\n * Version: 1.0.0\r\n *\/\r\n\r\n\/\/ Enqueue scripts and styles\r\nfunction wp_vue_admin_enqueue_scripts() {\r\n    wp_enqueue_script( 'vue', 'https:\/\/cdn.jsdelivr.net\/npm\/vue@2.6.14\/dist\/vue.js', array(), '2.6.14', true );\r\n    wp_enqueue_script( 'vue-plugin', plugins_url( '\/assets\/js\/plugin.js', __FILE__ ), array( 'vue' ), '1.0.0', true );\r\n}\r\nadd_action( 'admin_enqueue_scripts', 'wp_vue_admin_enqueue_scripts' );\r\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Guarda el archivo.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"paso-3-crear-el-archivo-del-script-personalizado\">Paso 3: Crear el archivo del script personalizado:<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Crea una carpeta llamada &#8220;assets&#8221; dentro de la carpeta de tu plugin.<\/li>\n\n\n\n<li>Dentro de la carpeta &#8220;assets&#8221;, crea una carpeta llamada &#8220;js&#8221;.<\/li>\n\n\n\n<li>Dentro de la carpeta &#8220;js&#8221;, crea un archivo llamado &#8220;plugin.js&#8221;.<\/li>\n\n\n\n<li>Abre el archivo &#8220;plugin.js&#8221; y a\u00f1ade el siguiente c\u00f3digo:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">document.addEventListener('DOMContentLoaded', function() {\r\n    new Vue({\r\n        el: '#your-plugin-admin',\r\n        data: {\r\n            message: '\u00a1Hola desde Vue.js!'\r\n        }\r\n    });\r\n});\r<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>Guarda el archivo.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"paso-4-crear-la-pagina-de-administracion\">Paso 4: Crear la p\u00e1gina de administraci\u00f3n:<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Abre el archivo &#8220;index.php&#8221; nuevamente y a\u00f1ade el siguiente c\u00f3digo:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">function wp_vue_admin_page() {\r\n    echo &#039;&lt;div id=&quot;your-plugin-admin&quot;&gt;&#039;;\r\n    echo &#039;&lt;h1&gt;{{ message }}&lt;\/h1&gt;&#039;;\r\n    echo &#039;&lt;\/div&gt;&#039;;\r\n}\r\n\r\nfunction wp_vue_admin_menu() {\r\n    add_menu_page(\r\n        &#039;Tu Plugin de WordPress&#039;,\r\n        &#039;Tu Plugin&#039;,\r\n        &#039;manage_options&#039;,\r\n        &#039;your-plugin-admin&#039;,\r\n        &#039;wp_vue_admin_page&#039;,\r\n        &#039;dashicons-admin-generic&#039;,\r\n        99\r\n    );\r\n}\r\nadd_action( &#039;admin_menu&#039;, &#039;wp_vue_admin_menu&#039; );\r<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Guarda el archivo.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"paso-5-activar-el-plugin\">Paso 5: Activar el plugin:<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Inicia sesi\u00f3n en tu panel de administraci\u00f3n de WordPress.<\/li>\n\n\n\n<li>Navega hasta la secci\u00f3n &#8220;Plugins&#8221;.<\/li>\n\n\n\n<li>Busca el nombre de tu plugin en la lista y haz clic en &#8220;Activar&#8221;.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"paso-6-verificar-el-resultado\">Paso 6: Verificar el resultado:<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ve a la secci\u00f3n &#8220;Tu Plugin&#8221; en el panel de administraci\u00f3n.<\/li>\n\n\n\n<li>Deber\u00edas ver un mensaje que dice &#8220;\u00a1Hola desde Vue.js!&#8221; generado por Vue.js.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusion: <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En este tutorial, has aprendido c\u00f3mo desarrollar un plugin de WordPress utilizando Vue.js en la parte de administraci\u00f3n. Ahora puedes aprovechar las capacidades de Vue.js para crear interfaces de usuario interactivas y din\u00e1micas en tu plugin de WordPress. \u00a1Explora m\u00e1s sobre Vue.js y personaliza tu plugin seg\u00fan tus necesidades!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recuerda que este tutorial proporciona una introducci\u00f3n b\u00e1sica para comenzar con Vue.js en la parte de administraci\u00f3n de WordPress. A medida que te familiarices m\u00e1s con Vue.js, podr\u00e1s implementar caracter\u00edsticas m\u00e1s avanzadas y ampliar la funcionalidad de tu plugin. \u00a1Disfruta programando con Vue.js y WordPress!<\/p>\n\n\n<style><\/style><style><\/style>\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<h4 class=\"wp-block-heading has-large-font-size\" id=\"necesitas-ayuda-con-un-proyecto-web\">Do you need help with a web project?<\/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<div class=\"wp-block-groundhogg-forms\">\n\t<div class=\"gh-form-wrapper\"><form method=\"post\" class=\"gh-form gh-form-v2\" target=\"_parent\" enctype=\"multipart\/form-data\" name=\"Formulario de Contacto\" id=\"gh-form-24\" data-id=\"24\" action=\"\"><div class=\"gh-form-fields\"><div class=\"gh-form-column col-1-of-2\"><label for=\"first_name\">Name <span class=\"required\">*<\/span><\/label><div class=\"gh-form-input-field\"><input type=\"text\" name=\"first_name\" id=\"first_name\" class=\"gh-input gh-first-name\" value=\"\" required><\/div><\/div><div class=\"gh-form-column col-1-of-2\"><label for=\"last_name\">Last name(s) <span class=\"required\">*<\/span><\/label><div class=\"gh-form-input-field\"><input type=\"text\" name=\"last_name\" id=\"last_name\" class=\"gh-input gh-last-name\" value=\"\" required><\/div><\/div><div class=\"gh-form-column col-1-of-1\"><label for=\"email\">Email <span class=\"required\">*<\/span><\/label><div class=\"gh-form-input-field\"><input type=\"email\" name=\"email\" id=\"email\" class=\"gh-input gh-email\" value=\"\" required><\/div><\/div><div class=\"gh-form-column col-1-of-1\"><label for=\"primary_phone\">Phone or WhatsApp <span class=\"required\">*<\/span><\/label><div class=\"gh-form-input-field\"><input type=\"tel\" name=\"primary_phone\" id=\"primary_phone\" class=\"gh-input\" value=\"\" required><\/div><\/div><div class=\"gh-form-column col-1-of-1\"><label for=\"nombre_de_tu_negocio_o_empresa\">Name of your Business or Company<\/label><div class=\"gh-form-input-field\"><input type=\"text\" name=\"nombre_de_tu_negocio_o_empresa\" id=\"nombre_de_tu_negocio_o_empresa\" class=\"gh-input\" value=\"\"\/><\/div><\/div><div class=\"gh-form-column col-1-of-1\"><label for=\"link_de_tu_pagina_web\">Link to your website<\/label><div class=\"gh-form-input-field\"><input type=\"url\" name=\"link_de_tu_pagina_web\" id=\"link_de_tu_pagina_web\" class=\"gh-input\" value=\"\" placeholder=\"If your business or company has a website, enter the link here.\"\/><\/div><\/div><div class=\"gh-form-column col-1-of-1\"><label for=\"question_type\">What kind of question do you have? <span class=\"required\">*<\/span><\/label><div class=\"gh-form-input-field\"><select name=\"question_type\" id=\"question_type\" class=\"gh-input\" required><option value=\"Cotizaci\u00f3n\">Price<\/option><option value=\"General\">General<\/option><option value=\"Soporte\">Medium<\/option><\/select><\/div><\/div><div class=\"gh-form-column col-1-of-1\"><label for=\"message\">Ask <span class=\"required\">*<\/span><\/label><div class=\"gh-form-input-field\"><textarea name=\"message\" id=\"message\" class=\"gh-input\" rows=\"7\" placeholder=\"Your question or doubt...\" type=\"text\" required><\/textarea><\/div><\/div><div class=\"gh-form-column col-1-of-1\"><div class=\"consent gh-gdpr\" id=\"gdpr_consent\"><div ><label class=\"gh-checkbox-label\"><input type=\"checkbox\" name=\"data_processing_consent\" id=\"data-processing-consent\" class=\"\" value=\"yes\" required><span class=\"checkbox-label\">I agree to racmanuel.dev&#8217;s storage and processing of my personal data. <span class=\"required\">*<\/span><\/span><\/label><\/div><div ><label class=\"gh-checkbox-label\"><input type=\"checkbox\" name=\"marketing_consent\" id=\"marketing-consent\" class=\"\" value=\"yes\"\/><span class=\"checkbox-label\">I agree to receive marketing offers and updates from racmanuel.dev.<\/span><\/label><\/div><\/div><\/div><div class=\"gh-form-column col-1-of-3\"><button type=\"submit\" class=\"gh-submit gh-button primary\" value=\"\">Get in touch!<\/button><\/div><\/div><input type=\"hidden\" name=\"trp-form-language\" value=\"en\"\/><\/form><\/div><\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Combinar el poder de WordPress y Vue.js te permitir\u00e1 crear interfaces de usuario interactivas y din\u00e1micas para tu plugin. El resultado final ser\u00e1 una p\u00e1gina de administraci\u00f3n que muestra un mensaje generado por Vue.js.<\/p>","protected":false},"author":1,"featured_media":2226,"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":[48],"tags":[42],"niveles":[38],"class_list":["post-2223","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriales","tag-wordpress","niveles-intermedio"],"blocksy_meta":[],"acf":[],"_links":{"self":[{"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/posts\/2223","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=2223"}],"version-history":[{"count":3,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/posts\/2223\/revisions"}],"predecessor-version":[{"id":2227,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/posts\/2223\/revisions\/2227"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/media\/2226"}],"wp:attachment":[{"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/media?parent=2223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/categories?post=2223"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/tags?post=2223"},{"taxonomy":"niveles","embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/niveles?post=2223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}