Mientras trabajábamos en un proyecto en el que creamos una galería realmente genial con los archivos adjuntos de WordPress y un tipo de publicación personalizado, encontramos la necesidad de agregar campos adicionales al cargador de medios de WordPress. Estos campos adicionales nos permitieron dar crédito a cada fotógrafo al agregar el nombre del fotógrafo y su URL en cada página de imagen. WordPress almacena imágenes como publicaciones en el tipo de publicación de datos adjuntos, por lo que agregar metadatos es como agregar campos personalizados. Debido a que los archivos adjuntos de WordPress no tienen una IU de campos personalizados, debemos agregar campos personalizados al cargador de medios para recopilar los metadatos. En este artículo, le mostraremos cómo agregar campos adicionales a WordPress Media Uploader.

Usaremos los siguientes filtros para hacer el cambio: attachment_fields_to_edit y attachment_fields_to_save

Para un proyecto como este, le recomendamos que cree un complemento específico del sitio y agregue el siguiente código. Sin embargo, aún puede agregar los códigos en el archivo functions.php de su tema para que funcione.

/ **
  * Agregue los campos Nombre de fotógrafo y URL al cargador de medios
  *
  * @param $ form_fields array, campos para incluir en forma de archivo adjunto
  * @param $ post object, archivo adjunto en la base de datos
  * @return $ form_fields, campos de formulario modificados
  * /
 
 function be_attachment_field_credit ($ form_fields, $ post) {
 $ form_fields ['be-photographer-name'] = array (
 'label' => 'Nombre del fotógrafo',
 'entrada' => 'texto',
 'value' => get_post_meta ($ post-> ID, 'be_photographer_name', verdadero),
 'helps' => 'Si se proporciona, se mostrará crédito de la foto',
 );

 $ form_fields ['be-photographer-url'] = array (
 'label' => 'Fotógrafo URL',
 'entrada' => 'texto',
 'value' => get_post_meta ($ post-> ID, 'be_photographer_url', verdadero),
 'ayuda' => 'Agregar URL del fotógrafo',
 );

 return $ form_fields;
 }

 add_filter ('attachment_fields_to_edit', 'be_attachment_field_credit', 10, 2);

 / **
  * Guardar los valores del nombre del fotógrafo y la URL en el cargador de medios
  *
  * @param $ post array, los datos de la publicación para la base de datos
  * @param $ array de archivos adjuntos, campos adjuntos del formulario $ _POST
  * @return $ post array, datos de publicación modificados
  * /

 function be_attachment_field_credit_save ($ post, $ attachment) {
 if (isset ($ attachment ['be-photographer-name']))
 update_post_meta ($ post ['ID'], 'be_photographer_name', $ attachment ['be-photographer-name']);

 if (isset ($ attachment ['be-photographer-url']))
 update_post_meta ($ post ['ID'], 'be_photographer_url', esc_url ($ attachment ['be-photographer-url']));

 devolver $ publicación;
 }

 add_filter ('attachment_fields_to_save', 'be_attachment_field_credit_save', 10, 2);
 ?> 

El código de arriba agregará dos campos de texto al Media Uploader llamado Nombre del fotógrafo y URL del fotógrafo. Puedes ver eso en la captura de pantalla a continuación:

Campos adicionales en el cargador de medios

Explicación del código: En la primera función, simplemente utilizamos una matriz para especificar la etiqueta del campo, el tipo de entrada, el valor y el texto de ayuda. La segunda función es verificar si se ha establecido un valor para esos campos. SI el valor está establecido, entonces los metadatos de la publicación se actualizan.

Si desea visualizar los campos en su plantilla de adjuntos, simplemente pegue los siguientes códigos dentro del ciclo:

echo get_post_meta ($ post-> ID, 'be_photographer_url', verdadero); 

Si desea visualizar los campos para su imagen destacada en su plantilla de archivo o cualquier otra plantilla, simplemente use:

echo get_post_meta (get_post_thumbnail_id (), 'be_photographer_url', verdadero); 

Esperamos que hayas disfrutado este artículo. Para aquellos que no saben cómo crear una plantilla de archivo adjunto, no se preocupe. En el siguiente artículo, cubriremos cómo crear una plantilla de archivo adjunto en WordPress.

Hat Consejo a Bill Erickson por mostrarnos cómo hacer esto.