Michel Vuijlsteke's weblog

Tales of Drudgery & Boredom.

Tag: wordpress (pagina 1 van 2)

Variabelen en scoping en dink

Grmbl, grmbl. 

Ik maak een custom taxonomy aan in WordPress, ik geef die de propere naam “author”, en alles lijkt in orde te zijn: ik kan aan posts meer dan één author geven (in plaats van standaard één, die dan nog eens een WordPress-user moet zijn), daar zijn archieven van, en tag clouds en watnog, en dat linkt allemaal proper naar elkaar zonder al te veel moeite.

De auteurs, om ze alfabetische te kunnen sorteren, sla ik op als “achternaam – voornaam”, en als ze dan getoond moeten worden, zet ik voornaam voor achternaam. En neen, ik kan er geen rol bij zetten (schrijver, illustrator, vertaler, …), maar bon, ’t is geen boekendatabase die ik aan het maken ben. 

En alles werkt goed tot er een auteur met één naam toegevoegd wordt, bijvoorbeeld “Moebius” als ik er niet “Giraud – Jean” van zou maken: daar geeft WordPress een lege archiefpagina voor. 


Debug, debug, debug. Blijkt dat de query om de lijst van posts van een auteur met voor- en achternaam er zo uitziet:

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (246) ) AND (wp_posts.post_author != 0) AND wp_posts.post_type IN ('post', 'page', 'attachment') AND (wp_posts.post_status = 'publish' OR wp_posts.post_author = 1 AND wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 20

en een query voor een auteur met één naam zo:

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (138) ) AND (wp_posts.post_author = 0) AND wp_posts.post_type IN ('post', 'page', 'attachment') AND (wp_posts.post_status = 'publish' OR wp_posts.post_author = 1 AND wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 20

Het verschil al gezien? Ha, inderdaad de ene doet 

(wp_posts.post_author != 0)

de andere doet 

(wp_posts.post_author = 0)

Toink? Als de taxonomieterm twee of meer woorden bevat, zoek dan posts waarvan de WordPress-auteur niet nul is, en anders: zoek posts waarvan de WordPress-auteur wél nul is (en die user bestaat niet). 

Wat in de WordPress-code gewroet, maar niet enorm vreselijk veel zin om daar in te gaan prutsen — en dan maar mijn taxonomie hernoemd van “author” naar “myauthor”: 

update wp_term_taxonomy taxonomy='myauthor' where taxonomy='author';

en dan in functions.php 

register_taxonomy('author', 'post', array( 'hierarchical' => false, …

vervangen door 

register_taxonomy('myauthor', 'post', array( 'hierarchical' => false, …

en taxonomy-author.php hernomen naar taxonomy-myauthor.php: hey presto, alles werkt zoals het zou moeten gewerkt hebben. 

Ik heb niet enorm veel goesting om te gaan kijken wat het precies was, maar ik kan niet anders dan vermoeden dat er érgens een variabele de naam van de taxonomie krijgt ($author in dit geval) en dat die een andere variabele $author overschrijft die ergens gebruikt moet worden om godweetwat in op te slaan, en dat dat op de één of andere manier verkeerd loopt onder zeer specifieke voorwaarden. 

Een interessante bug, denk ik, want treedt herhaalbaar op, zou niet mogen optreden, en is wellicht gemakkelijk te verbeteren. 

Als ik dan nog eens tijd en goesting heb, maak ik een tiketje aan. 

Links van 12 november 2011 tot 5 december 2011

Arcade Improv: Humans Pretending to Be Videogames – Waxy.org
Instantly, Mike and Jerry understood, along with everyone in the audience born before 1978.

Catherine Young & Family, Page One
A family working in the Tifton (Ga.) Cotton Mill. Mrs. A.J. Young works in mill and at home. Nell (oldest girl) alternates in mill with mother. Mammy (next girl) runs 2 sides. Mary (next) runs 1 1/2 sides. Elic (oldest boy) works regularly. Eddie (next girl) helps in mill, sticks on bobbins. Four smallest children not working yet. The mother said she earns $4.50 a week and all the children earn $4.50 a week. Husband died and left her with 11 children. 2 of them went off and got married. The family left the farm 2 years ago to work in the mill. January 22, 1909. Location: Tifton, Georgia. Photo by Lewis Hine.

Sass – Syntactically Awesome Stylesheets
Sass makes CSS fun again. Sass is an extension of CSS3, adding nested rules, variables, mixins, selector inheritance, and more. It’s translated to well-formatted, standard CSS using the command line tool or a web-framework plugin.

Memoires of a Heroinhead
It was over a year that I had been in France. I had gotten clean and then gotten dirty again. So it was good news one day when my mother phoned.

“Shane, there's a little surprise coming over your way! That fucking Irish John has just been around here, bought me two rocks of white and left twenty five quid to get you three of choice and post over. And you ya little bastard, you never told me he 'ad AIDS! An I've been sharing my fuckin' crackpipe with 'im!”

SFE: Science Fiction Encyclopedia
Welcome to the beta text of the third edition of The Encyclopedia of Science Fiction. Some sample entries are below. Alternatively, you can browse the Encyclopedia through the search box above or the categories in the grey bar above.

Paris Review – The Grand Map, Avi Steinberg
“And then came the grandest idea of all! We actually made a map of the country, on the scale of a mile to the mile!”
“Have you used it much?” I enquired.
“It has never been spread out, yet,” said Mein Herr. “The farmers objected: they said it would cover the whole country, and shut out the sunlight! So we now use the country itself, as its own map, and I assure you it does nearly as well.”

Final report of the commercial starship Nostromo, third officer reporting. | MetaFilter
The Nostromo model from the first Alien movie sat outside in the rain for over two decades before it was bought by The Prop Store in 2007. They sent it to Grant McCune Design to restore it to its previous glory.

GROGNARDIA: Retrospective: Barbarian Prince
If you're the least bit curious about Barbarian Prince, you can download a legal copy for free here.

Nate Hallinan Portfolio
The Smurf is actually the result of a symbiotic relationship
between two organisms. We believe that Smurfs put their
'embryos' in the button of a developing mushroom. From a
distance, Smurfs seem like they are wearing a hat and pants
but as you can see this is a fallacy. The fungus provides
camouflage and protective epidermal layers for the creature,
while the creature provides nutrients and mobility for the
spreading of spores.

Research:Wikimedia Summer of Research 2011/Summary of Findings – Meta
This is the summary of findings from the Wikimedia Foundation Summer of Research, a program in the Foundation's Community Department which brought together eight academic researchers from around the globe to study the dynamics of the Wikipedia editing community.

How Star Wars Should Have Ended: Reflections on Taste, The Expanded Universe & Radical Politics « Human Iterations
Basically a totalitarian Empire makes sense, a rotting and unsustainable Republic makes sense, a teemingly complex anarchic and increasingly more nomadic post-collapse culture also makes sense.  But a more or less decent galactic-sized democracy instantly formed and accepted out of the goodness of all the Rebel’s hearts?  Totally unbelievable.  And basically a stubborn Liberal lack of imagination.

Main § Digital Atlas of Roman and Medieval Civilization
The Digital Atlas of Roman and Medieval Civilization (DARMC) makes freely available on the internet the best available materials for a Geographic Information Systems (GIS) approach to mapping and spatial analysis of the Roman and medieval worlds. DARMC allows innovative spatial and temporal analyses of all aspects of the civilizations of western Eurasia in the first 1500 years of our era, as well as the generation of original maps illustrating differing aspects of ancient and medieval civilization.

Hugo Blogging – Connie Willis May Be The Worst Writer In Existence « Sci-Ence! Justice Leak!
"I have now discovered a way to produce a masterpiece. Just read Blackout/All Clear by Connie Willis, do the exact opposite of what she does, and you will have the greatest work in the history of English literature." (Come come now – surely it can't be much worse than Dan Brown?)

The sad, sad demise of Greenpeace | COSMOS magazine
GREENPEACE WAS ONCE a friend of science, helping bring attention to important but ignored environmental research. These days, it’s a ratbag rabble of intellectual cowards intent on peddling an agenda, whatever the scientific evidence.

The 1140px Grid · Fluid down to mobile
The 1140 grid fits perfectly into a 1280 monitor. On smaller monitors it becomes fluid and adapts to the width of the browser.

A cherry picking tale, and an update on spinal manipulation science « Alternative Medicine « Health « Skeptic North
Spinal manipulative therapy (SMT) has long enjoyed a solid reputation for the treatment of so-called “mechanical” low back pain, and is widely used by physical therapists as well as chiropractors. Even skeptics tend to give it a pass, regarding it as the one thing chiropractors offer that we don’t really have a complaint with, much the way we used to think maybe acupuncture had something going for it, until better evidence crushed our optimism. For instance, just recently Dr. David Gorski — as tough-minded a quackery critic as they come — casually mentioned that “no one argues that … manipulative therapies can’t help back pain.” Actually, skeptics who’ve been following the SMT science are now arguing exactly that.

Historical Meet-Ups –   Samuel Beckett Playwright, novelist, and Nobel…

The price of ebooks – oxylogos.com
Think the book industry learned from the mistakes the music and film industry made?

Guess again.

They are quickly heading to the top of the charts of sheer stupidity. And what they don't realise is that, unlike the movie industry and—though to a somewhat lesser extent— the music industry, they have even less of a legitimate ‘raison d'être’ than their counterparts in those industries.

Gigawatt {The Illuminated Mixtapes}
Gelijk een statische versie van http://musichunterapp.com/ en door echte mensen gedaan.

Villa La Vigie – Koksijde – Bezoeker
Na de oorlog werden de twee bunkers ontdaan van alle uitrusting en rails. De twee bouwwerken fungeerden een tijdje als toeristische bezienswaardigheid. Begin de jaren '20 werd één van de bunkers afgebroken. Rond 1923 kreeg aannemer Remi Rys uit Koksijde de opdracht om boven de resterende bunker een villa te bouwen en de bestaande oorlogsconstructie te integreren in het nieuwe project.

Lernert & Sander: Natural Beauty – NOWNESS
Mission Statement: We wanted to apply 365 layers of makeup in one day to see how much is needed to go from a natural look to an outrageous one.

A celebration of the writing and art of Mervyn Peake | Books | The Guardian
Mervyn Peake, creator of Gormenghast, is now recognised as a brilliant novelist and artist. Michael Moorcock, China Miéville, Hilary Spurling and AL Kennedy celebrate his achievements

Extinguishing and Understand Barking Dog Behavior
If your dog barks and you yell at him to shut up, you are reinforcing the barking.

Top 5 Ways to Build a WordPress Site that’s Easy for Your Clients
Here are our top 5 tips for simplifying the WordPress back end so that your clients will find it much easier to use, and you will find it much easier to teach them how to use it!

Restoring a Photograph from the 1870sTop Dog Imaging
"From here, I began the laborious process of restoration, which involved a prodigious amount of retouching. The process took about four hours." Of hoe een mens een uitgebreide post kan schrijven met veel beeldjes erbij, en op Kottke vermeld worden en alles — met rotslecht werk.

Dissecting an Episode of MythBusters
27% of the time is spent watching advertising.

Modernist Cuisine: The Art and Science of Cooking
"The most important book in the culinary arts since Escoffier" — Modernist Cuisine is a six-volume, 2,438-page set that is des­tined to rein­vent cook­ing. The lav­ishly illus­trated books use thou­sands of orig­i­nal images to make the sci­ence and tech­nol­ogy clear and engaging.

How Apple re-cut Final Cut Pro for the better | Video | Creative Notes | Macworld
It's not dumbing down, it's targeting

Jennifer Pournelle’s The Mote in God’s Eye sequel actually looks interesting | Wis[s]e Words
Intriguing — de dochter van de meneer van Chaos Manor schrijft een vervolg: "Sequels written to well loved science fiction classics by the children of the original writer never turn out right therefore you can safely ignore them. It’s a rule that saved me a lot of frustration, but I think I might break it for Jennifer Pournelle’s Outies, a sequel to her father’s and Larry Niven’s The Mote in God’s Eye. "

Zo, dat zijn veel vissen! :: nrc.nl
Bloody hel. Scary! "Sinds enige tijd hebben Amerikaanse wateren, met name de Mississippi en haar aftakkingen, bezoek van de Aziatische karper. In 2010 begon dat bezoek onaangenaam te worden."

My Opposition – Wikipedia, the free encyclopedia
After the war many Germans would insist they knew nothing at all about The Holocaust. More recently, Holocaust deniers have questioned the extent, and even the existence of the Holocaust. Friedrich Kellner's diary counters such suggestions.

Fietsherstel Aan Huis | omdat service belangrijk is !
Heeft uw fiets een lekke band, is de verlichting defect, of heeft uw fiets andere gebreken?
U kocht uw fiets in een grootwarenhuis, waar geen herstellingen mogelijk zijn?
U heeft een tandem, bakfiets, elektrische of andere fiets met extreme afmetingen?
Wilt u geen beschadigingen meer aan de kofferbak van de auto?

Dan kunt u gebruik maken van een unieke service: wij komen uw fiets bij u herstellen.

N Korean children begging, army starving: exclusive – ABC News (Australian Broadcasting Corporation)
Footage shot inside North Korea and obtained by the ABC has revealed the extent of chronic food shortages and malnutrition inside the secretive state.

History Cookbook – Cookit!
Welcome to the history cookbook. Do you know what the Vikings ate for dinner? What a typical meal of a wealthy family in Roman Britain consisted of, or what food was like in a Victorian Workhouse? Why not drop into history cookbook and find out? This project looks at the food of the past and how this influenced the health of the people living in each time period. You can also try some of the recipes for yourself. We have a wide range of historical recipes from Brown Bread Ice Cream to Gruel (Why not see if you would be asking for more – just like Oliver Twist).

Dear Emma B : Pharyngula
Schoon — The question you can always ask is, "How do you know that?"

Everything You Think You Know About the Collapse of the Soviet Union Is Wrong – By Leon Aron | Foreign Policy
Every revolution is a surprise. Still, the latest Russian Revolution must be counted among the greatest of surprises. In the years leading up to 1991, virtually no Western expert, scholar, official, or politician foresaw the impending collapse of the Soviet Union, and with it one-party dictatorship, the state-owned economy, and the Kremlin's control over its domestic and Eastern European empires. Neither, with one exception, did Soviet dissidents nor, judging by their memoirs, future revolutionaries themselves. When Mikhail Gorbachev became general secretary of the Communist Party in March 1985, none of his contemporaries anticipated a revolutionary crisis. Although there were disagreements over the size and depth of the Soviet system's problems, no one thought them to be life-threatening, at least not anytime soon.

the A.I. is a lie » #AltDevBlogADay
I can tell you right now there is no I in A.I., and nor should there be.

Arrested Westeros
What happens when Game of Thrones meets Arrested Development.

Verdediging Belfortploeg zaterdag 18 juni | Belfort ploeg
Ik zou bijna sympathie krijgen voor Francis Van den Eynde c.s.

Hot Dudes with Kittens from Funny Or Die, Sam Trammell, Romany Malco, Sean Carrigan, Mark Valley, Matt Dallas, Tanc Sade, Matt Lanter, Ryan Eggold, Chad Faust, ellhoof, and Shauna O’Toole
Who doesn't love hot men holding cats and kittens? Oh you don't? Too bad, this one is… for the ladies.

GET LAMP: John Romero Interview : Jason Scott : Free Download & Streaming : Internet Archive
Romero's path crossed with Infocom's in the late 1980s; while working for a company he co-founded called Ideas From the Deep, he wrote an operating system for the Apple II that was used in the last round of Infocom games: Journey, Shogun, Zork Zero, and Arthur. He didn't get to meet anybody but he was proud of his contribution and offered to be interviewed.

bradley’s almanac – the sims torture test (a mirror site)
I guess people actually play this game to make their little sims happy. I'll admit that i did that for awhile, but to be honest, it just got boring. So of course I reverted to my typical gaming pattern of torturing innocents to death.

Coilhouse » Blog Archive » Resonance: Where Sound Meets Geometry
In this 11-minute clip, a group of over 30 animators and sound artists teamed up to create short pieces between 12 and 20 seconds with the aim to ”explore the relationship between geometry and audio in unique ways.”

YouTube – Prora-Das erste KdF bad
Kraft durch Freude.

CK01 Standard/Honors Chemistry Kit – Home
Droool. Ik zou mijn linkerarm gegeven hebben voor zoiets als ik klein was: "Because chemistry is widely considered to be the most difficult lab course to do well—particularly on a tight budget—we offer the CK01 Standard/Honors Home School Chemistry Laboratory Kit. It provides a comprehensive, rigorous laboratory component for a first-year high school chemistry course, and does so affordably. With the exception of standard household items (such as table salt, sugar, vinegar, aluminum foil, foam cups, and so on) and other minor items that are readily available locally, the kit contains all of the special equipment and chemicals you'll need for a complete chemistry lab course."

Michele Bachmann’s Holy War | Rolling Stone Politics
Bachmann lies because she can't help it, because it's a built-in component of both her genetics and her ideology. She is at once the most entertaining and the most dangerous kind of liar, a turbocharged cross between a born bullshit artist and a religious fanatic, for whom lying to the infidel is a kind of holy duty.

What is International Baccalaureate?
Hierzie, dat ge 't weet: "IBO lumps Christianity … into the category of what it calls "fundamentalism" — along with the Taliban and various terrorist groups, saying that these "fundamentalist" groups are all "dangerous." It would be difficult to imagine a more clear, and repugnant, attack on Christianity." "While IBO undermines Christianity, it also advocates its own religion. IBO promotes the worldview of New Age-Pantheism guru William Butler Yeats … Another New Age leader, Joseph Campbell, is often required reading for IBO students. Like Yeats, Campbell aggressively promotes "inclusive" New Age-Pantheistic doctrines while undermining Christianity."

Er zijn toch rare mensen in de wereld.

Wikipedia talk:Dispute resolution – Wikipedia, the free encyclopedia

Talk:Circumflex – Wikipedia, the free encyclopedia
WHOEVER IS IN CHARGE HERE MUST IMMEDIATELY TRANSMIT THIS URGENT ESSENTIAL ERROR/FEIL TO GOOGLE-TRANSLATE, which I have just noticed myself today, 18, May, 2011, Anoo Domini, which is AN INEXCUSABLE ERROR, without PRECENT in ALL of the history I have used Google-translate for all sorts of purposes and reasons.

Efficiënte SQL

Ik was een template aan het proberen in WordPress 2.6 draaiende te krijgen, maar het deed niets.

’t Is te zeggen: een vieze fout, zoals WordPress er wel vaker kan geven–kaboem, en geen verdere uitleg.

Wat prutsen verder: bleek dat er een query in een plugin zat die dit deed:

SELECT comment_post_ID, post_title FROM (comments LEFT JOIN posts ON (comment_post_ID = ID)) WHERE comment_approved = ‘1’ AND posts.post_status=’publish’ ORDER BY comment_date DESC

Om ze dan af te lopen tot een maximum van tien commentaren bij tien posts.

Zucht. De opgegeven reden was dat het ook moest werken met een versie van MySQL die geen LIMIT doet.



Ik voel mij ongemakkelijk bij Nederlandse vertalingen van software.


En al helemaal als ze niet consistent zijn. Wat moet er nu gebeuren? Updaten, opwaarderen of bijwerken? En waarom zou ik mij daar vragen bij moeten stellen?

Ik wou dat “ge-updatet” niet zo’n lastig woord was om te schrijven.

Tiens, en ben ik echt de enige op het hele interweb waarbij WordPress 2.5 problemen geeft met XML/RPC? Als ik met Blogjet dingen wil posten, geeft hij me een vieze “Verkeerde loginnaam/wachtwoord combinatie”-fout (“Bad login/pass combination.”)

Niets ingrijpends aan de hand, en ik heb geen zin om er veel naar te zoeken, dus ik heb in xmlrpc.php in login_pass_ok() geprutst: waar if (!user_pass_ok($user_login, $user_pass)) stond, staat nu if ($user_login=='mijnlogin' && $user_pass='mijnwachtwoord').

Maar toch. Vreemd.

(Oh, en voor die vertaling: bijwerken en opwaarderen zijn andere zaken, dat weet ik ook wel. En ik ben bereid om te vermoeden dan “upgrade WordPress” er nog staat omdat er nog geen volledige vertaling voor WordPress 2.5 naar Nederlands is.)

(Maar toch. Creepy.)

Een nieuwe website, en dergelijke

Ik ben een website aan het maken, die zal beheerd worden door mogelijks heel veel verschillende mensen.

Er zijn geen deadlines, er is geen budget, er zijn niet echt richtlijnen. Dat is redelijk verlammen aan de ene kant, maar andere andere kant ook wel een groot gemak.

In de loop van vorige week er dan maar ernstig aan begonnen, in eigen beheer en op eigen tempo—na een paar maand schemerbestaan op Dreamhost:

  • Stukje webruimte gekocht bij Openminds: mensen met een uitstekende reputatie, en ook Gents. De eindgebruiker zit ook in Gent en zat er heel erg mee in dat ze naar Amerika zouden moeten gaan voor support en zo.
    Ik heb er een halve gigabyte ruimte, maar ik ben niet van plan er veel beelden en geluid en filmpjes en zo op te zetten.
  • Foto’s: Flickr pro account aangemaakt.
  • Filmpjes: Youtube-account aangemaakt.
  • Andere grote bestanden: een media.domeinnaam.tld-account aangemaakt bij Dreamhost, voor voor (virtueel) onbeperkt downloaden van pakweg zware Powerpoints of dergelijke.
  • CMS geïnstalleerd: Drupal 6.0. Na jàren zagen en doen, uiteindelijk dan toch.
  • Mail: GMail. Om één centraal adres te hebben, waar ook nog eens een redactiekalender en Google docs en zo kunnen aan hangen. Het Gmail-adres zal wel niet getoond worden, het zal een info@ worden die er naar verwijst, zoals bij Gentblogt.
  • Statistieken: Google Analytics tracker geïnstalleerd.

Mensen, mensen, mensen. Zó een enorm gemak dat al die dingen zijn, en zó dat ik er naar uitkijk.

Bah, WordPress

Van die momenten dat ik WordPress een stamp zou geven: als het in allerlei bochten wringen wordt om categorieën en pagina’s en entries te laten doen wat manueel op een ik en een gij zou kunnen gedaan worden.

…maar dan moet die hele website onderhouden worden door een leek, en moeten er beelden doorgestuurd worden en automatisch gerescaled en alles, en slaat de negatieve goesting om het wiel opnieuw uit te vinden toe.

…en dus blijf ik maar wat verder klooien met WordPress en templates. Zucht.

Ik heb het zó enorm veel liever als ik andere mensen mag zeggen hoe ik het wil, ge kunt het u niet inbeelden.

Advertenties, nog eens

Stefan van Adhese, de leperd, herinnerde me vanmorgen aan de uitstekende Who Sees Ads-plugin, die het mogelijk maakt om advertenties te tonen of te verbergen volgens allerlei criteria, van eenvoudig (toon altijd advertenties aan mensen die via search engines binnen komen, toon déze advertenties aan mensen uit België die Firefox hebben), tot de meest ingewikkelde die men zich kan bedenken wegens alsdat men zelf scripts kan doen.

Ik wil het eens een maand of zo proberen, en zien wat het geeft, maar die advertenties beginnen me nu al zwaar tegen te steken. En dus heb ik er een tussenoplossing in gestoken: mensen die hier regelmatig komen, krijgen geen advertenties te zien.

…weird, trouwens: zo lang voor gezaagd, voor die AdSense, en nu nu ze er staan, voel ik er me helemaal niet zo goed bij. Ik voel me een verrader en opzichte van Adhese, hoe sentimenteel is dat niet, maat.

WordPress naar Drupal

Ik hoor dat WordPress niet ondersteund wordt op de servers waar ik een stuk of vier-vijf websites zou willen zetten die ik aan het maken ben. Drupal wel, daarentegen.

En dus moet die hele zooi, die net zo proper werkte in WordPress, naar Drupal overgezet worden. Dat, of op een Dreamhost-achtige server verder werken voor de goedkoop.

Ik heb er niet echt veel zin in, in Drupal, want dat lijkt me veel werk om het voor een doorsnee-niet-ontwikkelaar-gebruiker een beetje gemakkelijk te gebruiken te maken, maar hey, wie weet vergis ik me wel helemaal. En ja, ik weet het: dit is de honderachtentwaalfde keer dat ik dezelfde boodschap over precies dit schrijf.

Het themen is in alle geval al doodeenvoudig: men neme een werkende html-pagina, en men droppe er de volgende stukken in:

In <head>

    <link rel="stylesheet" href="/<?php echo $directory;?>/styles.css" type="text/css" />
    <link rel="alternate" type="application/atom+xml" title="" href="/rss.xml" />
    <?php print $styles ?>
    <?php print $scripts ?>
    <?php print $head ?>
    <title><?php print $head_title ?></title>


<?php print $search_box ?>


<?php if (isset($primary_links)) { ?><?php print theme('links', $primary_links) ?><?php } ?>


<?php print $sidebar_left ?>


<h2><?php print $title ?></h2>
<div class="tabs"><?php print $tabs ?></div>
<?php print $help ?>
<?php print $messages ?>
<?php print $content; ?> 


<?php print $closure ?>

En hopla, meer dan dat had ik niet nodig om het allemaal (althans tot een eerste approximatie) te dupliceren.

Message to de mannen van drupal.org, trouwens: dit is geen erg goede pagina. En ook: een theming overview beginnen met “in versie 4.5 was het zó maar in versie 4.7 is het nu zó en zó is hoe een anatal mensen het gedaan hebben” is denk ik ook zo geen goed idee.

Het kan natuurlijk zijn dat ik daar speciaal in ben, maar als ik een uitleg krijg over iets, dan heb ik het liefst iets dat enorm snel werkt, en dan één degelijk kader, daarna wat meer uitbreiding en verdieping, en dàn pas alle mogelijke legacy stuff en watnog.

Jaja, ik weet het ook: het is een wiki, en ik kan er zelf in beginnen schrijven. Grrr dat ik te weinig tijd heb.

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:


Next up: tags opkuisen.


Trr, ‘t was weer helemaal in orde vandaag van de spamboeren:


Klik voor een stukje detail: ‘t waren er weer eens ettelijke honderden, de ene na de andere, en de ene al even doorschijnend als de andere.


Dreamhost: het verschil tussen communicatie en geen communicatie.

Als ze nu nog iets zouden doen aan hun helpdesk… alhoewel: you get what you pay for, en ik betaal er praktisch niets. Dus ik mag niet klagen, vermoed ik.

Ik ga denk ik in de volgende weken toch nog eens een poging in de richting doen van Dreamhost: een website maken met Drupal.

WordPress is hoegenaamd niet verkeerd om een weblog mee te maken, maar als er voor een gegeven pagina meer dan honderd queries moeten over en weer gesleurd worden naar de database, dan is er toch wel iets ernstig mis met hoe het allemaal werkt.

Doe het dan zelf beter?

Nah: mijn dagen van het-wiel-opnieuw-uitvinden zijn nu echt wel definitief voorbij. Ja, een website als Gentblogt is niet moeilijk opnieuw te maken in PHP of iets dotnet-achtigs of java-achtigs (niet mis met ColdFusion trouwens). En ja, het zou allemaal veel performanter zijn en watnog. Maar ik heb er niet de minste zin in.

Bouw betere plugins voor WordPress?

Tja. WordPress en plugins, ‘t is wat. Als je je houdt aan de regels van een platform als WordPress, en het allemaal proper volgens de regels doet, dan werk je noodgedwongen op een afstandje van de database zelf.

Logisch natuurlijk, zonder abstractie kun je zo goed een aparte php-pagina op de server zetten om je ding te doen, en to hell with portability.

In de praktijk komt het er bij een min of meer complexe WordPress-site, zoals Gentblogt er één is, uiteindelijk toch op neer dat je verbastaardiseringen gaat doen, en links en rechts een query bijschrijft, links en rechts in de core files van WordPress zelf gaat zitten moosen.

Wat dan uiteraard probleempjes geeft bij upgrades, zoals nu naar van 2.0.3 naar 2.0.4.

Zoek dan een ander platform?

Wel, ja dus. Ik ga eens proberen wat Drupal geeft. Op Dreamhost dus. Met een andere site van mij.

Het is alweer een tijd geleden dat ik nog eens een Drupal in gang gestoken had, en toendertijd nooit echt voorbij de basics gegaan, maar nu ga ik het eens echt en volledig doen. Om te zien. Eerst met een eigen site, misschien Tuinsafari die toch dringend eens een update moet krijgen, en dan eens zien hoe eenvoudig of moeilijk ik er alles wat Gentblogt nu doet, in krijg.

Ik had een trouwens tijdje geleden Daisy proberen in gang stampen, maar da’s vastgelopen op de één of andere syntaxfout ergens. Ik zal er Steven eens mee lastig vallen als hij terug is uit Frankrijk. 🙂

Geschreven al luisterend naar: Boudewijn De Groot – Het eiland in de verte – De vondeling van Ameland


…dat is het geluid van mijn hart dat bloedt.

Ik ben aan een WordPress-template aan het programmeerderen.

Niet “aan het programmeren”. Want “programmeren”, dat impliceert serieus werken. WordPress moedigt serieus werken niet aan.

Scheiding tussen inhoud en presentatie is er nauwelijks, abstractie wordt er nauwelijks gemaakt, en vies werken wordt praktisch aangemoedigd.

Het is dan ook altijd weer schipperen tussen binnen de lijntjes van de WordPress-functies te werken en een plugin schrijven en gewoon brutekracht hap smijt MySQL-queries en PHP te doen… vies, vies, vies. Ick ick ick.

En het stomme van de zaak: uiteindelijk zijn dat allemaal zo geen ingewikkelde zaken, en uiteindelijk heb ik soms de indruk dat het bijna gemakkelijker zou zijn om het allemaal zelf te programmeren.

Tot ik kijk wat er allemaal zou moeten gedaan worden, en dat het toch wel weer het wiel uitvinden zou worden… urgh ack crap.

Toch maar eens kijken naar een betere oplossing dan WordPress? Drupal toch nog?


Prutsen en doen

‘t Is niet genoeg dat ik op het werk met css en dingen bezig ben, nà mijn uren is het ook van dat: trekken en duwen en duwen en trekken aan templates en dingen in WordPress.

Eigenlijk feitelijk is dat wel wijs, zo prutsen met templates. Hier ook weer: gewoon het hoofd erbij houden, niet panikeren, en met enige regelmaat wat afstand nemen en een reality check uitvoeren.

Zoals daarnet: ik gebruik een aantal plugins en wat eigen php om een aantal dingen te doen die WordPress niet van zichzelf kan doen.  Dat geeft als gevolg dat ik door drie keer gelijkaardige dingen, drie verschillende mark-ups kreeg:

  1. <ul id="ding">
        <ul class="spel"><li>item</li>
        <ul class="spel"><li>item</li>
  2. <h3>hoofding</h3>
  3. <p>hoofding
    <small>item, item</small></p>
    <small>item, item</small></p>

Die “hoofding” en “item” moeten telkens (ongeveer) dezelfde style krijgen, dus dat gaf op geen tijd atrociteiten in de zin van

div#een ul#ding li, div#twee h3, div#drie p {
regel regel regel

en allerlei kunst– en vliegwerk om die <small>s in display:block te krijgen, en prutserijen met uitzonderingen op uitzonderingen (ul li ul.bla li.gerief en zo).

Enfin, ‘t had geen uitzicht meer.

En dus—kogel door kerk te G.: de plugins zelf bepoteld. De output daarvan geharmoniseerd. Het kwaad bij de wortel aangepakt.

Tja, veel plugins upgraden zal er dus niet aan te pas moeten komen. Of de wijzigingen zouden ook moeten opnieuw overgenomen worden natuurlijk. Heb ik mezelf lekker (heel erg relatief) onmisbaar gemaakt! 🙂

kijk hé! dààr krijg ik dus het vliegend heen en weer van bij WordPress: die hele plugin-architectuur die allemaal heel erg proper zou kunnen zijn, maar dat in de praktijk helemaal niet is. Het zou zo goed zijn mochten al die plugins hun gegevens gewoon als een structuurtje teruggeven in plaats van html en data vrolijk te mixen. Maar nee: zet er nog maar een hardgecodeerd tagsken tussen mannen! Toe maar! Een stijltje meer of minder, daar kijken wij niet op! En uiteraard structureren wij al onze gegevens met <li>’s, ah ja, da’s toch, hoe-was-het-ook-al-weer, semantisch zeker hé?

Zo zie daar zie

Nieuws van de grote WordPress.com Easter Outage:

Hello folks. We’re doing a little unplanned emergency maintainance to some systems that were causing problems over the past few weeks. Your blog will be unavailable for a few more minutes while we get everything situated. Relax and enjoy this Easter Sunday morning, and know that everybunny at WordPress.com is working their butts off to get your blog back online. — Matt and the team

En een tijdje later:

Matt here again. We have everything back online, checked, and verified. However we are going to keep blogs offline for a few more minutes to synchronize the backup machines and prevent this sort of problem from ever happening again. Thanks for your patience and understanding.

Oh ye of little faith. ‘t Is bij Blogger toch niet veel beter? 🙂


Um ja. Ik heb wat achter de schermen geprutst op mijn weblog. Het werkt hier met WordPress 2.0.2, en de volgende plugins, in alfabetische volgorde:

Brian’s Latest Comments zorgt voor een nuttiger commentaaroverzicht dan gewoon “latest comments” chronologisch:


Gravatar zet icoontjes naast comments (stel uw eigen icoon in op Gravatar.com—dat lukt meestal zonder problemen, behalve als uw naam Sandra Pattyn is):


Dunstan’s Time Since. Nutteloos, en ik denk dat ik het er eerstdaags weer af smijt. Toont de tijd sinds de entry gepost werd:


SparkStats. Ook nutteloos, maar wel grappig om zien, en sparklines zijn natuurlijk tot nader order nog altijd cool. Geeft een combinatie van het aantal posts en het aantal comments op die posts:


Ultimate Tag Warrior onder meer om keywords, erm, tags, aan posts te verbinden:


…en om tag coulds te genereren en zo:


Unformatted om in sommige oudere posts te vermijden dat WordPress automatische formattering doet en/of automatisch “van deze” aanhalingstekens plaatst.

WP-PostRatings, ook al in de categorie “nutteloos maar wel wijs”. Laat mensen hun gedacht geven van één tot vijf over elke post.


Die laatste is de meest recente, en wellicht ook de meest nutteloze van allemaal: niet alleen kan het me niet echt schelen, maar ook en vooral het is compleet irrelevant. Want waar staan die ratings eigenlijk voor? De mate waarin men het eens is met wat ik zeg? Hoe wijs iets is? Hoe mooi een foto? Hoe goed geschreven (ha!) een tekst? Hoe nuttig iets is?

Nee: compleet stom, die plugin. Maar wel wijs dus. En ‘t zou nóg wijzer zijn met ajax en dinges. Ik denk dat ik het er voorlopig wat laat op staan.

Oudere berichten

© 2018 Michel Vuijlsteke's weblog

Thema gemaakt door Anders NorenBoven ↑