Contenu principal
Subscribe To Comments Reloaded

Personnaliser la page de gestion du plugin Subscribe To Comments Reloaded

Subscribe To Comments Reloaded est un plugin pour WordPress très connu. Il permet à vos visiteurs de s’abonner par email aux commentaires d’un article afin de suivre une discussion. Cependant, la page de gestion accessible aux abonnés est difficile à personnaliser. Voici une astuce toute bête qui ouvre un large panel de possibilités.

WTFrak

Lorsque j’ai installé pour la première fois ce plugin lors de la refonte du design du blog, j’ai passé une longue nuit à essayer de personnaliser l’interface de gestion accessible aux abonnés. En effet, le plugin fournit un template modifiable pour chaque page de gestion, mais ceux-ci sont limités à la « zone d’affichage » du plugin, pas la page entière. Dans mon cas, et je suppose que je ne suis pas le seul, j’aurais aimé disposer d’un template général page-xxxxxxxxxxx.php afin de pouvoir au moins rajouter une classe css dans une <div> parente afin de rajouter un fond, ajuster des dimensions.
Et là, problème, le template ne s’applique pas, ou le plugin ne s’affiche pas, etc. Bref, il m’a fallut plusieurs heures avant de trouver par hasard une astuce « à la con » pour faire tout ça, et même plus.

Créer une page template

Premièrement, dupliquez le fichier page.php de votre thème (ou single.php, index.php…) et renommez le page-manage-subscriptions.php. « manage-subscriptions » correspond à l’url que vous avez indiqué dans les réglages du plugin (Réglages -> Subscribe to Comments -> Options -> La première option en haut « Page de gestion »). Vous pouvez mettre ce que vous voulez, assurez vous juste que votre fichier php ait le même nom avec « page- » devant.
Maintenant vous pouvez éditer ce fichier et rajouter les classes ou id nécessaires, voire modifier la structure html. Assurez vous juste de garder the_content() dans le code de la page, c’est le minimum requis.

Créer une page dans l’administration de WordPress

Direction l’administration de WordPress et créez une nouvelle page. Vous pouvez lui donner le titre et le contenu que vous voulez. La seule chose importante c’est l’url de la page (vous pouvez l’éditer sous le titre de la page) : cette url doit être identique à celle indiquée au plugin (manage-subscriptions dans mon exemple) et enregistrez la page.

A ce stade, si vous allez sur votre page de gestion côté public, vous la verrez, avec votre template, mais aucune zone de gestion n’apparaitra.
Voilà l’astuce : retournez dans votre administration WordPress et mettez votre nouvelle page A LA POUBELLE ! Oui madame, vous venez de créer une page qui finit directement aux oubliettes :dizzy: et ne la supprimez pas, laissez la bien au chaud là où elle est.

Retournez voir votre page de gestion publique, tout est là! La gestion est disponible, et votre template est utilisé \o/

Conclusion

Voilà une astuce bien étrange, je l’avoue, mais ça fonctionne parfaitement bien et je n’ai pas trouvé mieux.
Je pense savoir ce qu’il se passe mais je ne suis sûr de rien. Je suppose que le plugin ne réussi pas totalement à faire croire à WordPress que cette page de gestion est une vraie page, sinon il suffirait de créer le template et terminé. Il doit donc manquer un petit truc à WordPress pour la considérer comme telle. C’est ce que nous faisons en créant la page dans l’administration : la page existe, elle est bel et bien là. Cependant, le contenu de la page prend le pas sur le plugin. Il nous faut donc une page qui existe mais qui n’est pas censée s’afficher lorsque nous allons à l’adresse indiquée. C’est le but du déplacement vers la corbeille : la page existe bien, même si elle est à la corbeille elle est encore présente dans la base de données, mais son contenu ne s’affichera pas puisqu’elle n’est plus publiée (dans la base de données elle a toujours un post_type « page » -> elle est considérée comme une page et son post_status est « trash » -> corbeille, donc non publiée). Le plugin peut alors reprendre le dessus et profiter du template gentiment mis à disposition par notre page fantôme :)
[EDIT] Il semblerait, selon le développeur du plugin, que ce comportement soit un bug du plugin, qui devrait bientôt être corrigé.

PS : ensuite, rien ne vous empêche de modifier aussi les templates mis à disposition dans le plugin, c’est ce que j’ai fait pour améliorer la compréhension et la lisibilité de l’interface.

Subscribe to Comments Reloaded - gestion

[update]

Désactiver la vidange automatique de la corbeille

Comme WordPress vide périodiquement la corbeille afin de ne pas encombrer la base de données, il serait préférable dans ce cas de désactiver cette vidange :D
Bien sûr, cela implique que l’on doit vider soi-même la corbeille de temps en temps, mais en attendant…
Voici une petite ligne à placer dans le fichier config.php situé à la racine de votre site :

12

/* La corbeille ne doit pas se vider automatiquement */
define('EMPTY_TRASH_DAYS', 99999);

Update dans l’update : je me suis aperçu que j’avais raconté n’importe quoi (désolé) : j’avais indiqué qu’en mettant la constante EMPTY_TRASH_DAYS à 0, la corbeille ne se vidait jamais, alors que c’est tout l’inverse. A 0, les pages ne passent même pas par la corbeille et sont supprimées complètement. A la place il vaut mieux mettre un nombre que l’on n’atteindra jamais (sauf si vos arrière-petits-enfants prennent à leur charge la continuité de votre blog, d’ici là…).

Notez que cette fonction permet de régler la périodicité de la vidange en jours. Ainsi, pour vider la corbeille chaque semaine on remplacera le 99999 par un 7.
Pour ceux qui n’ont jamais touché à ce fichier, je rappelle que les lignes que l’on y rajoute ne doivent PAS être insérées à la fin du fichier, mais avant la mention /* C'est tout, ne touchez pas à ce qui suit ! Bon blogging ! */.

[update] Astuce supplémentaire :

Placer un bouton de « souscription sans avoir à commenter » n’importe où dans votre thème

La fonction php à placer dans votre page :

010203040506070809101112

if ( function_exists('subscribe_reloaded_show') ) {
	$user_link = get_bloginfo('url').get_option('subscribe_reloaded_manager_page', '');
	if ( function_exists('qtrans_convertURL') )
		$user_link = qtrans_convertURL($user_link);
	if ( strpos($user_link, '?') !== false )
		$manager_link = "$user_link&srp=$post->ID";
	else
		$manager_link = "$user_link?srp=$post->ID";
	$email_subscribe_link = $manager_link.'&sra=s';

	echo '<a href="' . $email_subscribe_link; . '" title="S\'abonner aux commentaires via email sans commenter" rel="nofollow">S\'abonner aux commentaires via email</a>';
}