Lorsque l’on blogue ou que l’on publie des actualités régulièrement, il est intéressant de pouvoir proposer un petit quelque chose à la fin de ses articles.
Parfois, on demande un partage sur les réseaux sociaux, parfois on propose des articles en relation. On peut aussi afficher des publicités ou faire bien d’autres choses.
Je ne vous le cache pas, il existe des extensions pour réaliser tout ça. Mais comment faire pour afficher vos propres ressources ?
C’est ce que nous allons voir avec ce snippet !
Sommaire
Imaginons que nous voulons…
Ajouter un bouton sous tous les articles de notre blog
Pour ce faire, copiez-collez le code suivant dans le fichier functions.php
de votre thème enfant:
On stylise un peu notre bloc avec du CSS en ciblant la classe after-content
et bouton
:
Nous sommes d’accord, le rendu est assez basique mais voici ce que ça nous donne :
Après libre à vous d’utiliser le CSS adéquat pour que cela concorde avec la charte graphique de votre site.
Maintenant essayons d’aller un peu plus loin. Que faire pour…
Afficher un contenu complémentaire aux articles d’une catégorie
Je vous rassure, c’est assez simple. Nous allons reprendre le snippet d’origine et l’améliorer un peu. Voyez plutôt :
Et comment faire pour afficher un contenu différent sous les articles de plusieurs catégories ?
Là encore, on peut adapter notre snippet de cette manière :
Pour tester si un article appartient à une catégorie en particulier, le snippet utilise la fonction in_category()
. Comme cela est expliqué dans le codex, on peut lui donner plusieurs paramètres :
- L’identifiant texte (le slug) :
ma-categorie
; - L’identifiant numérique (l’ID) :
4
; - Le nom de la catégorie :
Mon autre catégorie
; - Un tableau comprenant les éléments précédents :
array('ma-categorie', 4, 'Mon autre catégorie')
;
Dans le cas du tableau, la condition sera vérifiée si un article appartient à l’une des catégories présentes.
Si vous avez envie d’afficher un contenu complémentaire en fonction d’une étiquette, c’est exactement la même chose sauf qu’il faut utiliser la fonction has_tag()
au lieu de in_category()
.
Avant de vous laisser, voyons…
Comment ajouter un contenu avant un article
Jusqu’à présent nous avons vu comment ajouter un bloc après les articles, voyons maintenant comment faire l’inverse.
Après tout, cela peut s’avérer super pratique pour ajouter une bannière automatiquement sur vos articles (ou certains d’entre-eux si vous jouez avec les conditions).
Comme d’habitude, cela se passe dans le fichier functions.php
de votre thème enfant :
Dans ce snippet, on ajoute le code de notre encart au contenu que l’on veut afficher, puis on ajoute le contenu de l’article avant de le renvoyer. Vous voyez le principe ?
Bien sûr, il faudra adapter le code CSS car j’ai changé le nom de la classe 😉
Conclusion
En quelques lignes de code, il est possible d’ajouter du contenu après vos articles pour inciter vos lecteurs à poursuivre leur visite là où vous le souhaitez.
Grâce aux fonctions de WordPress, on peut même afficher un contenu spécifique en fonction de la catégorie ou de l’étiquette de l’article. C’est tout bête, mais ça permet d’aider au mieux les visiteurs.
À présent, c’est à vous de jouer avec votre site 🙂
PS : À votre avis, qu’est-ce que la Marmite veut vous faire découvrir suite à la lecture de ce snippet ?
Super tuto généraliste qui présente la puissance des functions.php sous WP.
Par contre ajouter de l’HTML en masse quand on utilise un builder comme Divi c’est pas top. Du coup, pour aller plus loin il me semblerait utile que vous ajoutiez une explication pour utiliser un Layout (pour Divi que vous connaissez bien) à la place du HTML, par exemple par l’usage de ce snippet PHP – que j’intègre en général dans le fichier de thème, ici single.php et ça ressemble à ça :
Mais alors une fois passé le if(is-single()) je ne sais pas comment insérer/adapter ce snippet – en prenant le cas le plus basique :
add_filter(‘the_content’, ‘wpm_add_post_content’); function wpm_add_post_content($content) {
//Si on est sur un article
if(is_single()) {
//On ajoute ce contenu. Notez le “.” avant le “=” qui permet de concaténer ce texte après le contenu de l’article
$content .= ‘
Ceci est mon bloc de texte après le contenu de mon article. En savoir plus
‘; }
return $content; }
J’espère surtout que c’est facilement réalisable car ça pourrait sensiblement améliorer les possibilités de personnalisation des pages.
Dans l’impatience de vous lire 🙂
Salut Thibault, sur Divi tu as dans Réglages->Intégration déja la possibilité d’intégrer du contenu après les articles sans rentrer dans le code
Bonjour, tout d’abord merci pour ce tuto. Etant novice je ne souhaite pas faire de bétises sur mon site.
Je souhaiterais ajouter une bannière de pub en dessous de chacuns de mes articles. J’ai trouvé mon fichier functions.php mais je ne sais pas à quel endroit de se fichier je dois insérer le code html de ma bannière. Please help
Bonjour, tu dois mettre ton code entre les guillemets à la place de
Bonjour,
Dans les résultats de recherche, je n’ai que le titre et la description. Je souhaiterais si c’est possible ajouter un texte comme cet exemple pour les articles voire afficher l’article complet. Es-ce possible ?
Je vous remercie de votre aide.
Tifany
Bonjour Tifany,
Oui c’est possible, mais il faut passer par le code en utilisant la fonction Is_search() pour tester si l’on est sur une page de résultat de recherche.
On ne peut pas aller plus loin car on ne fournit pas de support.
j’aimerai savoir si il est possible de créer un code aillant pour fonction :
1) random d’un tableau de mot clef,
2) ajout en préfixe ou suffixe d’un titre d’article quand celui ci est crée,
3) ajout dans le texte de l’article aprés XX mot ou paragraphe…
Bonjour,
Merci beaucoup pour ce super tuto.
J’ai tenté d’ajouter une bannière avant mes articles mais cela fonctionne pas.
En fait ça fonctionne tant que je n’essaie pas de cibler les catégories. Mais dès que je cible les catégories, je reçois une erreur 500.
Voici mon code :
// Ajouter du contenu avant les articles de certaines catégories
add_filter(‘the_content’, ‘wpm_add_post_content_before’);
function wpm_add_post_content_before($content) {
//Si on est sur un article
if(is_single()) {
// Pour les articles classés dans ‘autres-spiritueux’
if(in_category(‘autres-spiritueux’)){
//On ajoute notre contenu avant le contenu de l’article
$content = ‘
‘ . $content;
}else if(in_category(‘cocktails-au-whisky’)){
// Pour les articles de la catégorie “cocktails-au-whisky”
$content = ‘
‘ . $content;
}else if(in_category(‘duels-de-whiskies’)){
// Pour les articles de la catégorie “duels-de-whiskies”
$content = ‘
‘ . $content;
}else if(in_category(‘les-grands-noms-du-whisky’)){
// Pour les articles de la catégorie “les-grands-noms-du-whisky”
$content = ‘
‘ . $content;
}else if(in_category(‘news’)){
// Pour les articles de la catégorie “news”
$content = ‘
‘ . $content;
}else if(in_category(‘notes-de-degustation’)){
// Pour les articles de la catégorie “notes-de-degustation”
$content = ‘
‘ . $content;
}else if(in_category(‘presentations-de-distilleries’)){
// Pour les articles de la catégorie “presentations-de-distilleries”
$content = ‘
‘ . $content;
}else if(in_category(‘recettes-au-whisky-et-accompagnements’)){
// Pour les articles de la catégorie “recettes-au-whisky-et-accompagnements”
$content = ‘
‘ . $content;
}else if(in_category(‘the-whisky-lady’)){
// Pour les articles de la catégorie “the-whisky-lady”
$content = ‘
‘ . $content;
}else if(in_category(‘weekly-dram’)){
// Pour les articles de la catégorie “weekly-dram”
$content = ‘
‘ . $content;
}else{
// Pour les articles des catégories restantes
}
return $content;
}
Pouvez-vous me dire ce qui ne va pas svp ?
Infos sur le site : wordpress avec divi et woocommerce
Merci d’avance !
Bonjour, si tu as une erreur 500 c’est que tu as fait une faute de syntaxe quelque part. Peux-tu activer les erreurs PHP et me donner ton erreur stp : https://fr.docs.wp-rocket.me/article/1257-wpdebug-activer-logs-erreurs-wordpress ?
Merci beaucoup, j’ai trouvé, une parenthèse mal fermée..
Merci beaucoup pour l’astuce