Estoy usando register_taxonomy_for_object_type()
para agregar el campo de taxonomía de categoría a las cargas multimedia (archivos adjuntos). Estoy usando este código para hacerlo:
add_action('init', 'reg_tax');
function reg_tax() {
register_taxonomy_for_object_type('category', 'attachment');
}
Esto funciona y agrega un campo de texto simple para Categoría a la página de Medios al ver una imagen. Lo que realmente quiero es que muestre el Metabox real de Categorías para que pueda elegir las Categorías que quiero usar en lugar de simplemente escribirlas en el campo plano. También descubrí que poner la babosa de una categoría en este campo de texto, por ejemplo, my-category-name
termina mostrándose como el nombre real de la categoría, como My Category Name
cuando se guarda, lo que hace que el campo de texto simple sea una opción menos útil.
He estado mirando la add_post_type_support()
función para agregar Metaboxes y he visto que se usa para tipos de publicaciones personalizadas, pero no puedo ver si es posible agregar lo mismo para los archivos adjuntos.
fuente
Respuestas:
Edición: 09/12/2017 Vea esta respuesta para obtener una solución más actualizada: ¿Cómo usar las taxonomías en los archivos adjuntos con la nueva Biblioteca de medios?
Voy a responder mi propia pregunta aquí, ya que he logrado encontrar una solución a lo que he estado tratando de hacer. Llegué a la conclusión de que no era posible habilitar la categoría Metabox para archivos adjuntos. Sin embargo, descubrí que era bastante fácil obtener un campo básico para las Categorías agregadas a la página de archivos adjuntos usando
register_taxonomy_for_object_type
yadd_post_type_support
:El campo agregado se mostró así:
Es solo un campo de texto sin formato, pero lo que encontré fue que podía escribir el nombre de una categoría existente allí y luego se guardaría con éxito cuando se actualizara el archivo adjunto (El único comportamiento extraño es que devolvió la versión normal en lugar de la babosa después de guardar).
Una vez que me di cuenta de que podía guardar categorías de esta manera, pensé que podría obtener una lista de todas las categorías disponibles como casillas de verificación y marcar las que habían sido seleccionadas. Luego usé un poco de jQuery para tomar los valores de las categorías marcadas y poner todas las babosas de las categorías en el campo Categoría. Para que esto parezca aún más perfecto, utilicé un poco de CSS para ocultar la fila de la tabla que contenía el campo Categoría, por lo que todo lo que ves son las casillas de verificación, así:
Ahora que puedo agregar categorías a los archivos adjuntos de imágenes, puedo usar algo como:
¡Y arrastre las imágenes categorizadas a una página! Exactamente lo que esperaba hacer, no pensé que iba a haber una manera de hacerlo, pero me alegro de haber logrado resolver algo.
He convertido esto en un complemento llamado
WOS Media Categories
que he puesto a disposición para descargar desde mi sitio web, Suburbia.org.uk , ¡espero que pueda ser de utilidad para alguien más! Gracias de nuevo a quienes comentaron sobre esta y otras preguntas que he hecho aquí y que me ayudaron a resolverlo.Actualización: agregué una solución para permitir que se agreguen categorías mientras se cargan las imágenes con el cargador masivo Flash.
fuente
acabo de crear esto, que es una solución completa para el enlace javascript herky-jerk al campo de formulario. Como los valores de sus casillas de verificación se pasan junto con $ _POST al enviar, puede tomarlos durante el filtro add_image_attachment_fields_to_save y establecer los términos del objeto de publicación.
(tenga en cuenta que estoy usando una taxonomía personalizada, y no categorías, por lo que tendrá que cambiar la matriz $ categories para que coincida con la misma matriz que usa cuando configura sus casillas de verificación)
Shabam, Shabozzle. Disfrutar.
fuente
wp_set_object_terms( $post['ID'], $terms, 'image-format' ); return $post;
. Y el script que publicó no ejecuta register_custom_taxonomies. Pero de todos modos buen guión. Definitivamente usará esto en el futuro!Esto es difícil / complicado si desea utilizar el cuadro de categoría predeterminado de WordPress. Por un lado, el metabox no devuelve la salida, solo hace eco. Además de eso, no le daría el nombre de campo de entrada correcto, por lo que no guardaría. Una idea podría ser usar un autocompletado de jQuery UI para replicar la funcionalidad del cuadro de etiquetas.
Sin embargo, si desea jugar con los campos del editor de medios, puede conectar
'attachment_fields_to_edit'
y editar la matriz de campos. El filtro pasa dos argumentos a la devolución de llamada: el primer argumento es la matriz de campos, el segundo es el objeto de publicación del archivo adjunto. Ver aquí para más detalles:http://phpxref.ftwr.co.uk/wordpress/nav.html?wp-admin/includes/media.php.source.html#l1025
fuente
attachment_fields_to_edit
y veré cómo va eso.He creado un complemento utilizando las categorías de medios WOS de @ RickCurran como punto de partida. Sin embargo, las categorías de medios de WOS, al igual que otros complementos que agregan soporte de categoría a los medios, en realidad no agregan un metabox, lo he hecho.
Es necesariamente simplificado de los metaboxes en publicaciones y páginas, pero incluí una capacidad de filtrado que lo hace fácil de usar.
De hecho, estoy generando la metabox de categoría completa que ves en las páginas y publicaciones, pero oculto los bits que no funcionan en la página de medios debido a la falta de estilo y la falta de JavaScript.
Agradezco cualquier idea que alguien pueda tener sobre cómo hacer que el metabox sea completamente funcional, algo que tengo la intención de hacer en una versión posterior.
fuente
Gran complemento Rick, muy útil.
Si mueve el activador onclick en línea en lugar de vincularlo a la carga (y hacer algunos otros ajustes menores), funcionará también en el cargador masivo Flash. Con la versión actual, Flash se carga después del evento de carga jQuery para que los objetos aún no existan.
js revisado:
agregue onclick para ingresar en el archivo php:
agregue la identificación del formulario del cargador masivo al archivo CSS
}
fuente