Ich habe endlich !! Ich habe dieses Ding ungefähr 12 Mal ausprobiert und 12 verschiedene Arten, aber es hat endlich funktioniert, ... irgendwie.
Ich habe eine benutzerdefinierte Metabox für das Hochladen und Anhängen von Bildern an Beiträge erstellt, und Sie müssen nicht den in WP integrierten schrecklichen Thickbox-Medien-Uploader verwenden. Ich hasse das Ding. Nein, ich habe nur eine Gruppe von Eingaben (Titel, Beschreibung, Datei) vorgenommen, die Sie auch duplizieren können, um zusätzliche Anhänge hinzuzufügen, wenn Sie möchten. Füllen Sie also die Felder aus, wählen Sie ein Bild zum Hochladen aus und speichern Sie den Entwurf oder veröffentlichen Sie den Beitrag. Sobald einem Beitrag Anhänge hinzugefügt wurden, werden in der Metabox die Eingabefelder zusammen mit einem Vorschaubild des angehängten Bildes für jeden von Ihnen hinzugefügten Anhang angezeigt. Die Titel- und Beschreibungsfelder werden verwendet, um die Metadaten der Datei zu generieren. Es wird nichts als Post_Meta gespeichert, von dem ich weiß. Das ist derzeit alles, was ich bisher zu arbeiten bekommen habe.
Ich muss es so machen, dass beim Speichern / Veröffentlichen eines Beitrags, beim Hochladen / Erstellen der Anhangsdateien die drei Bildgrößen erstellt werden, wie es der standardmäßige WP-Uploader tun würde: Miniaturansicht, mittelgroß, groß und auch das Bild in voller Größe beibehalten . Wenn das irgendwie möglich ist. Andernfalls würde ich gerne add_image_size()
neue benutzerdefinierte Größen erstellen / definieren und diese stattdessen beim Hochladen auf diese Weise generieren.
Ich bin mir nicht sicher, welche Funktion in diesem Fall am besten geeignet ist, vielleicht wäre die image_make_intermediate_size()
Funktion besser, oder wp_create_thumbnail()
oder wp_crop_image()
... wer weiß !!
Ich kann nicht herausfinden, wie ich das machen soll, wenn ich die wp_handle_upload()
Funktion für jede einzelne ausführen muss oder vielleicht etwas, das die wp_generate_attachment_metadata()
Funktion betrifft . Es ist verwirrend für mich, da die 3 Bildgrößen als Varianten desselben Anhangs zugeordnet werden sollen, und wie man das macht.
Ich habe das Web durchsucht, die Quelle aller WP-Medien- / Upload- / Bild-bezogenen Dateien gelesen und mit nahezu jeder Funktion gespielt, die für das Hochladen von Medien zur Verfügung steht, und kann nicht feststellen, wie WP die 3 Bildgrößen an einem beliebigen Ort erstellt oder wie dies zu tun ist es selbst.
In wp-includes / media.php image_resize()
sieht die Funktion so aus, als wäre sie am besten, da sie genau so ist, wie sie sein sollte. Ich kann für mein Leben einfach nicht herausfinden, was zum Teufel ich vermisse oder was ich versucht habe, aber falsch gemacht habe, um die Miniaturbilder zu erstellen.
Hier ist meine Arbeitsfunktion, die das wp_handle_upload()
Zeug und die Dinge erledigt , aber sie muss auch den 100px-Thumb erstellen und eine Version des Bildes mit einer maximalen Breite von 500px erstellen und als neue Dateien des hochgeladenen Bildes speichern.
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'] );
}
}
Jeder, der mir helfen kann, das Problem zu beheben, damit es richtig funktioniert, wäre begeistert. Ich habe so viele lächerliche, unzählige Stunden damit verbracht, dieses Ding zu entwickeln, und die Dokumentation ist zum Kotzen, und es gibt nirgendwo wirklich gute Beiträge, wie man es macht.
Vielen Dank