{"id":27833,"date":"2021-05-25T18:31:00","date_gmt":"2021-05-25T15:31:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27833"},"modified":"2021-10-18T04:09:20","modified_gmt":"2021-10-18T01:09:20","slug":"adicionar-botao-de-imagem-personalizado-com-o-uploader-de-midia-no-wordpress","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/adicionar-botao-de-imagem-personalizado-com-o-uploader-de-midia-no-wordpress\/","title":{"rendered":"Adicionar bot\u00e3o de imagem personalizado com o uploader de m\u00eddia no WordPress"},"content":{"rendered":"<p>Recentemente, eu estava trabalhando em um plugin em que quer\u00edamos usar o uploader de m\u00eddia padr\u00e3o do WordPress para nossos requisitos. T\u00ednhamos um bot\u00e3o de imagem personalizado e quer\u00edamos fazer upload de uma imagem por meio do uploader de m\u00eddia. O WordPress construiu um carregador de m\u00eddia lindamente que permite ao usu\u00e1rio fazer upload de uma nova imagem ou usar uma imagem existente da biblioteca de m\u00eddia.<\/p>\n<p>\u00c9 sempre recomend\u00e1vel usar o uploader de m\u00eddia integrado se voc\u00ea estiver procurando uma solu\u00e7\u00e3o personalizada para fazer upload de uma imagem no back-end. Fazendo isso, voc\u00ea est\u00e1 seguindo os padr\u00f5es do WordPress. Implementar um uploader de m\u00eddia requer apenas algumas linhas de c\u00f3digo. Portanto, sem mais discuss\u00e3o, vamos come\u00e7ar com isso.<\/p>\n<p>Para este tutorial, adicionarei um bot\u00e3o de imagem personalizada para a postagem e a p\u00e1gina. Ao clicar neste bot\u00e3o, o uploader de m\u00eddia ser\u00e1 aberto, onde o usu\u00e1rio pode fazer o upload da imagem. O URL da imagem carregada \u00e9 definido em um metacampo personalizado e ser\u00e1 salvo como um meta de postagem para a postagem ou p\u00e1gina espec\u00edfica.<\/p>\n<h3>Adicionar Meta Box personalizada no WordPress<\/h3>\n<p>Meta box nada mais \u00e9 do que um bloco no post ou na p\u00e1gina. Categorias, tags, imagem em destaque, trecho, discuss\u00e3o, etc. s\u00e3o exemplos de caixas de meta. Usando a caixa Meta, voc\u00ea pode adicionar informa\u00e7\u00f5es adicionais para a postagem e a p\u00e1gina.<\/p>\n<p>Precisamos de uma metacaixa que cont\u00e9m o bot\u00e3o de upload de imagem e um campo de texto. Quando um usu\u00e1rio clica no bot\u00e3o, ele faz o upload da imagem e o URL final da imagem \u00e9 definido no campo de texto.<\/p>\n<p>Adicionar <a href=\"https:\/\/developer.wordpress.org\/plugins\/metadata\/custom-meta-boxes\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">metacaixa<\/a> \u00e9 f\u00e1cil e direto. Escreva o c\u00f3digo abaixo no <code>functions.php<\/code>arquivo ou no seu plugin.<\/p>\n<pre><code>function aw_custom_meta_boxes( $post_type, $post) {\n\u00a0\u00a0\u00a0\u00a0add_meta_box(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'aw-meta-box',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0__( 'Custom Image' ),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'render_aw_meta_box',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0array('post', 'page'), \/\/post types here\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'normal',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'high'\n\u00a0\u00a0\u00a0\u00a0);\n}\nadd_action( 'add_meta_boxes', 'aw_custom_meta_boxes', 10, 2 );\n\u00a0\nfunction render_aw_meta_box($post) {\n\u00a0\u00a0\u00a0\u00a0$image = get_post_meta($post-&gt;ID, 'aw_custom_image', true);\n\u00a0\u00a0\u00a0\u00a0?&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;table&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;tr&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;td&gt;&lt;a href=\"#\" class=\"aw_upload_image_button button button-secondary\"&gt;&lt;?php _e('Upload Image'); ?&gt;&lt;\/a&gt;&lt;\/td&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;td&gt;&lt;input type=\"text\" name=\"aw_custom_image\" id=\"aw_custom_image\" value=\"&lt;?php echo $image; ?&gt;\" style=\"width:500px;\" \/&gt;&lt;\/td&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/tr&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/table&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;?php\n}<\/code><\/pre>\n<p>Depois de adicionar o c\u00f3digo acima, v\u00e1 para a sua postagem ou p\u00e1gina e voc\u00ea ver\u00e1 a nova metacaixa adicionada junto com seus campos.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20472-6081f701c7c42.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20472-6081f701c7c42.png\" alt=\"Adicionar bot\u00e3o de imagem personalizado com o uploader de m\u00eddia no WordPress\" ><\/a><\/p>\n<h3>Personalize WordPress Media Uploader<\/h3>\n<p>Agora voc\u00ea est\u00e1 pronto com sua metacaixa. A pr\u00f3xima coisa \u00e9 clicar no bot\u00e3o &#8216;Carregar imagem&#8217;, abrir o carregador de m\u00eddia e definir o URL da imagem carregada no campo de texto. Portanto, primeiro voc\u00ea precisa criar um arquivo js e <a href=\"https:\/\/themewp.inform.click\/pt-pt\/maneira-padrao-de-incluir-javascript-e-css-no-wordpress\/\" title=\"enfileir\u00e1-lo\">enfileir\u00e1-lo<\/a> em um ambiente WordPress.<\/p>\n<p>Vamos criar um arquivo js <code>awscript.js<\/code>e enfileir\u00e1-lo da seguinte maneira:<\/p>\n<pre><code>function aw_include_script() {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (! did_action( 'wp_enqueue_media')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_enqueue_media();\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0wp_enqueue_script( 'awscript', get_stylesheet_directory_uri(). '\/js\/awscript.js', array('jquery'), null, false );\n}\nadd_action( 'admin_enqueue_scripts', 'aw_include_script' );<\/code><\/pre>\n<p>Aqui, forneci o caminho do tema presumindo que voc\u00ea esteja adicionando um c\u00f3digo inteiro ao tema. Se voc\u00ea estiver fazendo isso por meio do plug-in, ser\u00e1 necess\u00e1rio ajustar o caminho de acordo com o seu plug-in.<\/p>\n<p>Para realizar esta tarefa, peguei uma refer\u00eancia de <a href=\"https:\/\/codex.wordpress.org\/Javascript_Reference\/wp.media\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Javascript Reference \/ wp.media<\/a> e escrevi o c\u00f3digo jQuery. No <code>awscript.js<\/code>, iremos escrever um c\u00f3digo de uploader de m\u00eddia da seguinte maneira.<\/p>\n<pre><code>jQuery(function($){\n\u00a0\u00a0\u00a0\u00a0$('body').on('click', '.aw_upload_image_button', function(e){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0e.preventDefault();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var button = $(this),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0aw_uploader = wp.media({\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0title: 'Custom image',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0library: {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0uploadedTo: wp.media.view.settings.post.id,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0type: 'image'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0button: {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0text: 'Use this image'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0multiple: false\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}).on('select', function() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var attachment = aw_uploader.state().get('selection').first().toJSON();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('#aw_custom_image').val(attachment.url);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0})\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.open();\n\u00a0\u00a0\u00a0\u00a0});\n});<\/code><\/pre>\n<p>Agora v\u00e1 em frente e clique no bot\u00e3o &#8216;Upload de imagem&#8217;, ele abrir\u00e1 o carregador de m\u00eddia, escolha \/ fa\u00e7a upload da imagem e voc\u00ea dever\u00e1 ver o URL da imagem adicionado no campo de texto. Por fim, salvarei este URL na tabela &#8216;postmeta&#8217; com a chave &#8216;aw_custom_image&#8217;. Claro, voc\u00ea pode dar qualquer nome para a chave.<\/p>\n<pre><code>function aw_save_postdata($post_id)\n{\n\u00a0\u00a0\u00a0\u00a0if (array_key_exists('aw_custom_image', $_POST)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0update_post_meta(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$post_id,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'aw_custom_image',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$_POST['aw_custom_image']\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\u00a0\u00a0}\n}\nadd_action('save_post', 'aw_save_postdata');<\/code><\/pre>\n<p>O save_post \u00e9 uma a\u00e7\u00e3o disparada sempre que uma postagem ou p\u00e1gina \u00e9 criada ou atualizada. Usando esta a\u00e7\u00e3o, voc\u00ea pode injetar seu c\u00f3digo no sistema. Voc\u00ea pode ler mais sobre este gancho na documenta\u00e7\u00e3o do <a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/save_post\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress<\/a>.<\/p>\n<p>Espero que voc\u00ea saiba como adicionar um uploader de m\u00eddia personalizado no WordPress. Experimente em seu plugin ou tema e deixe-me saber sua opini\u00e3o na se\u00e7\u00e3o de coment\u00e1rios abaixo.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/integracao-mailchimp-com-formulario-de-contato-7-plugin\/\" title=\"Integra\u00e7\u00e3o MailChimp com Formul\u00e1rio de Contato 7 Plugin\">Integra\u00e7\u00e3o MailChimp com Formul\u00e1rio de Contato 7 Plugin<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-adicionar-codigo-apos-a-tag-do-corpo-no-wordpress\/\" title=\"Como adicionar c\u00f3digo ap\u00f3s a tag do corpo no WordPress\">Como adicionar c\u00f3digo ap\u00f3s a tag do corpo no WordPress<\/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=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voc\u00ea deseja adicionar o uploader de m\u00eddia em seu plugin ou tema. Neste artigo, mostro como \u00e9 poss\u00edvel integrar facilmente o uploader de m\u00eddia WordPress em seu plug-in<\/p>\n","protected":false},"author":1,"featured_media":21632,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[417,502,613],"tags":[848],"class_list":["post-27833","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-diversos","category-laravel","category-uncategorized-9","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27833","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=27833"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27833\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21632"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=27833"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=27833"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=27833"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}