{"id":233812,"date":"2023-02-22T18:50:00","date_gmt":"2023-02-22T15:50:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233812"},"modified":"2022-11-11T12:34:13","modified_gmt":"2022-11-11T09:34:13","slug":"tudo-sobre-como-adicionar-estilos-e-scripts-no-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/tudo-sobre-como-adicionar-estilos-e-scripts-no-wordpress\/","title":{"rendered":"Tudo sobre como adicionar estilos e scripts no WordPress"},"content":{"rendered":"\n<p>O WordPress oferece v\u00e1rios m\u00e9todos para adicionar estilos e scripts para frontend e admin, tanto para adicionar arquivos quanto para gerar vari\u00e1veis\/sa\u00eddas diretas. Este post entra em detalhes com exemplos de c\u00f3digo de como adicionar scripts e estilos ao WordPress da maneira correta.<\/p>\n<p>Scripts e estilos podem ser registrados e enfileirados definindo identificadores exclusivos (IDs semelhantes a slugs), possibilitando que o WordPress elimine duplicatas, como v\u00e1rias bibliotecas jQuery, e lide com depend\u00eancias (qual estilo ou script carregar antes disso e daquilo) .<\/p>\n<p>Se n\u00e3o houver necessidade espec\u00edfica de registrar estilos ou scripts, voc\u00ea pode simplesmente enfileirar-los imediatamente, pulando o registro. Tamb\u00e9m \u00e9 poss\u00edvel cancelar o registro ou desenfileirar estilos e scripts (<code>wp_dequeue_script<\/code>e <code>wp_dequeue_style<\/code>) consultando o identificador. Geralmente ajuda a adicionar um n\u00famero maior na prioridade do gancho (fazendo com que ele seja executado ap\u00f3s o gancho onde os itens foram enfileirados).<\/p>\n<p>PS: A adi\u00e7\u00e3o de estilos e scripts ao Gutenberg (blocos de administra\u00e7\u00e3o e frontend), \u00e9 explicado no meu post <a href=\"http:\/\/localhost\/awhitepixel\/blog\/gutenberg-the-basics\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Gutenberg: The Basics<\/a>.<\/p>\n<h2>Adicionando scripts e estilos ao frontend<\/h2>\n<p>Para adicionar estilos e scripts apenas ao frontend, use o hook <code>wp_enqueue_scripts<\/code>. Apesar do nome do gancho, ele \u00e9 usado tanto para scripts quanto para estilos. Aqui est\u00e1 um exemplo de enfileiramento de uma folha de estilo e um arquivo javascript em um 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>O terceiro argumento para estilos e scripts \u00e9 um array com depend\u00eancias. Por exemplo, para scripts, voc\u00ea pode querer carregar a biblioteca jQuery antes do arquivo de script. <strong>Nota<\/strong>: As instala\u00e7\u00f5es do WordPress v\u00eam com v\u00e1rias bibliotecas de script comuns inclu\u00eddas (por exemplo, jQuery, jQuery UI, Backbone e Underscore). Contanto que voc\u00ea adicione <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\">qualquer um desses identificadores<\/a> como depend\u00eancia em seu enqueue_script, o WordPress os enfileirar\u00e1, para que voc\u00ea n\u00e3o precise adicionar seus pr\u00f3prios arquivos para essas bibliotecas.<\/p>\n<p>O quinto argumento para scripts \u00e9 se o script deve ou n\u00e3o ser carregado no final de <code>&lt;body&gt;<\/code>(no rodap\u00e9), em vez de dentro da <code>&lt;head&gt;<\/code>tag.<\/p>\n<p>Para uso em um plugin, voc\u00ea precisa usar outros m\u00e9todos para obter a URL de um arquivo local, por exemplo <code>plugin_dir_url(__FILE__)<\/code>.<\/p>\n<h2>Adicionando scripts e estilos ao administrador<\/h2>\n<p>O WordPress oferece outro gancho, <code>admin_enqueue_scripts<\/code>, para adicionar estilos e scripts apenas ao administrador. Use os mesmos m\u00e9todos acima para registrar, enfileirar e localizar scripts e 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>Adicionando scripts e estilos \u00e0 p\u00e1gina de login<\/h2>\n<p>Como nenhum dos ganchos acima aparece na tela de login do administrador, o WordPress oferece um gancho separado para essa finalidade, <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>Como gerar vari\u00e1veis \u200b\u200bJavascript<\/h2>\n<p>Para gerar vari\u00e1veis \u200b\u200bJavascript (por exemplo, obter caminhos, strings traduzidas ou outras vari\u00e1veis, voc\u00ea pode usar wp_localize_script. Esta fun\u00e7\u00e3o requer um identificador de script enfileirado. O segundo par\u00e2metro seria o nome da vari\u00e1vel e o terceiro seu valor. O valor pode ser um array, assim :<\/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 do seu script voc\u00ea tem acesso \u00e0s vari\u00e1veis \u200b\u200bpassadas, assim:<\/p>\n<pre><code>jQuery(document).ready(function($) { \n    console.log(Theme_Variables.ajax_url);\n});<\/code><\/pre>\n<p>Neste gancho voc\u00ea pode acessar vari\u00e1veis \u200b\u200bglobais <code>$pagenow<\/code>e <code>$post_type<\/code>especificar onde deseja enfileirar seus estilos e scripts.<\/p>\n<h2>Sa\u00edda de estilos embutidos<\/h2>\n<p>Se voc\u00ea precisar produzir estilos embutidos, por exemplo, para vari\u00e1veis \u200b\u200bde tema que voc\u00ea configurou no Personalizador (por exemplo, usando <code>get_theme_mod<\/code>), voc\u00ea pode produzir esses estilos usando a <code>wp_add_inline_style<\/code>fun\u00e7\u00e3o. Ele funciona de maneira bastante semelhante \u00e0 sa\u00edda de vari\u00e1veis \u200b\u200bJavascript, nas quais voc\u00ea precisa fornecer um identificador de estilo enfileirado:<\/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>Adicionando tags ass\u00edncronas a scripts<\/h2>\n<p>Infelizmente, n\u00e3o h\u00e1 fun\u00e7\u00e3o direta ou filtro para adicionar <code>async<\/code>\u00e0s suas tags de script, mas podemos conseguir isso manipulando a string que o WordPress usa para gerar as tags de script para todos os scripts enfileirados, assim (lembre-se de especificar seu script por seu 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>Links \u00fateis de documenta\u00e7\u00e3o<\/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\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este post entra em detalhes com exemplos de c\u00f3digo de como adicionar scripts e estilos ao WordPress da maneira correta, tanto arquivos quanto vari\u00e1veis \u200b\u200bde sa\u00edda.<\/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":[930,898,898,722,722,837,1110,806,806,837,930,846,867,867],"tags":[1170],"class_list":["post-233812","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-assuntos","category-codigo-2","category-desenvolvedor","category-guia-para-iniciantes","category-n-a","category-php-8","category-tutoriais","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233812","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=233812"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233812\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/224083"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=233812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=233812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=233812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}