Marier le plugin WooTumblog et le thème Genesis

J’utilise sur ce blog le thème Prose basé sur le framework Genesis. Je ne listerai pas ici l’intérêt de passer par ce framework ou un autre. Nous dirons seulement que le principe est d’avoir un thème assez sophistiqué offrant de nombreux réglages et points d’actions documentés et facilement compréhensibles. J’ai découvert il y a quelques temps le plugin WooTumblog dont le but est d’ajouter à WordPress la facilité de publication de Tumblr. J’ai donc voulu mixer les deux.

WooTumblog a été développé par WooThemes et reprend le principe de billets prédéfinis en fonction du contenu (texte, citation, vidéo, image…). Suivant le type de contenu, le plugin propose des champs prédéfinis et affichera les informations de manière adaptée. C’est en partie ce qui a fait le succès de Tumblr. Cela accélère très franchement l’ajout de contenu, bien plus que la fonction Quickpost native de WordPress.

Ce plugin est intégré à certains thèmes WooThemes (catégorie Tumblog) mais il est possible de télécharger ce plugin et de l’installer sur son blog.

Si le plugin s’installe normalement, il demande ensuite une petite modification des thèmes pour fonctionner. Si vous ne le faîtes pas, vous aurez un billet vide sur votre blog car le plugin stocke les informations dans des champs spécifiques ! L’aide sur WooThemes explique comment le faire dans un thème classique, voici comment le faire avec un thème Genesis.

Créer un Child Theme de Genesis

Tout d’abord il est important de préciser que vous ne devez pas modifier le Theme Genesis directement. Cela vous évitera de tout perdre quand Genesis. Vous travaillez donc avec un thème enfant (Child Theme). Le fonctionnement n’est pas propre à Genesis mais général à WordPress qui a introduit cette fonction dans les versions récentes. Sur le principe, un thème enfant est un dérivé d’un thème parent. Il en reprend le fonctionnement, les options, l’aspect mais ont peut personnaliser ce que l’on souhaite. La documentation de WordPress explique très bien le fonctionnement.

Pour créer un thème dérivé de Genesis il vous suffit donc de créer un nouveau dossier dans le dossier themes de votre installation WordPress. Vous lui donner le nom que vous souhaitez. Un Child Theme contient au minimum un fichier *style.css *qui fait référence au thème parent. Cela ressemble à ça :

[sourcecode language= »css »]
/*
Theme Name: Mon theme
Template: genesis
*/
@import url(../genesis/style.css);
[/sourcecode]

*Dans ce cas j’ai ajouté l’import de la feuille de style de Genesis pour conserver les styles mais je pense qu’il y a mieux à faire notamment pour conserver la minification de la feuille de style.
*

Le principe est ensuite très simple. Les fichiers tu thème enfant remplacent leurs homonymes du thème parent. WordPress utilisera donc les fichiers du thème parent s’ils existent, sinon il utilisera le fichier du thème parent.

Dans notre cas il faudra modifier la page d’accueil (home.php), la page qui liste les articles d’une catégorie (category.php) et l’affichage d’un billet unique (single.php). Nous aurons donc à créer ces trois fichiers dans le thème enfant. Au départ ces trois fichiers seront d’une simplicité remarquable :

[sourcecode language= »php »]

[/sourcecode]

La fonction genesis() est celle qui appelle ensuite le thème. Donc indispensable dans notre cas.

Une icône dans le titre des billets

Le plugin propose d’associer à chaque type de contenu une petite icône clickable. Elle représente le type de contenu et permet d’accéder aux autres articles du même type.

Le plugin dispose d’une fonction woo_tumblog_the_title(« entry-title »); qui se charge d’afficher le titre du billet et la petite icône sur la droite. Avec Genesis la méthode pour l’appliquer est très simple. Ajoutez avant genesis(); les deux lignes suivantes :

[sourcecode language= »php »]

[/sourcecode]

La première ligne supprime le titre. La seconde indique à Genesis de mettre dans le titre la fonction du plugin WooTumblog. Pour le reste le thème s’occupe de tout.

Afficher le contenu du billet

Le fonctionnement est similaire. Il suffit là encore de supprimer le contenu du billet et d’afficher à la place le contenu rentré par le plugin.

[sourcecode language= »php »]

[/sourcecode]

Attention toutefois, cela s’avère problématique dans deux cas :

  • si vous ajoutez ce plugin à un blog existant. Tout vos anciens billets perdront leur texte.
  • si vous écrivez aussi des billets par le système classique. Là encore le contenu n’apparaîtra pas.

Il faut donc tester et afficher le contenu classique de WordPress si le billet n’a pas été rentré par cette extension. Pour ce faire j’ai ajouté deux fonctions. Vous pouvez placer ces fonctions soit dans les fichiers home.php, category.php et single.php soit plus simplement les centraliser dans un fichier functions.php que vous ajouter dans votre dossier. Ce fichier de fonction est automatiquement appelé par WordPress quand il existe.

Voici la première qui affiche le contenu du Tumblog à la place du excerpt(), le contenu court.

[sourcecode language= »php »]
function chapo(){
global $post;
$post_id = $post->ID;
$tumblog_list = get_the_term_list( $post_id, ‘tumblog’,  » , ‘|’ ,  » );
$tumblog_id = get_term_by( ‘name’, $tumblog_item, ‘tumblog’ );
if ($tumblog_list!= »){
woo_tumblog_content();
}
else {
the_excerpt();
}
}
[/sourcecode]

La première partie permet de tester si nous avons affaire ou non à un article ajouté avec l’extension. Si c’est le cas on fait appel à la fonction du plugin pour afficher le contenu Tumblog. Sinon on appelle la fonction de WordPress. Il suffit ensuite d’expliquer à Genesis d’appliquer cette fonction pour afficher le contenu :

[sourcecode language= »php »]
remove_action(‘genesis_post_content’, ‘genesis_do_post_content’);
add_action(‘genesis_post_content’, ‘chapo’);
[/sourcecode]

J’utilise cette fonction dans ma page d’accueil (home.php) et mes pages catégories (category.php).

Le cas du billet seul

Pour le cas où l’on se trouve dans la page qui affiche le billet, il y a une petite variation à faire sur cette même fonction. Au lieu d’afficher le excerpt elle doit afficher le contenu du billet. La fonction est similaire mais renvoie le contenu complet au lieu du texte court :

[sourcecode language= »php »]
function contenu(){
global $post;
$post_id = $post->ID;
$tumblog_list = get_the_term_list( $post_id, ‘tumblog’,  » , ‘|’ ,  » );
$tumblog_id = get_term_by( ‘name’, $tumblog_item, ‘tumblog’ );
if ($tumblog_list!= »){
woo_tumblog_content();
}
else {
the_content();
}
}
[/sourcecode]

Et ensuite il suffit de l’appeler dans la page single.php avant l’appel de la fonction genesis() :

[sourcecode language= »php »]
remove_action(‘genesis_post_content’, ‘genesis_do_post_content’);
add_action(‘genesis_post_content’, ‘contenu’);
[/sourcecode]

Et c’est tout ! Activez ensuite le thème comme vous activez un thème habituellement et tout devrait bien se passer. Pour faciliter les choses j’ai créé un thème enfant exemple avec les fichiers essentiels et les fonctions qui vont avec.