Der Newsburger am Samstag, den 31.07.2010

Sollte Ihnen dieser Artikel gefallen haben, so hinterlassen Sie doch einen Kommentar und/oder empfehlen Sie diesen weiter. Sie haben selber einen Beitrag oder eine Meldung die hierher gehört? Eine kurze Mail an die Newsburger Redaktion genügt.
Blog! - 31.12.2009 - 01:34 - von Markus Arlt

WordPress 2.9 Post Thumbnail – Benutzerdefinierte Felder anpassen

Über Wordpress 2.9 und die Möglichkeit der Thumbnails wurde ja auf dieversen Blogs schon ausgiebig berichtet und es stehen gute Anleitungen im Netz. Wer wie ich aber vor WP 2.9 benutzerderinierte Felder für die Vorschaubilder benutz hat, möchte diese vielleicht gern an die neue Funktion anpassen. Ich mag es nämlich gar nicht abwärtskompatibel zu arbeiten und so 2 Funktionen für genau die selbe Aufgabe zu nutzen. Bevor dies hier ausgeführt wird, sollte natürlich sichergestellt sein, das die Thumbnail Funktion die mit Wordpress 2.9 eingeführt wurde auch richtig läuft. Desweiteren sollte jeder der dies umsetzt wissen was er da macht. Ich gebe keinerlei Garantie, das dies bei allen funktioniert. Das die Datenbank vorher zu sichern ist muss ich ja nicht ansprechen! Ich gehe in diesem Beispiel davon aus das man mit phpMyAdmin umgehen kann. Wie passen wir also die alten Bilder an die neue Funktion an.

Schritt 1

Wir kopieren die Tabelle wp_posts komplett mit Strutkur und Daten nach wp_posts_temp

Schritt 2:

In diesem Schritt löschen wir nicht benötigte Einträge in der Tabelle. Das wären Seiten, Posts, Revisions und jegliche Dateien die nicht als Thumbnails benutzt wurden in der Vergangenheit. Desweiteren löschen wird alle Felder in der Tabelle, die wir im weiteren Verlauf nicht brauchen.

DELETE FROM `wp_posts_temp` WHERE `wp_posts_temp`.`post_type` = “page”;
DELETE FROM `wp_posts_temp` WHERE `wp_posts_temp`.`post_type` = “post”;
DELETE FROM `wp_posts_temp` WHERE `wp_posts_temp`.`post_type` = “revision”;
DELETE FROM `wp_posts_temp` WHERE `wp_posts_temp`.`ID` = “0″;
ALTER TABLE `wp_posts_temp` DROP `post_author` , DROP `post_date` , DROP `post_date_gmt` , DROP `post_content` , DROP `post_title` , DROP `post_excerpt` , DROP `post_status` , DROP `comment_status` , DROP `ping_status` , DROP `post_password` , DROP `to_ping` , DROP `pinged` , DROP `post_modified` , DROP `post_modified_gmt` , DROP `post_content_filtered` , DROP `guid` , DROP `menu_order` , DROP `post_type` , DROP `post_mime_type` , DROP `comment_count` ;

Schritt 3

In diesem Schritt passen wir die Struktur dieser Tabelle an die Struktur der Tabelle wp_postmeta an.

ALTER TABLE `wp_posts_temp` CHANGE `ID` `meta_value` BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE `wp_posts_temp` CHANGE `post_name` `meta_key` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
ALTER TABLE `wp_posts_temp` CHANGE `post_parent` `post_id` BIGINT( 20 ) UNSIGNED NOT NULL DEFAULT ’0′;
UPDATE `wp_posts_temp` SET `meta_key` = ‘_thumbnail_id’;

Schritt 4

Nun exportieren wir unsere Tabelle wp_posts_temp über die Export Funktion von phpMyAdmin. Wir benötigen nur die Daten, diese allerdings mit “vollständigen” und “erweiterten” Inserts. Das Backup lassen wir uns Schicken (senden) um es kurz bearbeiten zu können.

Schritt 5

Unser Datenbank Backup öffnen wir mir einem Text Editor und ändern die Tabelle für das Insert ab:

Aus: INSERT INTO wp_posts_temp (meta_value, meta_key, post_id)
Wird: INSERT INTO wp_postmeta (meta_value, meta_key, post_id)

Nun speichern wir unser Backup wieder und importieren es über die import Funktion von phpMyAdmin. Sollte das alles soweit funktioniert haben, können wir das alte benutzerdefinierte Feld in der Datenbank löschen, sofern es nicht mehr anderweitig benötigt wird. NAMEDESFELDES ist in diesem Fall der Name den Ihr für das benutzerdefinierte Feld benutzt habt.

Schritt 6

DELETE FROM `wp_postmeta` WHERE `wp_postmeta`.`meta_key` = “NAMEDESFELDES”;

Das wars ab jetzt sollten auch alle alten Beiträge die ein Vorschaubild über ein benutzerdefiniertes Feld eingebunden hatten, mit der neuen Funktion dieses Bild anzeigen. Wer Vorschläge zu diesem Vorgehen hat ist gern eingeladen ein Kommentar zu hinterlassen.

6 Kommentare
  1. Oh jesses,

    das ist eigentlich genau das, was ich benötige. Meine letzten beiden Themes unterstützten auch Thumnails (per benutzerdefiniertem Feld). Bei der letzten Theme-Änderung hab ich das benutzerdefinierte Feld in sämtlichen Dateien umbenannt und entsprechend anpassen müssen.

    irgendwann werde ich das auf die Wordpress-Lösung umstellen. Nur frage ich mich, ob bei Deiner Herangehensweise die Bildergenerierung per timthumb noch funktioniert(?) Diese werden in den unterschiedlichen Ansichten (Kategorie, Suche, etc.) angezeigt.

  2. Wie die Bilder dann letzendlich ausgegeben werden liegt an Dir. Ich hab die Ausgabe auch wieder von der WP 2.9 Funktion ausgekoppelt und eine eigene Funktion geschrieben. Mit dieser hier beschriebenen Änderung werden Deine alten Bilder einfach nur auf das WP 2.9 System angepasst und man kann diese auch mit Bordmitteln von Wordpress 2.9 auslesen. Das ist alles. Willst Du sie anders auslesen, wie zum Beispiel mit dem Timthumb Plugin, muss dieses natürlich auf die Ausgabe von WP 2.9 angepasst sein. Solange man Schritt 6 nicht ausführt, stehen übrigens beide Varianten zur Verfügung!

  3. Ach – OK, ich verstehe. Jesses was ein Act. Aber es kribbelt schon in den Fingern. Irgendwann muss es ja sein – auf Dauer wollte ich schon auf die “neuen WP Features” umstellen. Der Artikel ist jedenfalls in meiner Linksammlung gelandet – für die ruhigeren Tage ;-)

  4. Wenn Du irgendwie Hilfe brauchst oder so, einfach Bescheid sagen, wenn ich zeit hab und helfen kann mach ich es gerne.

  5. Danke für Deine Anleitung – ehrlich gesagt tönt es für mich als Nicht-Programmierer immer noch recht kompliziert. Ich denk ich bleib bei meiner Pokerseite bei dem bestehenden Magazine-Style Theme.

  6. Danke für eine meiner Seiten habe ich genau sowas gesucht. Klappt wunderbar auch für jemanden der sich nicht ganz so gut mit den ganzen technischen Kram auskennt.

Kommentar schreiben

Bitte lesen: Infos zur Freischaltung von Kommentaren

Wir behalten uns das Recht vor Kommentare mit folgenden Merkmalen nicht freizuschalten, sie vor der Freigabe entsprechend zu editieren oder im Falle automatischer Freigabe kommentarlos zu löschen.
Als Name wurde ein Keyword oder Webseitenname eingegeben
Der Kommentar ist stark werbelastig
In URL oder Kommentar wurde ein Referrallink eingebaut
Der Kommentar ist vulgär oder beleidigt andere Kommentatoren
Der Kommentar dient offensichtlich nur dem Zweck eines Backlinks
Wir hoffen auf Ihr Verständniss für diese Regeln. Support Anfragen bitte nur per EMail.