Intégrer YOURLS à son thème WordPress

Comme présenté il y a peu de temps de cela, je roule une instance de YOURLS sur mon serveur afin de m’octroyer un système de raccourcissement d’URLs tout à fait bienvenu :

Raccourcissement d’URL : s.postblue.info

Basé sur YOURLS, cette sphère me sert finalement au travers des autres, afin de centraliser les liens « raccourcis » que je pourrais donner à l’intérieur de mon petit monde.
Or, jusqu’alors je cherchais un moyen simple et efficace pour intégrer les liens produits à la publication de chacun de mes articles au bas de ceux-ci, utilisables à la discrétion de mes lecteurs (ou de moi-même, mais la barre d’administration me le permet déjà). Voici comment faire :

Installer Yourls

Cela semble bien évident, me faut-il vraiment le relever ?

Installer le module WordPress

C’est évident ! Sauf que pour la peine, je n’ai pas pris le module consacré (YOURLS: WordPress to Twitter) qui force à avoir un compte Twitter – dont je dispose néanmoins – afin de fonctionner normalement. Naviguant un peu sur la toile, j’ai découvert ce module modifié qui supprime intégralement la partie « Twitter » de l’extension originale.

Installez donc cette extension selon votre méthode préférée (interface administrateur, FTP, …), activez-la et configurez-la. Cela permettra à votre blog de gérer votre service de raccourcissement, de créer un nouveau lien à chaque nouvel article, ce genre de choses pratiques.

Intégrer au thème

Pour cette manipulation, je vous conseille fortement de créer un thème enfant afin de pouvoir bénéficier d’améliorations « maison » de votre thème, sans pour autant devoir tout recommencer à la moindre mise à jour.

Pour ce faire, il suffit de suivre l’exemple précédent, à savoir créer un nouveau dossier, copier les fichiers qui vont bien, … Ce qui devrait donner de façon générique :

/*
Theme Name:     votre_theme Child
Description:    Child theme for votre_theme
Template:       votre_theme
*/

/* We must first include the original css from the parent theme */
@import url("../votre_theme/style.css");

Où « votre_thème » est bien évidemment le nom du thème que vous utilisez et désirez modifier.

Functions.php

Créez un petit fichier functions.php dans votre thème enfant ; ce fichier permet d’ajouter des fonctions qui seront chargées dans votre thème, de façon simple et centrale. C’est là que j’ai décidé de mettre la fonction suivante :
// SHORTLINK DISPLAY FUNCTION
if ( ! function_exists( 'yourls_shortlink' ) ) :
function yourls_shortlink() { ?>
	<div><span>Lien court :
	<input type='text' value='<?php echo wp_get_shortlink(get_the_ID()); ?>' onclick='this.focus(); this.select();' />
	</span></div>
<?php }
endif;
Qui finalement m’épargne de la recopier à chaque fois (et la modifier en une fois s’il le faut). De là, il ne me reste plus qu’à l’ajouter aux endroits nécessaires.

content.php, content-single.php, content-*.php, …

N’ayant plus de loop.php (la boucle d’affichage des articles) où j’aurais pu ajouter d’un coup et dans toutes les pages ce petit bout de code, je me vois – du moins dans l’état de mes connaissances qui là peuvent me faire défaut – un peu obligé de recopier des fichiers entiers pour simplement les modifier un peu (leur ajouter une fonction, tout simplement).

Je suis preneur d’une solution plus radicale, plus concise et surtout beaucoup plus pratique : la mienne se résume à introduire la ligne <?php yourls_shortlink(); ?> au début de chacun des <footer class= »entry-meta »>, afin d’en disposer systématiquement au dessus des informations de mes billets (date de publication, catégories et autres choses du genre).

content.php

<footer>
<?php yourls_shortlink(); ?>
<?php $show_sep = false; ?>
<?php if ( 'post' == get_post_type() ) : // Hide category and tag text for pages on Search ?>
<?php
/* translators: used between list items, there is a space after the comma */
$categories_list = get_the_category_list( __( ', ', 'twentyeleven' ) );
if ( $categories_list ):
?>
(...)
</footer>

content-single.php

<footer>
<?php yourls_shortlink(); ?>
(...)
</footer>
Pour ma part, ce sont content.php et content-single.php que j’ai modifiés. Cela dit, cette solution ne me satisfait pas complètement et j’aimerais systématiser plus encore cette publication de lien.