Vallen, opstaan, rennen met WP

Powered by WP

Deze site draait op WordPress. (Of dacht je nou echt WordPerfect?!) Dit is in tegenstelling tot de eerdere Shipslogs, die op MT draaien. WordPress is – in het (af)kort – een ok, OSS CMS voor weblogs.

Ik zal hier al mijn goede ervaringen, blunders, en andere wijze lessen met WordPress bijhouden. Terzijde: Ik ben zelf geen echte Open-Source aanhanger, maar ’t is natuurlijk prachtig. Mijn dank gaat absoluut uit naar alle ontwikkelaars die al dit moois in elkaar gezet hebben. En onderhouden. En gratis verspreiden.

WordPress Installatie

WordPress installeren viel niet mee. Maar dat kwam voornamelijk doordat ik nog geen PHP of MySQL had draaien. De “hypertext preprocessor” PHP is echter relatief simpel aan de praat te krijgen. En de database MySQL ook, zodra je MyAdmin ontdekt en werkend hebt.

Als de basis draait, en je hebt site aangemaakt en de (virtual) directorie(s) afgevuld met de inhoud van het WP-zipbestand kan WordPress met een makkelijk initialisatie-script aan de gang gekregen worden. Hierdoor worden de juiste tabellen in de database aangemaakt, die je hiervoor wel in MySQL moet hebben gecreëerd.

Eitje, toch?

En een leuk voordeel was dat m’n bestaande Shipslogs, draaiend op MT, het een stuk sneller doen. Na een automatische conversie kunnen ze ook van MySQL gebruik maken!

WordPress Localization (i10n) en Internationalization (i18n)

WordPress is ‘makkelijk’ te vertalen, aldus hun Development Blog en de WP-Wiki. En inderdaad: Zie hier nl_NL.po, mijn eigen vertaling in het Nederlands en nl_NL.mo, de bijbehorende binaire versie van dit bestand.

Het bewerken van de .po kan in iedere tekst-editor, het converteren de .mo deed ik met gettext. (Het commando hiervoor is msgfmt -o nl_NL.mo nl_NL.po.) Deze laatste plaats je vervolgens in de directory /wp-includes/languages/. Tot slot voeg je deze ene, belangrijke maar vaak vergeten regel aan wp_config.php toe:

define(‘WPLANG’, ‘nl_NL’);

Et voilá, le blog est Hollandaise. Piece of cake. No problemo. Capice?

(En natuurlijk heb ik even braaf de nodige informatie op de WP-Wiki geplaatst.)

Breadcrumbs

De broodkruimeltjes van Mark Shields klopten voor geen meter, zowel qua functie/code als qua HTML-semantiek. Ik heb de plugin wat herschreven, in afwachting van een verbeterde versie: eentje die het wel doet onder ‘friendly urls’ en ook subcategorieën aankan.

Friendly URLS

De volgende stap is het aanpassen van de permalinks en andere interne links, bijvoorbeeld /datum/berichtnaam in plaats van /index.php?p=x... Aangezien mijn WP draait op een IIS-server, werkt mod-rewrite niet. “Met ISAPI_Rewrite moet dat wel gaan lukken, dacht ik. Dat was ook zo, maar het is een hele klus. Uiteindelijk weet ik de regels zo te buigen dat alles werkt (behalve de broodkruimels, die nu niet meer werken). Hier is m’n httpd.ini:

# Category feed
RewriteRule ^/lovefool/categorie/(.*)/(feed|rdf|rss|rss2|atom)/?$ /lovefool/wp-feed.php?category_name=$1&feed=$2 [I,U]
# Category only
RewriteRule ^/lovefool/categorie/?(.*) /lovefool/index.php?category_name=$1 [I,U]

# Author feed
RewriteRule ^/lovefool/author/(.*)/(feed|rdf|rss|rss2|atom)/?$ /lovefool/wp-feed.php?author_name=$1&feed=$2 [I,U]
# Author only
RewriteRule ^/lovefool/author/?(.*) /lovefool/index.php?author_name=$1 [I,U]

#Date (and postname (and page))
RewriteRule ^/lovefool/([0-9]{4})/?([0-9]{1,2})?/?([0-9]{1,2})?/?([_0-9a-z-]+)?/?([0-9]+)?/?$ /lovefool/index.php?year=$1&monthnum=$2&day=$3&name=$4&page=$5 [I,U]

#Date? and postname feed: comments
RewriteRule ^/lovefool/([0-9]{4})/?([0-9]{1,2})/([0-9]{1,2})/([_0-9a-z-]+)/(feed|rdf|rss|rss2|atom)/?$ /lovefool/wp-feed.php?year=$1&monthnum=$2&day=$3&name=$4&feed=$5 [I,U]

#Date? and name trackback
RewriteRule ^/lovefool/([0-9]{4})/?([0-9]{1,2})/([0-9]{1,2})/([_0-9a-z-]+)/trackback/?$ /lovefool/wp-trackback.php?year=$1&monthnum=$2&day=$3&name=$4 [I]

#Common feed
RewriteRule ^/lovefool/feed/?([_0-9a-z-]+)?/?$ /lovefool/wp-feed.php?feed=$1 [I,U]

#Common feed with Comments
RewriteRule ^/lovefool/comments/feed/?([_0-9a-z-]+)?/?$ /lovefool/wp-feed.php?feed=$1&withcomments=1 [I,U]

#Postname only
RewriteRule ^/lovefool/?([_0-9a-z-]+)/?$ /lovefool/index.php?name=$1&page=$2 [I,U]

De bijbehorende WP-instellingen voor permalinks zijn dan /categorie en /%year%/%monthnum%/%day%/%postname%/ . Alles lijkt nu te werken behalve de Trackback, waar in de huidige versie van WP (v1.20, codenaam Mingus) een bug voor is gerapporteerd.

Op naar de templates…

Templates en CSS

Wat een zooitje, die templates! (Of moet ik gewoon even wennen, na m’n eigenhandig opgeschoonde MT-templates?) Er zitten her-en-der i.e.g. wat semantiek- en validatiefouten in: de verkeerde CSS-classes voor de verkeerde objecten, soms een ‘ i.p.v. een “, en onvoldoende functionaliteit. Maar daar komen we wel uit:

@@@Nog aan te tekenen@@@

Plugins/Hacks/etc.

Voor het uploaden (van o.a. plaatjes) moest de php-extensie GD worden geïnstalleerd. Bovendien was deze aanpassing uit de WP F.A.Q. erg handig.
De plugins Urlencoded Permalinks en de Acronym Replacer leken me wel handig.

3 gedachten over “Vallen, opstaan, rennen met WP

  1. Pingback: Wordpress 2.0 - s/y Lovefool.nl

  2. Interessant dat je deze kennis met ons wilt delen! Ik heb veel aan dit artikel gehad tot nu toe.

    Zelf ben ik ook volop aan het experimenteren met mijn wp-site. Kan je me met het volgende misschien helpen? Ik kan namelijk niet meer de bestanden in de root van mijn website (bijv. sitemap.xml) aanroepen sinds ik het httpd.ini-bestand heb geschreven en geupload…

    Weet je misschien of ik hiervoor een regel kan toevoegen?

  3. Hey Bas (leuk, nog een naamgenoot!)

    Inmiddels draai ik WP al lang niet meer op IIS. Eigenlijk zou dat mijn tip voor je zijn: regel ergens een Apache-host. Altijd makkelijker om WP te draaien, met mod-rewrite enz. En meestal zijn ze nog goedkoper ook!

    Het geklooi met httpd.ini en alle IIS-ellende heb ik dus al een tijdje niet meer hoeven doen. Maar ik weet nog dat iedere upgrade van WordPress destijds weer nieuwe “verrassingen” bracht.

    Je zou volgens mij inderdaad regels voor uitzonderingen moeten maken voor de bestanden in de root van je site. Want nu wordt /sitemap.xml direct afgehandeld door /index.php… en die kan daar niks mee.

    Succes!

Reacties zijn gesloten.