web-dev-qa-db-fra.com

Arrêtez WordPress de supprimer les commentaires HTML dans le contenu

Chaque fois que je passe de l'éditeur visuel à l'éditeur de texte (HTML) et que je mets un commentaire HTML dans le code, par exemple. <!-- this is a comment-->, WordPress le supprime, soit après avoir enregistré la modification, soit passé d’un mode à l’autre.

Est-ce une bizarrerie de WordPress ou de TinyMCE et, plus important encore, comment puis-je arrêter cela afin de pouvoir conserver les commentaires dans le contenu?

4
j08691

On dirait que c'est TinyMCE qui le fait, et cela peut être corrigé en modifiant les options valid_elements ou extend_valid_elements. J'utilise le plugin Advanced TinyMCE Configuration qui facilite grandement cette tâche. La valeur que l'une ou l'autre des options ci-dessus doit utiliser est --[*]'

Par exemple: valid_elements: 'strong,em,--[*]'

0
j08691

Cela est dû à un très ancien bogue du commentaire HTML de WordPress qui n’a jamais été complètement corrigé.

Vous pouvez utiliser Gutenberg, il gère mieux les commentaires HTML.

De plus, This Post suggère de placer un TAG de commentaire HTML de début, juste avant le fonctionnement de la balise de commentaire HTML de fin. Comme ça:

<!-- some HTML Comment <!-- -->

Ceci est un commentaire HTML valide, mais dans mes tests, cela fonctionne parfois, mais présente un comportement erratique d'autres fois.

Comme le bogue existe toujours et marqué pour être corrigé pour WordPress 5.0 (défini comme jalon), je suppose que vous pouvez toujours trouver un comportement erratique.

Correction de shortcode:

Si le commentaire HTML est trop important pour vous, vous pouvez utiliser un shortcode pour le placer de manière cohérente. Par exemple, utilisez cet exemple de plug-in (modifiez-le en fonction de vos besoins):

<?php
/*  
Plugin Name:  WPSE HTML Comment Shortcode
Plugin URI:   https://wordpress.stackexchange.com/a/312622/110572
Description:  WPSE Shortcode check
Version:      1.0.0
Author:       Fayaz Ahmed
Author URI:   https://www.fayazmiraz.com/
*/

remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 99 );
add_filter( 'the_content', 'shortcode_unautop', 100 );
function wpse312622_html_comment( $attr, $content = "" ) { 
    return $content;
}   
add_shortcode( 'comment', 'wpse312622_html_comment' );

Ensuite, utilisez le shortcode [comment] en mode HTML/TEXT comme ci-dessous:

Some Content
[comment]
<!--
This is
<div> comment!</div>
OK -->
[/comment]
Some other content.

En mode visuel, vous ne verrez que:

Some Content
[comment]
[/comment]
Some other content.

Mais cela ne casse pas la sauvegarde ou le changement de mode.

1
Fayaz