{"id":233748,"date":"2023-02-22T18:38:00","date_gmt":"2023-02-22T15:38:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233748"},"modified":"2022-11-11T12:11:02","modified_gmt":"2022-11-11T09:11:02","slug":"todo-sobre-agregar-estilos-y-scripts-en-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/todo-sobre-agregar-estilos-y-scripts-en-wordpress\/","title":{"rendered":"Todo sobre Agregar Estilos y Scripts en WordPress"},"content":{"rendered":"\n<p>WordPress ofrece m\u00faltiples m\u00e9todos para agregar estilos y scripts para la interfaz y el administrador, tanto para agregar archivos como para generar directamente variables\/salida. Esta publicaci\u00f3n entra en detalles con ejemplos de c\u00f3digo de c\u00f3mo agregar scripts y estilos a WordPress de la manera correcta.<\/p>\n<p>Los scripts y estilos se pueden registrar y poner en cola definiendo identificadores \u00fanicos (ID similares a slug), lo que hace posible que WordPress elimine duplicados, como m\u00faltiples bibliotecas jQuery, y maneje dependencias (qu\u00e9 estilo o script cargar antes de esto y aquello) .<\/p>\n<p>Si no hay una necesidad espec\u00edfica de registrar estilos o scripts, puede ponerlos en cola de inmediato, omitiendo el registro. Tambi\u00e9n es posible anular el registro o eliminar estilos y scripts (<code>wp_dequeue_script<\/code>y <code>wp_dequeue_style<\/code>) consultando el identificador. Por lo general, ayuda agregar un n\u00famero m\u00e1s alto en la prioridad del gancho (haciendo que se ejecute despu\u00e9s del gancho donde se pusieron en cola los elementos).<\/p>\n<p>PD: La adici\u00f3n de estilos y secuencias de comandos a Gutenberg (tanto bloques de administraci\u00f3n como de frontend) se explica en mi publicaci\u00f3n <a href=\"http:\/\/localhost\/awhitepixel\/blog\/gutenberg-the-basics\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Gutenberg: conceptos b\u00e1sicos<\/a>.<\/p>\n<h2>Agregar scripts y estilos a la interfaz<\/h2>\n<p>Para agregar estilos y scripts solo a la interfaz, use el gancho <code>wp_enqueue_scripts<\/code>. A pesar del nombre del gancho, se usa tanto para scripts como para estilos. Aqu\u00ed hay un ejemplo de poner en cola una hoja de estilo y un archivo javascript en un tema:<\/p>\n<pre><code>add_action('wp_enqueue_scripts', function() {\n    \/\/ Styles\n    wp_enqueue_style('main-style', get_stylesheet_directory_uri().'\/style.css', [], '1.0');\n\u00a0\n    \/\/ Scripts\n    wp_enqueue_script('main-script', get_stylesheet_directory_uri().'\/assets\/js\/main.js', ['jquery'], '', true);\n});<\/code><\/pre>\n<p>El tercer argumento tanto para los estilos como para los scripts es una matriz con dependencias. Por ejemplo, para las secuencias de comandos, es posible que desee cargar la biblioteca jQuery antes de su archivo de secuencia de comandos. <strong>Nota<\/strong>: las instalaciones de WordPress vienen con un mont\u00f3n de bibliotecas de scripts comunes incluidas (por ejemplo, jQuery, jQuery UI, Backbone y Underscore). Siempre que agregue <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_script\/#default-scripts-included-and-registered-by-wordpress\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cualquiera de estos identificadores<\/a> como dependencia en su enqueue_script, WordPress los pondr\u00e1 en cola, por lo que no tiene que agregar sus propios archivos para estas bibliotecas.<\/p>\n<p>El quinto argumento para las secuencias de comandos es si la secuencia de comandos debe cargarse o no al final <code>&lt;body&gt;<\/code>(en el pie de p\u00e1gina), en lugar de dentro de la <code>&lt;head&gt;<\/code>etiqueta.<\/p>\n<p>Para usar en un complemento, debe usar otros m\u00e9todos para obtener la URL en un archivo local, por ejemplo <code>plugin_dir_url(__FILE__)<\/code>.<\/p>\n<h2>Agregar scripts y estilos al administrador<\/h2>\n<p>WordPress ofrece otro gancho, <code>admin_enqueue_scripts<\/code>, para agregar estilos y scripts solo al administrador. Utilice los mismos m\u00e9todos anteriores para registrar, poner en cola y localizar scripts y estilos:<\/p>\n<pre><code>add_action('admin_enqueue_scripts', function() {\n    global $pagenow, $post_type;\n    \/\/ Example: $hook == 'edit.php'\n    \/\/ Example: $post_type == 'post'\n    \/\/ wp_enqueue_style or wp_enqueue_script\n});<\/code><\/pre>\n<h2>Adici\u00f3n de scripts y estilos a la p\u00e1gina de inicio de sesi\u00f3n<\/h2>\n<p>Debido a que ninguno de los ganchos anteriores aparece en la pantalla de inicio de sesi\u00f3n del administrador, WordPress ofrece un gancho separado para este prop\u00f3sito, <code>login_enqueue_scripts<\/code>.<\/p>\n<pre><code>add_action('login_enqueue_scripts', function() {\n    \/\/ wp_enqueue_style or wp_enqueue_script\n});<\/code><\/pre>\n<h2>Salida de variables de Javascript<\/h2>\n<p>Para generar variables de Javascript (por ejemplo, obtener rutas, cadenas traducidas u otras variables), puede usar wp_localize_script. Esta funci\u00f3n requiere un identificador de secuencia de comandos en cola. El segundo par\u00e1metro ser\u00eda el nombre de la variable y el tercero su valor. El valor puede ser una matriz, as\u00ed :<\/p>\n<pre><code>add_action('wp_enqueue_scripts', function() {\n    \/\/ wp_enqueue_script('main-script');  \/\/ Must exist!\n    $variable_to_js = [\n        'ajax_url' =&gt; admin_url('admin-ajax.php')\n    ];\n    wp_localize_script('main-script', 'Theme_Variables', $variable_to_js);\n});<\/code><\/pre>\n<p>Dentro de su secuencia de comandos, tiene acceso a las variables pasadas, as\u00ed:<\/p>\n<pre><code>jQuery(document).ready(function($) { \n    console.log(Theme_Variables.ajax_url);\n});<\/code><\/pre>\n<p>En este enlace, puede acceder a variables globales <code>$pagenow<\/code>y <code>$post_type<\/code>especificar a\u00fan m\u00e1s d\u00f3nde desea poner en cola sus estilos y scripts.<\/p>\n<h2>Salida de estilos en l\u00ednea<\/h2>\n<p>Si necesita generar estilos en l\u00ednea, por ejemplo, para las variables de tema que configur\u00f3 en el Personalizador (por ejemplo, usando <code>get_theme_mod<\/code>), puede generarlos usando la <code>wp_add_inline_style<\/code>funci\u00f3n. Funciona de manera bastante similar a la salida de variables de Javascript, en las que debe proporcionar un identificador de estilo en cola:<\/p>\n<pre><code>add_action('wp_enqueue_scripts', function() {\n    \/\/ wp_enqueue_style('main-style');  \/\/ Must exist!\n\u00a0\n    $color = get_theme_mod('my-custom-color');  \/\/ e.g. #FF0000\n    $custom_css = \"\n        body {\n            background: {$color};\n        }\";\n        wp_add_inline_style('main-style', $custom_css);\n});<\/code><\/pre>\n<h2>Adici\u00f3n de etiquetas as\u00edncronas a scripts<\/h2>\n<p>Desafortunadamente, no hay una funci\u00f3n o filtro directo para agregar <code>async<\/code>a las etiquetas de su secuencia de comandos, pero podemos lograr esto manipulando la cadena que usa WordPress para generar las etiquetas de secuencia de comandos para todas las secuencias de comandos en cola, as\u00ed (recuerde especificar su secuencia de comandos por su identificador):<\/p>\n<pre><code>add_filter('script_loader_tag', function($tag, $handle, $src) {\n    if ('main-script' != $handle) {\n        return $tag;\n    }\n    return str_replace('&lt;script', '&lt;script async', $tag);\n}, 11, 3);<\/code><\/pre>\n<h2>Enlaces de documentaci\u00f3n \u00fatiles<\/h2>\n<ul>\n<li><a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/wp_enqueue_scripts\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_enqueue_scripts<\/a> (gancho)<\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/admin_enqueue_scripts\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">admin_enqueue_scripts<\/a> (gancho)<\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/login_enqueue_scripts\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">login_enqueue_scripts<\/a> (gancho)<\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_style\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_enqueue_style<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_dequeue_style\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_dequeue_style<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_script\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_enqueue_script<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_dequeue_script\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_dequeue_script<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_localize_script\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_localize_script<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_add_inline_style\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_add_inline_style<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Esta publicaci\u00f3n entra en detalles con ejemplos de c\u00f3digo de c\u00f3mo agregar scripts y estilos a WordPress de la manera correcta, tanto archivos como variables de salida.<\/p>\n","protected":false},"author":1,"featured_media":224083,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[924,892,892,716,716,831,1110,800,800,831,924,840,861,861],"tags":[1172],"class_list":["post-233748","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asignaturas","category-codigo","category-desarrollador","category-guia-para-principiantes","category-n-a","category-php-2","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233748","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=233748"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233748\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/224083"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=233748"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=233748"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=233748"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}