WordPress Deaf to Pings [en]

[fr] Mon installation WordPress semble refuser les pings depuis deux semaines environ. Aucune idée ce qui peut causer ça.

While I’m at it in the “technical annoyances instead of getting work done” department, with the misbehaving plugin and the Sandbox trouble, my WordPress installation has obviously become deaf to pings/trackbacks over the last two weeks.

I can send trackbacks fine, but not receive them. Even from my own blog. I don’t know where to start searching for the problem.

Oh, and I’ve lost the French excerpt to my post Advisors, Boards, Companies, Partners, Oh My! so if you happen to have a cached copy, would you check it out for me, please?

Damn. This morning is not turning out the way I hoped.

Update, 17:30: the pings from my most recent post just came through! I’m only running Spam Karma 2 now, deactivated both Akismet and Bad Behavior. Hope to identify the culprit soon.

Update, 17:53: now, when I save a post, it sends one ping. If there is more than one pingable URL in the post, I need to save it multiple times. Got bug?

Nasty Problem With Basic Bilingual Plugin [en]

[fr] Un problème avec le plugin Basic Bilingual qui fait disparaître les extraits dans "l'autre langue". Je bosse sur une solution (voir commentaires).

Heck. I just spent the last 15 minutes digging through the Google cache to retrieve “other language excerpts” which had been wiped from a good dozen of my recent posts. Not all of them, mind you — almost all of them. I haven’t yet managed to reproduce the problem, but clearly, the meta fields get reset in some circumstances.

I suspect it might be something that has to do with editing posts. Maybe related to the old disappearing tags problem?

In any case, I’m afraid Basic Bilingual must be misbehaving. Be particularly cautious when editing posts. Let me know if you have the same problem or a path to a fix — I’m working on it now.

Update: if somebody has the French excerpt to my post Advisors, Boards, Companies, Partners, Oh My! in their newsreader or browser cache, could you please send it to me or copy-paste it here as a comment? Thanks a lot.

Update, 17:30: I think I solved the problem (see comments) and corrected the files available on my server, bumping up the version to 0.31. Please download the latest version if you’re using this plugin.

WordPress Sandbox Theme Problems [en]

[fr] Deux problèmes avec Sandbox: les menus déroulants qui se déroulent décalés sur la droite dans IE, et l'absence de feuille de style pour l'impression. Toute aide bienvenue.

As you might have seen, Sandbox is now my theme of choice for WordPress. Diurnal, here on CTTS, is built upon Sandbox, and I’m using it with a client to build a new design from scratch. It’s a nice base to work from, in a CSS Zen Garden way.

However, there are problems. Here are two I’m stuck with on my client site. I posted them to the Sandbox forums, but I thought I’d mention them here in case one of you smart readers had an answer.

  1. No print stylesheet?: does anybody have a print stylesheet handy for use with Sandbox? If I can avoid writing one from scratch…
  2. Broken drop-down menus in IE: I’m far from a drop-down menu specialist, so I’m not sure where to start to fix the IE wonkiness I’ve noticed. The menus in IE do not drop right below the parent menu as shown here, but overlap on the neighbouring menu item on the right.

Thanks for any help or pointers you can bring me.

Feeling Like a Born-Again Blogger [en]

[fr] Depuis quelques jours, je blogue à donf, comme on dit -- et j'ai l'impression de redécouvrir ce média. Oui, ça marche vraiment de mettre par écrit ses idées, ses doutes, ses problèmes stratégiques ou organisationnels. La communauté est une précieuse alliée. Continuez à laisser vos commentaires, je les apprécie beaucoup!

I feel like a born-again blogger.

Over the last days, I’ve been blogging like a madwoman about Going Solo (and other things), and I feel like I’m rediscovering blogging. All this stuff that I tell my clients about, I’m in it now:

  • blog about the process, the ideas — you’ll get great feedback
  • blog about your doubts or problems — your readers are smarter than you are
  • blog about stuff you want to get out there — once it’s online, it’s ready to spread.

Funnily, I find myself faced with the same kind of doubts that my clients often express (though, I’m happy to say, they’re fading fast):

  • can I really blog about this when it hasn’t been set in stone yet?
  • what if people steal my ideas?
  • should I mention this or that, or is it best kept under wraps for the moment?
  • how much should I tell people?
  • do I make a separate blog for my event/company, or keep it all on mine?
  • how do I get my partners to blog?

So far, the responses I’ve got to my blogging and talking about my project (online, offline, in public, or in private) have been overwhelmingly supportive, positive, and constructive. It’s very encouraging. Keep it coming. Reaching out to the community really does work — I knew it, but now I’m experimenting it again.

Thanks to everybody.

Qui prendrait des "cours de blog"? [fr]

Tout d’abord, merci à tous pour vos commentaires sur mon projet de cours d’initiation aux blogs. Ils me sont très utiles, donc continuez à me dire ce que vous pensez! Je me rends compte que je n’ai pas du tout défini assez clairement à qui s’adresserait ce cours et pourquoi. Je vais essayer de remédier ici à ce manquement.

Tout d’abord, il s’agit d’un cours d’initiation au blog personnel. Comme je l’explique dans les conférences que je donne au sujet des blogs en entreprise, le blog est à la fois un outil (technologique), une culture, et une stratégie de communication.

Dès qu’on commence à parler de blog en entreprise (même TPE ou pour un indépendant), en milieu associatif, ou politique, on ne peut échapper à la discussion sur le blog-comme-stratégie-de-communication. Et croyez-moi, ce n’est pas une mince affaire. On se retrouve très vite à faire ce que j’appelle du “Cluetrain 101”, c’est-à-dire expliquer les transformations en profondeur qu’internet (et les blogs, qui sont une manifestation visible et médiatisée d’un bouleversement plus fondamental) a amené dans la façon de concevoir la communication. Ça prend vite des heures, voire des jours. On parle de transparence, d’authenticité, de comment écrire comme un être humain au lieu d’une brochure marketing, de quoi on va parler, comment on va réagir aux commentaires négatifs, de lire d’autres blogs et y réagir. Il y a des peurs, des réticences, des soucis plus ou moins justifiés. C’est une opération qui peut transformer en profondeur la façon dont on communique, et même dont fonctionne l’entreprise à l’interne. “Ouvrir un blog”, c’est la pointe de l’iceberg.

Pour ce genre de service, il faut compter des journées entières de consulting et de formation, avec un suivi qui peut durer des mois. (Si on veut faire les choses bien, il va de soi.) C’est un service personnalisé qui dépend de l’entreprise ou de l’association en question, des personnes impliquées, et qu’il est impossible à packager en une demi-journée. Le cours sur deux journées qu’Anne Dominique et moi-même avons mis sur pied représente un premier pas dans ce processus, une initiation.

Il s’agit donc ici de faire quelque chose de tout à fait différent.

Je désire donner un cours de blog-outil. On n’abordera pas la stratégie de communication, juste l’outil et un peu de la culture. Quand on approche les choses ainsi en entreprise, c’est en général la recette pour avoir un blog qui ne fonctionne pas. Pour l’individu, le particulier, par contre, c’est parfait.

Le blog est un très chouette outil d’expression personnelle. Si on a le désir de raconter des choses, de partager une passion, de pousser des coups de gueule, de rentrer en contact avec des personnes partageant des intérêts similaires aux siens, franchement, cela vaut la peine d’avoir un blog: un petit espace à soi sur internet, que l’on peut alimenter à sa convenance, qui ne coûte rien, et ne demande pas beaucoup plus de maîtrise technique que celle requise pour envoyer un e-mail avec hotmail ou bluewin.

Mais, me direz-vous (et on me le dit!) — bloguer, c’est tellement facile que y’a pas besoin de cours!

Erreur.

Ceux qui disent cela sont des personnes que j’appelle des “blogueurs naturels”. Des gens comme moi, ou comme vous qui avez déjà un blog. Vous avez ça dans le sang, si on peut dire. On est assez à l’aise avec notre ordinateur pour aller s’inscrire sur WordPress et se lancer tout seul. Tenez, je vous explique même comment faire ça dans mon blog. Allez-y. Ouvrez votre blog. Lancez-vous à l’eau. Si ces quelques indications vous suffisent, alors vous n’avez pas besoin de mon cours d’initiation pour apprendre à bloguer.

Je pense à toutes les autres personnes, celles qui ne lisent pas ce blog, ou celles qui le lisent mais ne sont pas assez sûres d’elles sur un ordinateur ou internet pour faire le pas sans assistance. Tout le monde (ou presque) est capable de tenir un blog, mais encore faut-il le croire. Si vous avez des doutes, ou si simplement vous trouvez plus confortable de faire ça accompagné, je suis là pour vous.

Durant ces dernières années, je suis régulièrement approchée par des personnes (de mon entourage ou d’ailleurs) qui veulent que je leur apprenne à bloguer, ce que je fais volontiers. Ces personnes existent donc. Il y a un besoin. J’ai aussi compris, avec le temps, que toutes ces choses qui nous semblent évidentes, à nous les blogueurs naturels, ne vont pas forcément de soi pour le commun des mortels. Il est normal de devoir passer par une phase d’apprentissage ou d’apprivoisement pour se mettre à quelque chose de nouveau. On prend des cours de sport, de peinture, de poterie, de massage, d’informatique, ou d’anglais. On peut aussi apprendre à utiliser internet, et les blogs en particuliers.

En plus des amis et des membres de ma famille que j’ai accompagné lors de leurs premiers pas dans la blogosphère, j’ai appris à bloguer à toutes sortes de personnes, que ce soit lors de séances particulières ou de cours en groupe: indépendants, enseignants, hommes politiques, camarades de chant, employés d’entreprises petites et grandes, journalistes… Oui, il y a un besoin pour ce genre de formation. (Je l’ai déjà dit… je me répète?)

Donc, les particuliers. Pourquoi paieraient-ils pour quelque chose que “n’importe qui” peut leur montrer comment faire? Ben justement, parce que “n’importe qui” ne pourra pas le faire aussi bien que moi (ouh là là, elle est gonflée, non mais, vous avez vu ça?). En fait, c’est la vieille rengaine: suffit pas de savoir faire quelque chose pour être capable de l’enseigner — et j’aime à penser que c’est une chose que je ne fais pas trop mal. Aussi, (je fais ma pub, attention!) apprendre avec moi, c’est tout de même une garantie qu’on partira dans le droit chemin, et que je serai en mesure de répondre à toutes les questions qui risquent de se poser. Je dis pas qu’il n’y a pas dans le coin d’autres personnes aussi capables, hein, mais c’est tout de même autre chose que la nièce de Gérard qui a un Skyblog

Un autre avantage dans le fait de prendre un cours c’est qu’on bloque le temps nécessaire. Souvent, on a envie de faire des choses (“ah ouais, ce serait cool d’avoir un blog, j’en ouvrirais bien un un de ces quatre, mais bon je suis pas tout à faire sûr comment faire, on verra ça…”) mais on ne s’y met pas. Le cours d’initiation, c’est l’occasion de donner le coup d’envoi, avec de nouveau (la satanée garantie) qu’on va pas y passer la soirée pour se retrouver avec rien entre les mains à la fin parce que ça aura foiré.

Bon, trève de plaisanteries, je récapitule. Voici à qui s’adresse mon cours:

  • des personnes qui ont envie d’avoir un blog, ou un espace à elles pour partager sur internet des pensées, une passion, des textes, des critiques de films… peu importe — mais a priori, quelque chose de non-professionnel (“qu’est-ce qui vous intéresse dans la vie?”)
  • des personnes qui ne sont pas des cracks d’informatique, mais qui savent envoyer un e-mail
  • des personnes qui veulent un blog mais ont besoin d’un petit coup de pouce (rassurant ou organisationel) pour donner le coup d’envoi
  • bref, n’importe qui ayant le désir d’avoir un blog personnel, mais n’ayant pas toutes les cartes en main pour se lancer sans aide.

Donc:

  • où annoncer mon cours pour toucher ces gens? (sur mon blog, clairement, c’est pas le meilleur endroit)
  • comment présenter le cours pour qu’ils sentent que c’est à eux que je m’adresse?

Photography: Being the Model [en]

[fr] Une chose qui m'énerve fréquemment, ce sont les médias qui désirent me faire photographier pour illustrer leur article, mais qui ne considèrent pas "normal" que le photographe me donne une copie des photos faites. C'est mon image, merde.

Branching off on the Lane Hartwell–Richter Scales story to react to a paragraph of Lane’s post Please don’t steal my work:

Along with this, everyday I am hit up with requests for me to give people photos I have shot of them. I’ll be shooting an event and people will push their business cards on me and tell me to “email them the shots”. When I politely explain that I won’t be doing that, and why I won’t be doing that, they usually get nasty with me. If I tell them they can purchase a file or print from me, 9 times out of 10 I never hear back from them.

Lane Hartwell, Please don’t steal my work

Just to make things very clear: I’m not taking a stand on the issue at hand here, which I believe is far more complex than “she’s right” or “she’s wrong”. I’m just reacting to one paragraph of her post, because it reminds me of something that pisses me off regularly.

I see no reason whatsoever for which I should not have the right, as the person on the picture, to have a copy of the photograph that was shot of me. This happens to me very regularly when I’m interviewed by the press and they bring along a photographer to shoot a few pics to illustrate the article: I ask the photographer to e-mail me the shots, or at least those which made the cut. So far, three actually did it — and I thank them very much for it. Most of the time, I never hear from them again.

And it pisses me off.

Why should the photographer own a representation of me? I’m not saying I should own it exclusively, either. The photographer has the rights to the image, but I consider I should at least have the use of it for my personal/promotional use.

Same goes for events. If I’m at a conference, or giving a talk, and I let you photograph/film me, consider that I’m CC by-nc-sa. If you take a photograph of me and “all rights reserved” it, that means I am not allowed to use it in my blog, for example — as far as I understand things.

There is something of a joint ownership in a photography. I’m not saying I’ve figured it out. I’m somebody who takes photographs (though I don’t make any money out of them), so I understand the point of view of the person taking photos, but I’m also (frequently) photographed, and I don’t like being dispossessed of my image.

Thoughts and discussion welcome.

Twitter Advertisers and Friend Collectors [en]

[fr] Sur Twitter (voir mon guide si vous êtes perdus!), je laisse en principe qui le désire me "suivre". Par contre, je bloque sans merci ceux qui n'ont rien capté et qui utilisent Twitter pour envoyer des messages ressemblant à du spam, et ceux qui collectionnent les gens à suivre comme des trophées (à moins que ce soit des gens de "mon monde" que je connais). Donc, oui -- non seulement je ne m'amuse pas à suivre ces gens foncièrement inintéressants, mais en plus, je ne désire pas figurer dans leur tableau de chasse.

I’m approaching 500 followers on Twitter. That means that nearly 500 people have asked to be able to track my updates — and I haven’t blocked them.

I’ve blocked many people from following me, even though my updates are public, and anybody can read my tweets/twitters on the web.

Who do I block? Blatant advertisers and friend collectors.

When I get a notice that somebody is following me on twitter, I quickly go to check out their stream (sometimes a backlog builds up, but that doesn’t change much to the process).

If I know/recognize the person and I want to keep track of them, I’ll follow them back (I’m pretty loose about who I follow on Twitter, though I do stick to people I know in a way, people I’d like to know more, or people that seem very interesting in what they tweet).

If I don’t recognize the person, the first thing I do is check how many people they’re following. If they’re following 500+ or 1000+ people and their name doesn’t ring a bell (ie, they aren’t one of the 2.0 mass-networkers gravitating around my world), I block them. I see no interest in being part of their faceroll collection. None at all. So yeah, of course, I get less followers, like that (but I’m not in any race or anything).

If they don’t get busted because of my “friends limit”, I take a quick glance at their twitter stream. If it’s tweet after tweet of self-promotional crap or ad-linking, I block them too. Why anybody would use Twitter to try to convince people to follow their spam is beyond me — probably, they haven’t got a clue what Twitter is about, and are trying their same old spammy techniques there without realising they’re mostly useless. Anyway, I’m not interested in being associated with people like that, so I block them too.

Who is left? Well, normal human beings. If you’re reading this and you have a clue (ie, you don’t believe in spamming people or making collections of people/links/whatevers to win the contest), then you run very little chance of being blocked :-). Feel free to follow me on Twitter!

PS: Robert, Loïc, Jeff, and other authentic super-networkers out there: you’re part of my world, I don’t mind being in your collection ;-).

Blogs en entreprise, un peu en vrac [fr]

[en] A brief overview of important points to consider/keep in mind when thinking about blogs in a corporate setting. The two posts with my conference notes, How Blogging Brings Dialogue to Corporate Communications and Blogging in Internal Communications, roughly cover this.

Quel est l’essentiel à savoir lorsque l’on commence à s’intéresser aux blogs?

D’abord, que le blog est trois choses:

  • un outil (technologique) permettant de publier très facilement du contenu
  • une culture avec des usages, une histoire, une éthique
  • une stratégie de communication misant sur le dialogue, l’authenticité et la transparence

L’outil lui-même est relativement simple à mettre en place et est gratuit ou presque.

Apprendre à utiliser le blog pour publier des textes est aisé. C’est très similaire (côté processus et interface) à publier un e-mail. C’est entre autres pour cela que le blog est un outil aussi populaire et que “n’importe qui peut en avoir un”.

Pour une entreprise, il vaut la peine d’avoir une personne à l’interne qui soit capable de gérer le blog côté serveur: mises à jour, installation de plugins, adaptation du thème (gabarit) à la ligne graphique désirée, résolution de bugs dus à des changements de version (PHP, base de données) sur le serveur — ça peut arriver.

Maîtriser les fonctions plus complexes de l’outil de blog peut prendre plus de temps: catégories, tags, gestion des commentaires, insertion d’images ou de vidéo, mise en forme, liens, contenu annexe. La plupart des blogueurs devront avoir une partie au moins de ces compétences afin d’être réellement autonomes.

Utiliser un blog comme outil de communication n’est pas une chose naturelle dans le milieu des affaires. Le style d’écriture est différent de ce dont on a l’habitude (assez proche de l’e-mail) et revêt une grande importance. Etre exposé à la critique et aux questions difficiles est quelque chose dont nous protège de façon générale la communication unilatérale. Renoncer à la langue de bois ouvre parfois la porte à des situations difficiles à gérer.

Etre un bon blogueur requiert en fait des compétences relationnelles et humaines assez génériques et qui font souvent partie de la “personnalité” — ou du moins, qui ne sont pas enseignées de façon formelle. Le coaching sur la durée est le meilleur moyen d’apprendre à gérer ces situations dues à la nature conversationnelle du blog.

Installer l’outil et apprendre à l’utiliser, d’un point de vue technique, ce n’est donc que la pointe de l’iceberg. L’investissement financier est minime pour l’outil lui-même, mais il vaut la peine de mettre le paquet pour accompagner le/les blogueurs dans leur apprentissage de la culture propre à ce nouveau média, et de soutenir l’entreprise dans ses difficultés (inévitables) avec une stratégie de communication qui ne correspond probablement pas à ce qu’elle faisait jusque-là.

En cas de réticences budgétaire face au prix d’une accompagnement de qualité sur, disons, une durée de six mois — il est bon de (se) rappeler qu’on investit souvent sans sourciller des dizaines de milliers dans des solutions techniques ou du matériel. Pour un blog, point de cela: l’argent ainsi économisé doit absolument être consacré à la formation et au conseil stratégique par un spécialiste du média.

Le plus possible, on cherchera à faire bloguer des personnes provenant de l’entreprise elle-même. L’efficacité du blog consiste à mettre en relation de vraies personnes: les blogueurs, et les lecteurs, qui peuvent laisser des commentaires, ou vont peut-être publier des réactions sur leur propre blog. Les blogueurs deviennent vite la “vitrine” ou la “face humaine” de l’entreprise. Il est à mon avis très dommage de confier ce rôle à des personnes externes uniquement — il y a là une incompatibilité entre le rôle du blog, qui est de rapprocher, et le fait de confier ce travail à des externes, qui montre qu’on ne veut pas “se mouiller”.

Le blog lui-même, a priori, ne va pas rapporter d’argent. On fait de l’argent “à cause” du blog, non pas “avec”. Le blog apporte visibilité et crédibilité, d’une façon difficile à imiter avec une campagne de publicité ou de marketing “classique”, car elle est basée sur le dialogue et la relation. C’est en discutant avec les gens de notre entourage que nous changeons d’avis, et prenons des décisions. Internet, via les blogs, permet de démultiplier l’effet bouche-à-oreille de la conversation personnelle.

Ces thèses sont développées de façon plus générique dans l’ouvrage The Cluetrain Manifesto (à lire absolument): nos décisions d’achat sont basées sur les expériences de nos amis; personne n’aime qu’on lui “parle contre”, ce que fait habituellement la publicité; nous ne sommes plus dupes, nous savons que la publicité est mensongère. Sur internet, avec les blogs, les forums, les wikis, les réseaux sociaux, ces conversations qui existaient déjà bien avant l’ère d’internet acquièrent un pouvoir supplémentaire en étant sur la place publique numérique.

La communication ne peut pas être contrôlée. Les blogs permettent aujourd’hui à n’importe qui de se faire entendre, si ce qu’il raconte est jugé assez important par ses pairs. On ne peut pas “taire” les gens à coups de communication bien léchée. La langue de bois est montrée du doigt dans les commentaires et les forums de discussion. Internet nous force à renoncer au contrôle absolu de son image et à se jeter à l’eau, à participer aux conversations qui ont déjà lieu à notre sujet, ou à les encourager à venir se passer chez nous.

Pour bloguer il faut être passionné, et c’est quelque chose qu’on ne peut pas “truquer”. Si le coeur n’y est pas, les centaines de personnes du public vont finir par le sentir, un jour ou l’autre — et les gens n’aiment pas la facticité. Le choix des bonnes personnes pour bloguer est donc crucial. Ce n’est pas un travail pour n’importe qui.

Ecrire dans le blog, ce n’est que la moitié du travail. Il faut garder un oeil sur les commentaires, y répondre, modérer parfois. Il faut surtout lire — d’autres blogs sur des sujets apparentés, ce que le public dit au sujet de son entreprise, de ses produits, ou du contenu du blog. Tout cela prend du temps. Cela ne se fait pas en 3 minutes entre deux meetings. Aimer ce dont on parle et être passionné, ça aide.

Idéalement, je l’ai dit, on choisira ses blogueurs parmi ses employés. Il faut tenir compte dans leur emploi du temps qu’il vont passer un certain nombre d’heures par semaine à bloguer, lire des blogs, échanger e-mails et commentaires là autour. S’ils n’arrivent pas à faire leur travail, éviter la solution facile de mettre la faute sur le blog. Chercher la vraie cause, et y remédier.

Voilà… voyez, c’est un sujet sur lequel on peut vite s’étendre. J’en resterai là pour aujourd’hui, non sans vous donner quelques pistes pour explorer plus loin (pas impossible que j’en rajoute après la publication de cet article).

Livres à lire, en anglais:

  • The Cluetrain Manifesto, incontournable et en plus, disponible gratuitement en ligne
  • Naked Conversations, panorama de plus d’une centaines d’utilisations des blogs dans le monde des affaires, de la politique, ou des médias

Livres en français:

  • Blog Story, pour une introduction générale au phénomène et à son histoire
  • Blogueur d’entreprise, que j’ai reçu mais pas encore lu (pour cause de pile de livres) mais qui est tout à fait recommandable, j’en suis certaine

En anglais:

En français:

N’hésitez pas à laisser un commentaire si vous avez quelque chose à ajouter, ou une remarque, ou même une question.

Ridding WordPress Plugins of Template Tags [en]

[fr] Cet article décrit une méthode permettant de se défaire des "template tags" qu'utilisent certains plugins. Plutôt que de copier le fameux template tag à 3 endroits différents dans son thème (comme c'était le cas auparavant pour Basic Bilingual), il est possible de modifier à peu de frais un plugin pour qu'il injecte automatiquement son contenu dans le blog.

If you’re like me and use a bunch of plugins to liven up your WordPress blog, you’ve probably noticed that adding template tags in your favourite (or favourite-of-the-week) theme files can quickly become a royal pain in the neck.

One of the things I wanted to do with Basic Bilingual, and which I did with the last release, was make the plugin inject the text for the “other excerpt” (the French text you can see at the top of this post) automatically into the templates and feeds.

Once I’d figured out how to do that, I realised I could modify other plugins, too. And I’m going to tell you how you can do it, too. This method should work for any plugin which generates a template tag, as long as you want the content generated by the plugin to go immediately after or before the post content. (I’m still working on advanced rules for cases where you want to make modifications elsewhere in the template.)

Christine‘s Inline Tag Thing put me on the track (thanks!), as it does just that. Here’s the trick:

  1. create a function which concatenates (= “adds”) the plugin output to the content
  2. add an action hook to the plugin to apply that function to “the_content”.

Fear not, I’ll explain all. You don’t need to really know much PHP to do this, as long as you’re comfortable wading through a bit of code and copy-pasting stuff and making a few small modifications.

Let’s take an example: the Similar Posts plugin, which I’m now using to point out posts related to the current one (normally, in a box at the top of the post if you’re on the website, and as a list at the end of the post if you’re reading the feed).

Similar Posts provides a template tag, <?php similar_posts(); ?>, which you can paste in your template where you like the related posts to appear. Personally, I want them to appear on the main blog page, on the individual archive pages, and on the monthly, category, and taggy archive pages. This means I need to paste the tag into at least 3-4 different template files. And if I decide that I want the tag at the top of the post rather than the bottom, or I decide to remove it, there I go again. Not optimal.

So, here’s how I made it “better” (for me):

A. First, I looked at the plugin code to figure out where the template tag function was; in this case, quite easy, it’s the function called similar_posts(), logically. Here are the last two lines of this function, which do the actual data output:

print $result;
if (defined('POC_CACHE')) print $cache_time;

I changed them to:

return $result;
if (defined('POC_CACHE')) return $cache_time;

So that they didn’t print directly (ie, output text), but just return the value of the data we want to insert.

Then, I created the following function:

function sp_embed_similar_posts($content) {
    $content = similar_posts() . $content;
    return $content;
}

This function takes one parameter ($content), and sticks the output of similar_posts() in front of it. Now you see why we needed to change the other function so that it didn’t print. We’re just modifying the value of the $content string. This new function returns the modified value for the content (in our case, imagine it as being the content of your post with the code for the similar posts listing stuck in front.

Now all that is left to do is to tell WordPress to actually use that function at some point (plugins are usually a collection of functions, followed by a series of “hooks” which actually execute the functions at certain chosen moments). Here’s the action we’ll use:

add_action('the_content', 'sp_embed_similar_posts');

Try it!

This will also add the list of similar posts to the feed.

So, in summary, here is what we have done:

  • modified the template tag function so that it returns a value instead of printing it (in some plugins, you’ll find a function that already does that!)
  • created a function to stick that value on the beginning or end of a parameter, $content
  • add an action hook on the_content to execute the function.

Happy hacking!

Basic Bilingual 0.3 for Multilingual Blogging [en]

[fr] Une mise à jour de mon plugin "Basic Bilingual" qui permet de rendre WordPress bilingue. Modification majeure: il n'y a plus besoin de bidouiller son template pour faire apparaître l'extrait du billet dans "l'autre langue". Par contre, c'est toujours nécessaire pour rajouter les attributs lang.

Long overdue, an upgrade of my plugin Basic Bilingual. Grab the tgz archive or check out the code.

Some explanations. First, you all know of my long-standing interest in all things multilingual and in multilingual blogging in particular.

Years ago, I switched to Movable Type and then to WordPress because I was blogging in two languages. Movable Type allowed me to assign more than one category to each post — so I used two huge categories, fr and en, to indicate what language I was blogging in. This soon made the rebuilds a real pain in the neck, and WordPress allowed me first of all to happily hack it into being multilingual, and then actually write a plugin to do it in a cleaner way. The plugin hasn’t changed much since, and this upgrade isn’t a major one, but it’s a step in the right direction.

Ideally, I’d like people to be able to use the plugin without having to modify their templates at all. I’d also like the plugin to allow filtering out one language if that is what the reader desires. I still hope that WordPress will one day “see the light” and let us define language at post-level (Matt saw the light for tagging ;-), so I do have hope). By the way, I stumbled upon this Ajax Language Switcher for Basic Bilingual earlier today, and it will probably greatly interest those courageous ones of you who tend to have translations of each post or page.

Back to the plugin. It installs normally (unzip everything in the /plugins directory). If you’re using other languages than French and English, you’ll have to manually change the language codes in the plugin file (not very difficult, you don’t have to know PHP to do it; just look for “en” and “fr” and put the language codes for your languages instead).

I’ve fixed an annoying problem with slashes that popped up at some point (somebody else gave me the fix, but I can’t remember who — let me know!).

But most of all, I’ve made the “other language excerpt” appear automatically in the post content. Yes, you hear me: no need to add <php bb_the_other_excerpt(); ?> in your templates anymore. Yay! Added bonus: it will show up in the feeds, too — for that reason, I’ve added a text separator between the excerpt and the post so that there is a separation between the languages.

Basic Bilingual in Google Reader

Obviously, you’ll want to hide these separators and style your posts a little. Here is roughly what I’m using right now:

.other-excerpt {
font-style: italic;
background: #fff;
padding-left: 1em;
padding-right: 1em;
border: 1px solid #ccc;
}

.other-excerpt:lang(fr) p.oe-first-child:before {
content: "[fr] ";
font-weight: bold;
}

.other-excerpt:lang(en) p.oe-first-child:before {
content: "[en] ";
font-weight: bold;
}

.bb-post-separator {
display: none;
}

div.hentry:lang(fr) .entry-title:after {
    content: " [fr] ";
    vertical-align: middle;
    font-size: 80%;
    color: #bbb;
}

div.hentry:lang(en) .entry-title:after {
    content: " [en] ";
    vertical-align: middle;
    font-size: 80%;
    color: #bbb;
}

Now, notice there is fancy stuff in there which relies on the lang attribute. If you’re mixing languages on a page, you should use the lang attribute to indicate which language is where. This means (unfortunately, until I become buddies with PHP’s ob_start() function) that you need to touch your template. It’s not that hard, though.

Find the outermost <div> for each post in the template (it should have the CSS class hentry, by now). Add this inside the tag: lang="<?php bb_the_language(); ?>". Do so on every theme template which produces posts. With the Sandbox theme, it would look like this:

&lt;div id=&quot;post-" class="" lang=""&gt;

That’s it!

If you’re using this plugin, please leave a link to your blog. I’m also always interested in hearing of other examples of multilingual blogging or multilingualism online.