Por fin tengo !! Tengo esta cosa que he intentado hacer 12 veces y 12 maneras diferentes, pero finalmente lo hice funcionar, ... más o menos.
Hice un metabox personalizado para cargar y adjuntar imágenes a las publicaciones, y no requiere que uses el horrible cargador de medios de caja gruesa integrado en WP. Odio esa cosa No, lo que he hecho es solo un grupo de entradas (título, descripción, archivo), que también puede duplicar, para agregar archivos adjuntos adicionales si lo desea. Por lo tanto, complete los campos, seleccione una imagen para cargar y guarde el borrador o publique la publicación. Una vez que hay archivos adjuntos agregados a una publicación, el metabox mostrará los campos de entrada, junto con una imagen de vista previa de la imagen adjunta para cada archivo adjunto que haya agregado. Los campos de título y descripción se utilizan para generar los metadatos del archivo, nada que se guarde como post_meta, que yo sepa. Eso es todo lo que he trabajado hasta ahora.
Necesito hacerlo para que cuando guarde / publique una publicación, cargue / cree los archivos adjuntos, creará los tres tamaños de imagen como lo haría el cargador de wp predeterminado, miniatura, mediano, grande y manteniendo la imagen de tamaño completo también . Si eso es posible de alguna manera. De lo contrario, me gustaría usar add_image_size()
para crear / definir nuevos tamaños personalizados, y generarlos de esa manera, al subirlos.
No estoy seguro de qué función es la más ideal para usar en este caso, tal vez la image_make_intermediate_size()
función sería mejor, wp_create_thumbnail()
o wp_crop_image()
... ¡quién sabe!
No puedo entender cómo hacerlo, si necesito ejecutar la wp_handle_upload()
función para cada uno, o tal vez algo relacionado con la wp_generate_attachment_metadata()
función. Es confuso para mí, ya que los 3 tamaños de imagen deben asociarse como variantes del mismo archivo adjunto, y cómo hacerlo.
Recorrí la web, leí la fuente de todos los archivos relacionados con wp media / upload / image, y jugué con casi todas las funciones que hay para la carga de medios y no puedo encontrar cómo WP crea los 3 tamaños de imagen en ningún lado, o cómo hacerlo yo mismo.
En wp-includes / media.php image_resize()
parece que la función sería la mejor, ya que es exactamente lo que debería ser. Simplemente no puedo entender por mi vida qué demonios me estoy perdiendo o he intentado hacer pero hice mal para hacer las miniaturas de las imágenes.
Aquí está mi función de trabajo que hace las wp_handle_upload()
cosas y cosas, pero también necesita crear el pulgar de 100px, y hacer una versión de cambio de tamaño de la imagen que tenga un ancho máximo como 500px, y se guarde como nuevos archivos del archivo cargado.
function update_attachment(){
global $post;
wp_update_attachment_metadata( $post->ID, $_POST['a_image'] );
if( !empty( $_FILES['a_image']['name'] )) { //New upload
require_once( ABSPATH . 'wp-admin/includes/file.php' );
$override['action'] = 'editpost';
$url = wp_handle_upload( $_FILES['a_image'], $override );
// $medium = image_make_intermediate_size( $uploaded_file['url'], 500, 400, true );
// $thumb = = image_make_intermediate_size( $uploaded_file['url'], 100, 100, true );
if ( isset( $file['error'] )) {
return new WP_Error( 'upload_error', $file['error'] );
}
$array_type = wp_check_filetype
$allowed_file_types = array('image/jpg','image/jpeg','image/gif','image/png');
$name_parts = pathinfo( $name );
$name = trim( substr( $name, 0, - ( 1 + strlen( $name_parts['extension'] )) ));
$type = $file['type'];
$file = $file['file'];
$title = $_POST['a_title'] ? $_POST['a_title'] : $name;
$content = $_POST['a_desc']
$post_id = $post->ID;
$attachment = array(
'post_title' => $title,
'post_type' => 'attachment',
'post_content' => $content,
'post_parent' => $post_id,
'post_mime_type' => $type,
'guid' => $url['url']
);
// Save the data
$id = wp_insert_attachment( $attachment, $_FILES['a_image'][ 'file' ]/*, $post_id - for post_thumbnails*/);
if ( !is_wp_error( $id )) {
$attach_meta = wp_generate_attachment_metadata( $id, $uploaded_file['url'] );
wp_update_attachment_metadata( $attach_id, $attach_meta );
}
update_post_meta( $post->ID, 'a_image', $uploaded_file['url'] );
}
}
Alguien capaz de ayudarme finalmente a solucionar esto para que funcione correctamente sería amado. He pasado tantas horas ridículas innumerables numerosas veces diferentes tratando de desarrollar esto y la documentación es una mierda, y realmente no hay buenas publicaciones en ninguna parte sobre cómo hacerlo.
Gracias