Balise « more » de WordPress

J’ai bataillé un peu autour de cette fameuse balise « more » qui permet de n’afficher que le début d’un article dans la page d’accueil du blog. En fait, je recherchais comment faire de même dans un article, option exclue dans le code de WP.

Voilà quelques trucs, récoltés ici et là.

  • Modifier le texte de la balise « more »

Il est possible de modifier le texte qui sera affiché : à la place de <!–more–> il suffit de saisir :

<!--more Le texte qui sera affiché-->
  • Afficher l’article complet

Par défaut, le lien « more » renvoie à la portion de l’article située sous la balise. Pour afficher l’article complet, ajouter ce bout de code à la fin du fichier functions.php de votre thème :

/*
 * Renvoie en tête de l'article si balise "more"
 */
function remove_more_jump_link($link) {
 $offset = strpos($link, '#more-');
 if ($offset) {
 $end = strpos($link, '"',$offset);
 }
 if ($end) {
 $link = substr_replace($link, '', $offset, $end-$offset);
 }
 return $link;
 }
 add_filter('the_content_more_link', 'remove_more_jump_link');
  • Plus trapu : balise « more » sur un article

Là c’est pas évident de trouver, c’est surtout pour ça que j’ai créé cet article. Par défaut, WordPress n’affiche pas les balise more sur les articles (single post), mais seulement sur la page d’accueil, les pages de recherche, les archives … (multiple posts).

En attendant de trouver une solution, j’ai testé 2 variantes :

Variante 1 :

  • Mettre une balise !--more-- dans l’article : comme ça l’article est coupé sur la page d’accueil,
  • Mettre ensuite une balise !--nextpage-- qui coupe l’article en plusieurs page, ce qui masque donc la fin de l’article située dans la page 2.

Inconvénient : la pagination est affichée et c’est pas très esthétique, ni très « user friendly ».

Variante 2 :

C’est à nouveau Guy qui m’a mis sur la voie des « spoilers », cette fonctionnalité qui permet de masquer une partie du texte et de ne l’afficher que lorsqu’on clique sur un titre ou un bouton.

J’ai installé un plugin « Easy spoiler » qui permet de masquer une partie de l’article. Je l’ai pas mal bidouillé pour personnaliser l’affichage, il me reste juste une ligne grise à supprimer en bas de l’article, mais je n’arrive pas à savoir d’où elle vient.

Variante 3 : la solution

Comme je veux le minimum de plugins, et après de nombreux essais, j’ai finalement adopté une solution très légère, dont j’espère qu’elle fonctionne sur tous les navigateurs (testé sur IE9, Firefox et Chrome).  En voici le code. Pour le fun, il faut cliquer sur le lien pour afficher la suite de l’article 😉

[ Montrer ]

Enjoy !

20 réflexions sur « Balise « more » de WordPress »

  1. Bonjour, merci pour cet article. Enfin quelqu’un qui se penche sur le bouton Spoiler sur Worpress ! 🙂 Malheureusement, la variante 3, qui me paraissait indiquée, ne fonctionne pas.
    Tout est bien dans l’HTML, idem pour l’affichage, mais une fois l’article publié, on ne parvient pas à cliquer sur la bouton :/
    Si quelqu’un a une solution je suis preneuse !

    • Bonjour Jason,
      Je ne sais pas ce qui s’est passé, désolé.
      Quand on met des codes HTML un peu sophistiqués dans les articles, WP les simplifie.
      Pour contourner ça, il existe des plugins qui forcent la conservation du code. je crois me souvenir que ça s’appelle « raw html »

  2. bonjours je suis encore débutant avec wordpress.. j’ai trouvé la variante 3 super.. et c’est d’elle que j’avais besoin mais je veut savoir ou l’inséré parce que je ne trouve pas la page HTML de mon thème wordpress. merci d’avance

    • En fait, au moment au tu rédiges un article, tu as deux onglets en haut à droite, au dessus des commandes de mise en forme : « Visuel » et « Texte ».

      Dans « Texte » tu peux insérer du HTML. (Parfois WordPress l’adapte dans son propre langage mais il y a bcp de trucs qu’il comprend, comme les a, div, br, p, …

  3. Bonjour,

    Un grand merci pour cette info qui m’a bien aidée alors que je tournais en rond avec tous les autres tuto et info trouvées.

    Clair, net, précis. MERCI !

  4. Bonsoir, j’ai cliqué sur le bouton « More » au-dessus de l’article que j’ai écris, du coup quand je le diffuse sur Facebook, ça n’affiche pas le texte de l’article, mais un code et « vous pouvez utiliser ces balises et attributs HTLM »

    Je reclic dessus, et ça n’y change rien! Logiquement quand on clic sur un bouton pour l’activer, il suffit de reclic dessus pour le désactiver! Pas top ce truc!

    Comment remettre le texte à la normale???
    Merci

  5. J’ai trouvé une 4 variante qui marche 😉

    Il faut redéclarer la variable more avant d’utiliser la fonction

    global $more; // Declare global $more (before the loop).
    $more = 0; // Set (inside the loop) to display content above the more tag.
    the_content(« More… »);

    source : http://codex.wordpress.org/Function_Reference/the_content#Overriding_Archive.2FSingle_Page_Behavior – chapitre Overriding Archive/Single Page Behavior

  6. bonjour
    mon site est en construction et j’ai un probleme avec la balise more.La balise « lire la suite » s’affiche correctement quand je l’insere mais quand je clique dessus dans l’article,il ne se passe rien.Savez vous d’ou vient le probleme ?.Merci pour votre réponse.

    • Bonjour Alexis,
      Difficile de dire quoi que ce soit sans voir le site … Merci d’en indiquer l’URL.
      S’il s’agit de la balise « More » classique je vous serai de peu d’utilité car c’est du classique WP. Si c’est un spoiler comme je le propose je peux regarder le code.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *