{"id":2036,"date":"2023-05-29T10:00:00","date_gmt":"2023-05-29T15:00:00","guid":{"rendered":"http:\/\/racmanuel.dev\/?p=2036"},"modified":"2023-05-27T18:50:10","modified_gmt":"2023-05-27T23:50:10","slug":"hooks-esenciales-para-desarrolladores-de-wordpress","status":"publish","type":"post","link":"https:\/\/racmanuel.dev\/en\/hooks-esenciales-para-desarrolladores-de-wordpress\/","title":{"rendered":"Essential Hooks for WordPress Developers"},"content":{"rendered":"<p class=\"wp-block-paragraph\">WordPress es una plataforma de gesti\u00f3n de contenidos muy flexible, lo que la hace ideal para desarrolladores web. Una de las caracter\u00edsticas m\u00e1s \u00fatiles de WordPress son los hooks, que permiten a los desarrolladores personalizar y extender el comportamiento de WordPress y los plugins. En este art\u00edculo, repasaremos algunos de los hooks m\u00e1s esenciales de WordPress que todo desarrollador deber\u00eda conocer.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"684\" src=\"http:\/\/racmanuel.dev\/wp-content\/uploads\/pexels-photo-1181244-1-1024x684.jpeg\" alt=\"person holding smartphone while using laptop\" class=\"wp-image-2218\" title=\"\" srcset=\"https:\/\/racmanuel.dev\/wp-content\/uploads\/pexels-photo-1181244-1-1024x684.jpeg 1024w, https:\/\/racmanuel.dev\/wp-content\/uploads\/pexels-photo-1181244-1-600x401.jpeg 600w, https:\/\/racmanuel.dev\/wp-content\/uploads\/pexels-photo-1181244-1-300x200.jpeg 300w, https:\/\/racmanuel.dev\/wp-content\/uploads\/pexels-photo-1181244-1-768x513.jpeg 768w, https:\/\/racmanuel.dev\/wp-content\/uploads\/pexels-photo-1181244-1-1536x1025.jpeg 1536w, https:\/\/racmanuel.dev\/wp-content\/uploads\/pexels-photo-1181244-1.jpeg 1880w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Photo by Christina Morillo on <a href=\"https:\/\/www.pexels.com\/photo\/person-holding-smartphone-while-using-laptop-1181244\/\" rel=\"nofollow noopener\" target=\"_blank\">Pexels.com<\/a><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"1-init\">1.&#8217;init&#8217;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El hook &#8216;<code>init'<\/code> se dispara al inicio del proceso de carga de WordPress. Este hook es \u00fatil para registrar Custom Post Types y Taxonom\u00edas Personalizadas, agregar opciones de men\u00fa, o incluso para cargar archivos CSS y JavaScript personalizados. Aqu\u00ed hay un ejemplo de c\u00f3mo utilizar este hook:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">add_action('init', 'mi_funcion_init');\nfunction mi_funcion_init() {\n    \/\/ Registrar Custom Post Types y Taxonom\u00edas Personalizadas\n    \/\/ Agregar opciones de men\u00fa\n    \/\/ Cargar archivos CSS y JavaScript personalizados\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"1-init\">2.&#8217;wp_enqueue_scripts&#8217;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El hook &#8216;<code>wp_enqueue_scripts<\/code>&#8216; se utiliza para cargar archivos CSS y JavaScript en el front-end de WordPress. Es importante tener en cuenta que los archivos no se cargan directamente, sino que se agregan a una cola de carga y se cargan en el orden correcto. Aqu\u00ed hay un ejemplo de c\u00f3mo utilizar este hook:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">add_action('wp_enqueue_scripts', 'mi_funcion_wp_enqueue_scripts');\nfunction mi_funcion_wp_enqueue_scripts() {\n    \/\/ Cargar archivos CSS y JavaScript personalizados\n    wp_enqueue_style('mi-estilo', get_template_directory_uri() . '\/css\/mi-estilo.css');\n    wp_enqueue_script('mi-script', get_template_directory_uri() . '\/js\/mi-script.js');\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"1-init\">3.&#8217;wp_head&#8217; y &#8216;wp_footer&#8217;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Los hooks &#8216;<code>wp_head<\/code>&#8216; y &#8216;<code>wp_footer'<\/code> se utilizan para agregar contenido al <code>&lt;head&gt;<\/code> y <code>&lt;footer&gt;<\/code> de las p\u00e1ginas de WordPress, respectivamente. Esto es \u00fatil para agregar c\u00f3digo de seguimiento de Google Analytics, etiquetas OpenGraph para Facebook y Twitter, y otros elementos que deben agregarse en estas secciones de la p\u00e1gina. Aqu\u00ed hay un ejemplo de c\u00f3mo utilizar estos hooks:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">add_action('wp_head', 'mi_funcion_wp_head');\nfunction mi_funcion_wp_head() {\n    \/\/ Agregar c\u00f3digo de seguimiento de Google Analytics\n}\n\nadd_action('wp_footer', 'mi_funcion_wp_footer');\nfunction mi_funcion_wp_footer() {\n    \/\/ Agregar etiquetas OpenGraph para Facebook y Twitter\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"4-the-content\">4.&#8217;the_content&#8217;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El hook &#8216;<code>the_content'<\/code> se utiliza para manipular el contenido del art\u00edculo o p\u00e1gina en WordPress. Este hook es \u00fatil para agregar contenido adicional al final del art\u00edculo, como botones de compartir en redes sociales, llamados a la acci\u00f3n, etc. Aqu\u00ed hay un ejemplo de c\u00f3mo utilizar este hook:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">add_filter(&#039;the_content&#039;, &#039;mi_funcion_the_content&#039;);\nfunction mi_funcion_the_content($content) {\n    \/\/ Agregar contenido adicional al final del art&iacute;culo\n    $content .= &#039;&lt;div class=&quot;compartir&quot;&gt;&#039;;\n    $content .= &#039;&lt;a href=&quot;#&quot;&gt;Compartir en Facebook&lt;\/a&gt;&#039;;\n    $content .= &#039;&lt;a href=&quot;#&quot;&gt;Compartir en Twitter&lt;\/a&gt;&#039;;\n    $content .= &#039;&lt;\/div&gt;&#039;;\n    return $content;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"4-the-content\">5.&#8217;admin_menu&#8217;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El hook <code>admin_menu<\/code> se utiliza para agregar opciones de men\u00fa en el panel de administraci\u00f3n de WordPress. Es \u00fatil para agregar opciones de men\u00fa personalizadas, como opciones de configuraci\u00f3n o herramientas para la administraci\u00f3n de contenido. Aqu\u00ed hay un ejemplo de c\u00f3mo utilizar este hook:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">add_action('admin_menu', 'mi_funcion_admin_menu');\nfunction mi_funcion_admin_menu() {\n    \/\/ Agregar opciones de men\u00fa personalizadas\n    add_menu_page(\n        'Mi Opci\u00f3n de Men\u00fa',\n        'Mi Opci\u00f3n de Men\u00fa',\n        'manage_options',\n        'mi-opcion-de-menu',\n        'mi_funcion_pagina_opcion_menu',\n        'dashicons-admin-generic'\n    );\n}\n\nfunction mi_funcion_pagina_opcion_menu() {\n    \/\/ Contenido de la p\u00e1gina de opciones de men\u00fa personalizadas\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"4-the-content\">6.&#8217;wp_login&#8217;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El hook <code>'wp_login'<\/code> se utiliza para realizar acciones cuando un usuario inicia sesi\u00f3n en WordPress. Es \u00fatil para realizar tareas como enviar un correo electr\u00f3nico de bienvenida o redirigir a los usuarios a una p\u00e1gina espec\u00edfica despu\u00e9s de iniciar sesi\u00f3n. Aqu\u00ed hay un ejemplo de c\u00f3mo utilizar este hook:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">add_action('wp_login', 'mi_funcion_wp_login', 10, 2);\nfunction mi_funcion_wp_login($user_login, $user) {\n    \/\/ Enviar correo electr\u00f3nico de bienvenida\n    wp_mail($user-&gt;user_email, 'Bienvenido a mi sitio web', 'Gracias por iniciar sesi\u00f3n en mi sitio web.');\n\n    \/\/ Redirigir a los usuarios a una p\u00e1gina espec\u00edfica despu\u00e9s de iniciar sesi\u00f3n\n    wp_redirect('https:\/\/mi-sitio-web.com\/mi-pagina-de-bienvenida\/');\n    exit;\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusi\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En este art\u00edculo, hemos repasado algunos de los mejores hooks de WordPress que todo desarrollador deber\u00eda conocer. Con estos hooks, puede personalizar y extender WordPress y los plugins para crear aplicaciones web personalizadas. Esperamos que esta gu\u00eda le haya sido \u00fatil y le haya brindado informaci\u00f3n valiosa sobre c\u00f3mo utilizar los hooks de WordPress en su pr\u00f3ximo proyecto.<\/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>Una de las caracter\u00edsticas m\u00e1s \u00fatiles de WordPress son los hooks, que permiten a los desarrolladores personalizar y extender el comportamiento de WordPress y los plugins. En este art\u00edculo, veremos los mejores hooks de WordPress que deber\u00edas conocer.<\/p>","protected":false},"author":1,"featured_media":2218,"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":[53],"tags":[42],"niveles":[51],"class_list":["post-2036","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tops","tag-wordpress","niveles-basico-2"],"blocksy_meta":[],"acf":[],"_links":{"self":[{"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/posts\/2036","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=2036"}],"version-history":[{"count":7,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/posts\/2036\/revisions"}],"predecessor-version":[{"id":2219,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/posts\/2036\/revisions\/2219"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/media\/2218"}],"wp:attachment":[{"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/media?parent=2036"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/categories?post=2036"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/tags?post=2036"},{"taxonomy":"niveles","embeddable":true,"href":"https:\/\/racmanuel.dev\/en\/wp-json\/wp\/v2\/niveles?post=2036"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}