web-dev-qa-db-fra.com

Comment les thèmes rendent-ils les textes de légende dans le balisage étendu (par exemple, les paragraphes "wp-caption")

J'ai créé mon propre thème basé sur un modèle très maigre. Mon thème n’analyse pas le balisage [caption]...[/caption] avec le code HTML correct. Il s'agit simplement de montrer le texte sans annotation. Voici les observations pertinentes pour ma situation:

  • Lorsque vous modifiez le message, il affiche [caption]...[/caption] en mode "Texte" et une image Nice avec légende en mode "Visual". (comme prévu)
  • Si je visualise le post (single), il restitue une balise <img .../> et le texte de la légende en texte brut.
  • Si je visualise le message (single) dans le thème TwentyEleven, il rend le texte de la légende dans une balise spéciale <p class="wp-caption-text">my caption</p>. C'est ce que je recherche dans mon propre thème.

Cette dernière observation semble importante et devrait me conduire à la solution. J'ai fouillé dans le thème TwentyEleven et constaté qu'il rend le contenu de la même manière que mon propre thème:

<?php the_content(); ?>

J'ai ouvert et recherché tous les fichiers TwentyEleven, mais je n'ai trouvé aucun élément "wp-caption" important, ni aucun autre indice permettant de savoir comment TwentyEleven demande à WordPress d'analyser les légendes et de les restituer. les avec un balisage spécial.

J'ai parcouru le fichier functions.php dans TentyEleven parce que mon instinct me disait que le thème pouvait enregistrer un crochet ou un filtre pour l'analyse de shortcode, mais je ne trouvais rien.

De plus, j'ai essayé les solutions suivantes:

  • echo apply_filters('the_content', get_the_content());
  • echo do_shortcode(get_the_content());

Mais ni donne le résultat souhaité.

La question est donc : Comment un thème peut-il amener WordPress à analyser les légendes et à les rendre dans un balisage spécial?

1
Jeroen

Ce shortcode captionest intégré à WordPress . Il devrait générer le même balisage pour n’importe quel thème, à moins que le thème ou un plugin ne l’ait désinscrit et n’ait enregistré un remplaçant. Je ne sais pas si c'est le cas avec votre thème ou avec TwentyEleven. Recherchez "img_caption_shortcode" dans vos fichiers de thème, probablement functions.php. Si votre thème annule son enregistrement, , vous devriez voir remove_shortcode('img_caption_shortcode'); quelque part .

Le CSS, et donc l’apparence du shortcode traité, variera presque certainement d’un thème à l’autre.

3
s_ha_dum