Gentblogt 2.3

Die keer dat Gentblogt moest naar de nieuwste versie van WordPress omgezet worden, en dat ik dat al maanden (letterlijk, vrees ik) had uitgesteld wegens redelijk lastig.

Dat was alle vorige weekenden, dus. En dit weekend is het weekend dat ik het wél zou doen. De omzetting.

Het lijkt allemaal vanzelfsprekend: vele tienduizenden weblogs hebben die overstap al ongetwijfeld zonder enig probleem gemaakt, en waarom zou het dan bij ons moeilijker zijn?

Tja, inderdaad. We gebruiken een aantal plugins, en daar begint het eigenlijk al: om te doen wat wij wilden, moesten indertijd een aantal van die plugins aangepast worden. Vorig jaar, en regelmatig eens getweaked ondertussen met aanpassingen van een aantal van die plugins.

Er zàten ook een aantal hacks in WordPress zelf in, maar die zijn ondertussen allemaal weggewerkt en naar plugins geshunted, gelukkig.

Maar bon. Het meesterplan was dus:

  1. Met een backup van de database van Gentblogt op een andere server (Dreamhost, en l’occurence) en ter controle locaal op een eigen systeem de template aanpassen naar de nieuwe versie van WordPress (onder meer de tags moeten helemaal opnieuw, en de kalender, en de comments)
  2. Testen
  3. Gentblogt op de Gentblogt-server backuppen
  4. De layout van de site halen (tijdelijk Gentblogt op de oude layout terugzetten)
  5. Alle plugins afzetten
  6. De nieuwe WordPress in de plaats van de oude WordPress zetten (met alle aangepaste plugins etc.)
  7. Database converteren waar nodig
  8. De plugins aanzetten + controleren
  9. Trefwoorden (tags) omzetten van Ultimate Tag Warrior naar WordPress ingebouwd via de import-functie.
  10. Aangepaste template op site zetten en activeren

Ik zat er niet zo erg mee in, een goede voorbereiding is het halve werk, het is geen tovermagie en zó complex is het ook niet, maar ach…

The best laid plans, ‘t is wel wat. Alles verliep naar wens, behalve de conversie van de tags. Dat zou automagisch moeten gebeuren met een import-ding van WordPress 2.3 zelf, maar helaas: dat liep de soep in.

Ik weet niet waar het aan ligt—ik steek het op een compbinatie van te weinig geheugen, niet-ascii-karakters in de tagnames, misschien dubbels of inconsistenties in de bestaande tags (die met een aangepaste UTW gemaakt waren), en de wet van Murphy.

En dus wordt het manueel aanpaswerk, vannamiddag. Leutig!

In WordPress 2.3 is er een nieuw taxonomie-concept ingevoerd: zowel categorieën als tags (als potentieel nog veel andere zaken) zitten in terms, term_taxonomy en term_relationships. Vroeger zaten de tags in eigen tabellen: tags en post2tag. Ik heb geen zin om te programmeren vandaag, dus het wordt Excel en SQL. 

Stap één: tags omzetten naar terms. Gemakkelijk gedaan, hopladiejee, een paar duizend tags ingevoegd in terms. Al die terms moeten tags worden, da’s een zaak van in term_taxonomy te zeggen dat ze tot de “post_tag”-taxonomie behoren. Ook rap gedaan. Enig probleempje was dat er al een paar artikels aangemaakt en gewijzigd waren sinds de conversie, en dat er naast nieuwe tags een aantal dubbels in zaten, maar alla.

Stap twee: posts moeten via term_relationships verbonden worden met term_taxonomy-items. Dat moet in twee stappen. Eerst weten welke tags in tag welke termen in terms zijn, en dan zoeken waar ze staan in term_taxonomy.

Hm. Weird. Om de één of andere reden zijn er bij de 5000 tags, maar heb ik maar iets meer dan 3000 terms. Misschien was er iets aan de hand met stap één?

Grr. Als ik select tag_id, tag from wp_tags where tag_id in (select distinct tag_id from wp_post2tag) and tag not in (select name from wp_terms) doe (toon alle tags die gekoppeld waren aan een post en die niet in de terms-tabel voorkomen), dan krijg ik 1784 tags. Dedju. Die ga ik dus apart nog eens moeten importeren.

Maar eerst de links leggen tussen wat wél overeenkomt en bestaat. Drie, twee, één:

insert into wp_term_relationships (object_id, term_taxonomy_id) select post_id, term_taxonomy_id from wp_tags, wp_terms, wp_post2tag, wp_term_taxonomy where tag=name and wp_tags.tag_id=wp_post2tag.tag_id and wp_term_taxonomy.term_id=wp_terms.term_id;

Oh de vieze SQL, jaja. Maar kijk:

Query OK, 14285 rows affected (8 min 2.81 sec)
Records: 14657 

Ik ben eens benieuwd… en kijk ja, het schijnt te lukken:

Gbtags

Next up: tags opkuisen.

Elders over misschien hetzelfde

10.03.2006: WP 2.0.2 | 19.08.2012: Variabelen en scoping en dink | 27.03.2012: Die ochtend, aan de telefoon | 05.12.2011: Links van 12 november 2011 tot 5 december 2011 | 09.06.2011: Links van 8 juni 2011 tot 9 juni 2011 | 20.03.2010: Interactief | 14.02.2010: 5 jaar Gentblogt-feest | 08.02.2010: Gentblogt in De Standaard | 29.01.2010: Die keer van Gentblogt | 14.12.2008: Uwged8

4 Comments

Zeg uw gedacht

Navigatie

Vorige entry:

Volgende entry:

» homepagina, archief

Vriendjes

<insert standard disclaimer>

Alles wat hier staat is mijn eigen opinie. Het wordt niet nagelezen of goedgekeurd door mijn werkgever voor het on-line komt, en ik bied geen enkele garantie voor kwaliteit of correctheid.

Mijn werkgever is het niet noodzakelijk eens met wat ik schrijf, en het spreekt vanzelf dat hij dan ook op geen enkele wijze aansprakelijk kan zijn voor wat ik hier publiceer.