wp_generate_attachment_metadata gibt mir ein leeres Array

Ich habe einen benutzerdefinierten Beitragstyp und eine Metabox mit einer Dateieingabe.

Ich kann den Anhang einfügen, aber ich kann die Metadaten des Anhangs nicht aktualisieren, und ich weiß nicht, wie ich ihn beheben kann, weil ich keinen Fehler erhalte.

Hier ist mein Code:

$attach_id = wp_insert_attachment( $attachment, $filename, $post_id ); $attach_data = wp_generate_attachment_metadata( $attach_id, $filename ); wp_update_attachment_metadata( $attach_id, $attach_data ); echo $attach_id; echo '
'; print_r($filename); echo '

'; echo '

'; print_r($attach_data); echo '

';

und hier ist die Ausgabe:

 96 Array ( [name] => one.png [type] => image/png [tmp_name] => /tmp/phphQ0e2v [error] => 0 [size] => 144555 ) Array ( ) 

Wie Sie sehen können, ist $ attach_data leer 🙁

Solutions Collecting From Web of "wp_generate_attachment_metadata gibt mir ein leeres Array"

Von Kommentar:

Lassen Sie WordPress einen Dateipfad erstellen und verwenden Sie diesen für die nächsten Schritte:

 $upload = wp_handle_upload($filename, array('test_form' => false)); $attach_id = wp_insert_attachment( $attachment, $upload['file'], $post_id ); wp_update_attachment_metadata( $attach_id, $attach_data ); 

Das ist es, was es endlich für mich repariert hat:

 apply_filters('wp_handle_upload', array( 'file' => $file_path, 'url' => $file_url, 'type' => $file_type), 'upload'); 

Erläuterung: Ich bin mir nicht ganz sicher, warum dies den Fehler für mich behoben hat, aber ich nehme an, dass dies entweder mit Plugins, die den Hook wp_handle_upload verwenden, oder dass die Filter Metadaten zum Anhang hinzufügen, die sonst in fehlen würden die function wp_generate_attachment_metadata.

Volle function:

 function add_to_media_lib($file_url, $file_path, $parent_post_id) { require_once(ABSPATH . 'wp-admin/includes/image.php'); require_once(ABSPATH . 'wp-admin/includes/file.php'); // Check the type of tile. We'll use this as the 'post_mime_type'. $file_type = wp_check_filetype(basename($file_url), null); // Get the path to the upload directory. $wp_upload_dir = wp_upload_dir(); // Prepare an array of post data for the attachment. $attachment = array( 'guid' => $wp_upload_dir['url'] . '/' . basename($file_url), 'post_mime_type' => $file_type['type'], 'post_title' => preg_replace('/\.[^.]+$/', '', basename($file_url)), 'post_content' => '', 'post_status' => 'inherit', 'post_parent' => $parent_post_id ); // Insert the attachment. $attach_id = wp_insert_attachment($attachment, $file_url, $parent_post_id); // apply filters (important in some environments) apply_filters('wp_handle_upload', array('file' => $file_path, 'url' => $file_url, 'type' => $file_type), 'upload'); // Generate the metadata for the attachment, and update the database record. if ($attach_data = wp_generate_attachment_metadata($attach_id, $file_path)) { wp_update_attachment_metadata($attach_id, $attach_data); } else { echo '

Failed to create PDF-thumbnail Meta-Data

' . print_r($attach_data) . '

'; } return $attach_id; }