23.12.2013

Umzug von Papoo zu Wordpress

Dieser Blogpost soll meine Feiertags- und Ferienversuche zum Umzug eines reichlich gefüllten Contentmanagementsystems dokumentieren. Genauer gesagt soll der Inhalt eines Papoo-Systems in ein Wordpress-System umziehen. Vor Monaten hatte ich dazu mal ein paar Programmierer befragt und die Einarbeitungskosten waren doch recht hoch. Lag wohl in den meisten Fällen eher an den gefüllten Auftragsbüchern. ;-)

Hinweis: Ich dokumentiere hier zwar die Befehle, aber eine Anwendung löst keinerlei Garantien oder Gewährleistungen aus. Die Befehle dienen lediglich der (öffentlichen) Eigendokumentation und gelegentlichen Suche nach Hilfestellung.

1. manuelles Einrichtung eines Wordpress inkl. der gewünschten Plugins und Themes

2. manuelles Einrichten aller Autoren

3. manuelles Einrichten der Kategorien (Themen)

4. Sicherungskopien aller mySQL-Tabellen

5. Versionen der Artikel in Papoo (Plugins -> Entwicklerwerkzeuge) löschen

6. Arbeiten an wp_posts, um den Inhalt der Beiträge zu kopieren

6.1. Kopieren der Beiträge aus papoo_language_article

  1. ALTER TABLE `wordpress_deutsch`.`wp_posts` ADD COLUMN `repore_id` INT(11) AFTER `comment_count`;
  2. ALTER TABLE `wordpress_deutsch`.`wp_posts` ADD COLUMN `beitrag` LONGTEXT AFTER `repore_id`;
  3. INSERT INTO `wordpress_deutsch`.`wp_posts` (`post_title`,`post_excerpt`,`post_status`,`comment_status`,`ping_status`,`post_name`,`post_parent`,`guid`,`menu_order`,`post_type`,`comment_count`,`repore_id`,`beitrag` ) SELECT `header`,`lan_teaser`,'publish','open','open',`url_header`,'0','http://www.familienfreund.de/blog/?p=','0','post','0',`lan_repore_id`,`lan_article` FROM `usr_web11_1`.`cms361ppx07_papoo_language_article`;
  4. # Nachschauen, welche ID der letzte Eintrag ist (37)
    UPDATE `wordpress_deutsch`.`wp_posts` SET `post_content` = CONCAT(`post_excerpt`, `beitrag`) WHERE `ID` > 37;
  5. ALTER TABLE `wordpress_deutsch`.`wp_posts` DROP `beitrag`;
  6. UPDATE `wordpress_deutsch`.`wp_posts` SET `guid` = CONCAT(`guid`, `ID`) WHERE `ID` > 37;

6.2. Übernehmen der Informationen aus papoo_repore

  1. UPDATE `wordpress_deutsch`.`wp_posts`,`usr_web11_1`.`cms361ppx07_papoo_repore` SET `wordpress_deutsch`.`wp_posts`.`post_author`=`usr_web11_1`.`cms361ppx07_papoo_repore`.`dokuser`,`wordpress_deutsch`.`wp_posts`.`post_date`=DATE_FORMAT(`usr_web11_1`.`cms361ppx07_papoo_repore`.`timestamp`,'%Y-%m-%d %H:%i:%S'),`wordpress_deutsch`.`wp_posts`.`post_date_gmt`=ADDTIME(DATE_FORMAT(`usr_web11_1`.`cms361ppx07_papoo_repore`.`timestamp`,'%Y-%m-%d %H:%i:%S'),'0 1:0:0'),`wordpress_deutsch`.`wp_posts`.`post_modified`=FROM_UNIXTIME(`usr_web11_1`.`cms361ppx07_papoo_repore`.`stamptime`),`wordpress_deutsch`.`wp_posts`.`post_modified_gmt`=ADDTIME(FROM_UNIXTIME(`usr_web11_1`.`cms361ppx07_papoo_repore`.`stamptime`),'0 1:0:0') WHERE `repore_id` = `reporeID`;
  2. # wegen fehlendem Datum in der papoo_repore
    UPDATE `wp_posts` SET `wp_posts`.`post_date`=`wp_posts`.`post_modified`, `wp_posts`.`post_date_gmt`=`wp_posts`.`post_modified_gmt` WHERE `post_date`='0000-00-00 00:00:00' AND `post_modified`<>'0000-00-00 00:00:00' AND `post_modified`<>'1970-01-01 01:00:00'
  3. # bleibt noch ein Rest für die Handarbeit
    SELECT * FROM  `wp_posts` WHERE  `post_date` =  '0000-00-00 00:00:00' AND  `post_modified` <>  '0000-00-00 00:00:00'
  4. # Aktualisierung der Benutzerverknüpfung (zu 2.)
    UPDATE `wp_posts` SET `wp_posts`.`post_author`='<neue USER-ID>' WHERE `post_author` = '<alte USER-ID>'; # pro altem/neuen USER

7. Zuordnung der Beiträge zu Kategorien

  1. ALTER TABLE `wordpress_deutsch`.`wp_term_relationships` ADD `repore_id` INT(11);
  2. ALTER TABLE `wordpress_deutsch`.`wp_term_relationships` DROP PRIMARY KEY;
  3. INSERT INTO `wordpress_deutsch`.`wp_term_relationships` (`repore_id`,`term_taxonomy_id`,`term_order`) SELECT `article_id`,'6','0' FROM `usr_web11_1`.`cms361ppx07_papoo_lookup_article` WHERE `usr_web11_1`.`cms361ppx07_papoo_lookup_article`.`gruppeid_id` = '14';
  4. INSERT INTO `wordpress_deutsch`.`wp_term_relationships` (`repore_id`,`term_taxonomy_id`,`term_order`) SELECT `article_id`,'5','0' FROM `usr_web11_1`.`cms361ppx07_papoo_lookup_article` WHERE `usr_web11_1`.`cms361ppx07_papoo_lookup_article`.`gruppeid_id` = '13';
  5. INSERT INTO `wordpress_deutsch`.`wp_term_relationships` (`repore_id`,`term_taxonomy_id`,`term_order`) SELECT `article_id`,'7','0' FROM `usr_web11_1`.`cms361ppx07_papoo_lookup_article` WHERE `usr_web11_1`.`cms361ppx07_papoo_lookup_article`.`gruppeid_id` = '15';
  6. UPDATE `wordpress_deutsch`.`wp_term_relationships`,`wordpress_deutsch`.`wp_posts` SET `wordpress_deutsch`.`wp_term_relationships`.`object_id`=`wordpress_deutsch`.`wp_posts`.`ID` WHERE `wordpress_deutsch`.`wp_term_relationships`.`repore_id` = `wordpress_deutsch`.`wp_posts`.`repore_id`;
  7. UPDATE `wordpress_deutsch`.`wp_term_relationships`, `usr_web11_1`.`cms361ppx07_papoo_lookup_art_cat` SET `term_taxonomy_id` = '26' WHERE `repore_id` = `lart_id` AND `lcat_id` = '175'
  8. # Eintragen der Anzahl der Einträge pro Kategorie in die wp_term_taxonomy
    SELECT * , COUNT( * ) FROM  `wp_term_relationships` GROUP BY  `term_taxonomy_id` ORDER BY  `wp_term_relationships`.`term_taxonomy_id`

8. Bilder für die Artikelthumbnails

  1. Download der verwendeten Bilder in Papoo aus dem Verzeichnis /images
  2. Upload aller Bilder via systemseitiger Worpress-Medienverwaltung - dadurch werden Einträge in der wp-posts und der wp-postmeta erstellt.
  3. ALTER TABLE `wordpress_deutsch`.`wp_posts` ADD `image_id` INT(11);
  4. ALTER TABLE `wordpress_deutsch`.`wp_postmeta` ADD `image_id` INT(11);
  5. ALTER TABLE `wordpress_deutsch`.`wp_postmeta` ADD `image_name` longtext;
  6. # Dateiname zuschneiden
    UPDATE `wordpress_deutsch`.`wp_postmeta` SET `wordpress_deutsch`.`wp_postmeta`.`image_name`= REPLACE(`wordpress_deutsch`.`wp_postmeta`.`meta_value`,'2013/12/','') WHERE `wordpress_deutsch`.`wp_postmeta`.`meta_key` = '_wp_attached_file'
  7. UPDATE `wordpress_deutsch`.`wp_postmeta`,`usr_web11_1`.`cms361ppx07_papoo_images` SET `wordpress_deutsch`.`wp_postmeta`.`image_id`=`usr_web11_1`.`cms361ppx07_papoo_images`.`image_id` WHERE `wordpress_deutsch`.`wp_postmeta`.`meta_key` = '_wp_attached_file' AND `wordpress_deutsch`.`wp_postmeta`.`image_name` = `usr_web11_1`.`cms361ppx07_papoo_images`.`image_name`
    #Ergebnis: In der wp_postmeta sind die (neue) Beitrags-ID, die (neue) und die (alte) Bild-ID zugeordnet. | bei knapp über 100 Bildern (von 4300) wurde die (alte) Bild-ID nicht mitkopiert. (die Bilder lagen wohl auf dem Server ohne in Papoo eingebunden zu sein.
  8. # alte Bild-ID den Einträgen in der wp_posts zuordnen
    UPDATE `wordpress_deutsch`.`wp_posts`,`wordpress_deutsch`.`wp_postmeta` SET `wordpress_deutsch`.`wp_posts`.`image_id` = `wordpress_deutsch`.`wp_postmeta`.`image_id` WHERE `wordpress_deutsch`.`wp_posts`.`ID` = `wordpress_deutsch`.`wp_postmeta`.`post_id`
    # zum Ergebnis von 7 -> SELECT * FROM  `wp_posts` WHERE  `post_type` LIKE  'attachment' AND  `image_id` IS NULL
  9. # wenn alt- und title-Tags der Bilder in der papoo_images nicht oder bei vielen Einträgen fehlen (siehe Ergebnis zu 10.), dann müssen diese Daten z.b. aus der papoo_languages (Feld lan_teaser_img_fertig) gewonnen werden.
    ## Aufgrund von mehrfach vorhandenen " und fehlenden " kommt es zu 'Fehlern'. Diese müssen manuell behoben werden.
    #9.1. alt-Tag:
    # UPDATE `cms361ppx07_papoo_language_article` SET `lan_teaser_img_alt` = '';
    UPDATE `cms361ppx07_papoo_language_article` SET `lan_teaser_img_alt` = REPLACE(REPLACE( LEFT(`lan_teaser_img_fertig`,LOCATE('"',`lan_teaser_img_fertig`,11)),'<img alt="',''),'"','')
    #9.2. title-Tag
    # UPDATE `cms361ppx07_papoo_language_article` SET `lan_teaser_img_title` = '';
    UPDATE `cms361ppx07_papoo_language_article` SET `lan_teaser_img_title` = REPLACE(REPLACE( LEFT(`lan_teaser_img_fertig`,LOCATE('" src="',`lan_teaser_img_fertig`)),CONCAT('<img alt="',`lan_teaser_img_alt`,'" title="'),''),'"','')
    #Übertrag der gewonnenen alt- und title-Tags in die papoo_images
    UPDATE `cms361ppx07_papoo_images`,`cms361ppx07_papoo_language_article` SET `image_longdesc`= LOCATE(`cms361ppx07_papoo_images`.`image_name`,`cms361ppx07_papoo_language_article`.`lan_teaser_img_fertig`) WHERE `image_alt` = '' AND `image_title` = '' AND LOCATE(`cms361ppx07_papoo_images`.`image_name`,`cms361ppx07_papoo_language_article`.`lan_teaser_img_fertig`)
  10. # Bildname und -rechte in wp-posts eintragen
    UPDATE `wordpress_deutsch`.`wp_posts`, `usr_web11_1`.`cms361ppx07_papoo_images` SET `post_content`=`usr_web11_1`.`cms361ppx07_papoo_images`.`image_alt`,`post_title`=`usr_web11_1`.`cms361ppx07_papoo_images`.`image_alt`,`post_excerpt`=`usr_web11_1`.`cms361ppx07_papoo_images`.`image_alt`,`post_name`=`usr_web11_1`.`cms361ppx07_papoo_images`.`image_name` WHERE `wordpress_deutsch`.`wp_posts`.`image_id` = `usr_web11_1`.`cms361ppx07_papoo_images`.`image_id`
    # 1. hier zeigt sich wieder ein altes Problem von Papoo, wegen dem der Wechsel notwendig wurde. Die Änderungen an den alt- und title-Tags der Bilder wurde nicht in die Images-Datenbank geschrieben und bei 3.100 Bildern sind diese Felder nun leer :-(
    # 2. Mit Hilfe des eingefügten Schritt 9 lässt sich das Problem einigermassen dezimieren. Schlussendlich sind bei über 4.400 Bildern nur ca. 600 als nicht ausreichend gefüllt zu betrachten. Ein Großteil sind eigene bzw. systemseitige Bilder.
  11. INSERT INTO `wp_postmeta`(`post_id`, `meta_key`, `meta_value`, `image_name`) SELECT `wp_posts`.`ID`,'_wp_attachment_image_alt',`wp_posts`.`post_content`,'XXX-Test' FROM `wp_posts` WHERE `wp_posts`.`post_type` = 'attachment' AND `wp_posts`.`ID` > 16000 AND `wp_posts`.`post_content` > ''
  12. INSERT INTO `wp_postmeta`(`post_id`, `meta_key`, `meta_value`, `image_name`) SELECT `wp_posts`.`ID`,'_yoast_wpseo_metadesc',`wp_posts`.`post_content`,'XXX-Test' FROM `wp_posts` WHERE `wp_posts`.`post_type` = 'attachment' AND `wp_posts`.`ID` > 16000 AND `wp_posts`.`post_content` > ''
  13. # Verknüpfen Beitrags-ID und Bild-ID in wp-postmetaCREATE TABLE `arbeit` (`beitragsid_neu` INT(11), `beitragsid_alt` INT(11), `bildname` LONGTEXT, `bildid` INT(11));
    INSERT INTO `arbeit` (`beitragsid_alt`, `bildname`) SELECT `reporeID`, `teaser_bild` FROM `usr_web11_1`.`cms361ppx07_papoo_repore`;
    UPDATE `arbeit`,`wp_posts` SET `bildid` = `ID` WHERE `bildname` = `post_name`;
    UPDATE `arbeit`,`wp_posts` SET `beitragsid_neu` = `ID` WHERE `beitragsid_alt` = `repore_id`;
    INSERT INTO `wp_postmeta` (`post_id`, `meta_key`, `meta_value`, `image_name`) SELECT `beitragsid_neu`,'_thumbnail_id',`bildid`, 'YYY TEST' FROM `arbeit` WHERE `beitragsid_neu` IS NOT NULL AND `bildid` IS NOT NULL

9. Schlagwörter

10. Downloads / Dateien

11. Kommentare

Kommentar veröffentlichen

Beliebte Posts