{"id":28413,"date":"2021-05-25T18:24:00","date_gmt":"2021-05-25T15:24:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28413"},"modified":"2021-10-17T16:45:06","modified_gmt":"2021-10-17T13:45:06","slug":"agregar-un-boton-de-imagen-personalizado-con-el-cargador-de-medios-en-wordpress","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/agregar-un-boton-de-imagen-personalizado-con-el-cargador-de-medios-en-wordpress\/","title":{"rendered":"Agregar un bot\u00f3n de imagen personalizado con el cargador de medios en WordPress"},"content":{"rendered":"<p>Recientemente, estaba trabajando en un complemento en el que quer\u00edamos usar el cargador de medios predeterminado de WordPress para nuestro requisito. Ten\u00edamos un bot\u00f3n de imagen personalizado y quer\u00edamos subir una imagen a trav\u00e9s del cargador de medios. WordPress construy\u00f3 un cargador de medios maravillosamente que permite al usuario cargar una nueva imagen o usar una imagen existente de la biblioteca de medios.<\/p>\n<p>Siempre se recomienda utilizar el cargador de medios incorporado si est\u00e1 buscando una soluci\u00f3n personalizada para cargar una imagen en el backend. Al hacerlo, est\u00e1 siguiendo los est\u00e1ndares de WordPress. Implementar un cargador de medios solo requiere unas pocas l\u00edneas de c\u00f3digo. Entonces, sin m\u00e1s discusi\u00f3n, comencemos con eso.<\/p>\n<p>Para este tutorial, agregar\u00e9 un bot\u00f3n de imagen personalizado para la publicaci\u00f3n y la p\u00e1gina. Al hacer clic en este bot\u00f3n, se abrir\u00e1 el cargador de medios donde el usuario puede cargar la imagen. La URL de la imagen cargada se establece en un metacampo personalizado y se guardar\u00e1 como un meta de publicaci\u00f3n para la publicaci\u00f3n o p\u00e1gina espec\u00edfica.<\/p>\n<h3>Agregar Meta Box personalizado en WordPress<\/h3>\n<p>Meta box no es m\u00e1s que un bloque en una publicaci\u00f3n o una p\u00e1gina. Categor\u00edas, Etiquetas, Imagen destacada, Extracto, Discusi\u00f3n, etc. son ejemplos de metacajas. Usando el cuadro Meta puede agregar informaci\u00f3n adicional para la publicaci\u00f3n y la p\u00e1gina.<\/p>\n<p>Necesitamos un cuadro de meta que contenga el bot\u00f3n de carga de imagen y un campo de texto. Cuando un usuario hace clic en el bot\u00f3n, cargar\u00e1 la imagen y la URL de la imagen final se establecer\u00e1 en el campo de texto.<\/p>\n<p>Agregar <a href=\"https:\/\/developer.wordpress.org\/plugins\/metadata\/custom-meta-boxes\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">metabox<\/a> es f\u00e1cil y sencillo. Escriba el siguiente c\u00f3digo en el <code>functions.php<\/code>archivo o en su complemento.<\/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>Despu\u00e9s de agregar el c\u00f3digo anterior, vaya a su publicaci\u00f3n o p\u00e1gina y deber\u00eda poder ver el nuevo cuadro de meta agregado junto con sus 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=\"Agregar un bot\u00f3n de imagen personalizado con el cargador de medios en WordPress\" ><\/a><\/p>\n<h3>Personalizar el cargador de medios de WordPress<\/h3>\n<p>Ahora est\u00e1 listo con su meta box. Lo siguiente es hacer clic en el bot\u00f3n &#8216;Cargar imagen&#8217;, abrir el cargador de medios y configurar la URL de la imagen cargada en el campo de texto. Entonces, primero debe crear un archivo js y <a href=\"https:\/\/themewp.inform.click\/es\/forma-estandar-de-incluir-javascript-y-css-en-wordpress\/\" title=\"ponerlo\">ponerlo<\/a> en <a href=\"https:\/\/themewp.inform.click\/es\/forma-estandar-de-incluir-javascript-y-css-en-wordpress\/\" title=\"cola\">cola<\/a> en un entorno de WordPress.<\/p>\n<p>Creemos un archivo js <code>awscript.js<\/code>y col\u00f3quelo de la siguiente manera:<\/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>Aqu\u00ed, he dado la ruta del tema asumiendo que est\u00e1 agregando un c\u00f3digo completo en el tema. Si lo est\u00e1 haciendo a trav\u00e9s de un complemento, debe ajustar la ruta seg\u00fan su complemento.<\/p>\n<p>Para realizar esta tarea he tomado una referencia 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> y escribo el c\u00f3digo jQuery. En el <code>awscript.js<\/code>, escribiremos un c\u00f3digo de cargador de medios de la siguiente manera.<\/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>Ahora contin\u00fae y haga clic en el bot\u00f3n &#8216;Cargar imagen&#8217;, se abrir\u00e1 el cargador de medios, elija \/ cargue la imagen y deber\u00eda ver la URL de la imagen agregada en el campo de texto. Finalmente, voy a guardar esta URL en la tabla &#8216;postmeta&#8217; con la clave &#8216;aw_custom_image&#8217;. Por supuesto, puede dar cualquier nombre a la clave.<\/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>El save_post es una acci\u00f3n que se activa cada vez que se crea o actualiza una publicaci\u00f3n o p\u00e1gina. Con esta acci\u00f3n, puede inyectar su c\u00f3digo en el sistema. Puede leer m\u00e1s sobre este gancho en la <a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/save_post\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentaci\u00f3n de WordPress<\/a>.<\/p>\n<p>Espero que sepas c\u00f3mo agregar un cargador de medios personalizado en WordPress. Pru\u00e9belo en su complemento o tema y d\u00e9jeme saber lo que piensa en la secci\u00f3n de comentarios a continuaci\u00f3n.<\/p>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/integracion-de-mailchimp-con-el-complemento-contact-form-7\/\" title=\"Integraci\u00f3n de MailChimp con el complemento Contact Form 7\">Integraci\u00f3n de MailChimp con el complemento Contact Form 7<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-agregar-codigo-despues-de-la-etiqueta-del-cuerpo-en-wordpress\/\" title=\"C\u00f3mo agregar c\u00f3digo despu\u00e9s de la etiqueta del cuerpo en WordPress\">C\u00f3mo agregar c\u00f3digo despu\u00e9s de la etiqueta del cuerpo en WordPress<\/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=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfDesea agregar un cargador de medios en su complemento o tema? En este art\u00edculo, muestro c\u00f3mo se puede integrar f\u00e1cilmente el cargador de medios de WordPress en su complemento<\/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":[410,495,606],"tags":[849],"class_list":["post-28413","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-diverso","category-laravel","category-uncategorized-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/comments?post=28413"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28413\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/21632"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=28413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=28413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=28413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}