WP 3.4 hat fehlende Fotodaten

Ich habe gerade auf WP3.4 aktualisiert und festgestellt, dass zuvor verfügbare Bilder nicht mehr vom System “gefunden” werden. Damit meine ich, dass alle Bilddateien online und zugänglich bleiben, aber WP hat Miniaturbilddaten verloren und zeigt anschließend das Standardmediensymbol in der Medienbibliotheksliste an. Nach vorne gerichtete Seiten, die Bilder enthalten sollten, zeigen jetzt das generische Symbol “Bild fehlt” an, da keine URL vorhanden ist (ich habe die Quelle überprüft).

Meine Vermutung ist, dass die Verbindung zwischen database und Image-Listing irgendwie unterbrochen ist und ich versuche, sie zurück zu entwickeln, um Unterschiede zu finden. Hoffentlich gibt es andere mit einem ähnlichen Problem und haben damit gearbeitet?

Solutions Collecting From Web of "WP 3.4 hat fehlende Fotodaten"

Nachdem ich das Problem herausgefunden habe, möchte ich diese Frage aktualisieren. Das Problem rührt von früheren Versionen von WP her, die den Metadaten-Schlüssel _wp_attached_file beim Hochladen von Medien nicht enthalten, was 3.4 nun zu erfordern scheint.

Unten ist PHP-Code für das Durchlaufen der database, das Vorhandensein des Schlüssels und der Bilddatei zu überprüfen, dann war das Aktualisieren der database möglich.

// descend through the database $updated = 0; $skipped = 0; $error = 0; $upload_dir = wp_upload_dir(); $sql = sprintf("select * from %s where post_type = 'attachment'", $wpdb->posts); $all_attachments = $wpdb->get_results($sql); foreach ($all_attachments as $attachment) { // get the meta value $meta = get_post_meta($attachment->ID, "_wp_attachment_metadata", true); $file = $meta['file']; // verify that the file exists $file_path = $upload_dir['basedir'] . '/' . $file; if (!file_exists($file_path)) { $error++; } else { // add the meta value, which returns false if it already exists $adding_meta = add_post_meta($attachment->ID, '_wp_attached_file', $file, true); if ($adding_meta) $updated++; else $skipped++; } } echo '

' . sprintf("%d attachments were updated, %d were skipped and %d had errors.", $updated, $skipped, $error) . '

';