Evitar que WordPress elimine comentarios HTML en el contenido

4

Cada vez que cambio del editor visual al editor de texto (HTML) y coloco un Comentario HTML en el código, por ejemplo, <!-- this is a comment--> , WordPress lo elimina, ya sea después de guardar el cambio o cambiar entre los modos de edición.

¿Es esta una peculiaridad de WordPress o TinyMCE y, lo que es más importante, cómo detengo esto para poder mantener los comentarios en el contenido?

    
pregunta j08691 27.08.2018 - 17:37

3 respuestas

0

Parece que es TinyMCE quien está haciendo esto, y se puede arreglar modificando las opciones valid_elements o extend_valid_elements . Estoy usando el complemento Configuración avanzada de TinyMCE , que lo hace muy fácil. El valor para cualquiera de las opciones anteriores para usar es --[*]'

Por ejemplo: valid_elements: 'strong,em,--[*]'

    
respondido por el j08691 31.08.2018 - 15:29
1

Esto se debe a un error muy antiguo del comentario HTML de WordPress , que nunca se solucionó por completo.

Puedes usar Gutenberg, maneja mejor los comentarios HTML.

También, Esta publicación sugiere que se coloque un TAG de comentario HTML inicial, justo antes de que funcione la etiqueta HTML de comentario final. Así:

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

Este es un comentario HTML válido, pero en mis pruebas, esto funciona a veces, pero muestra un comportamiento errático otras veces.

Como el error aún existe y está marcado para ser corregido por WordPress 5.0 (establecido como hito), creo que todavía puede encontrar algún comportamiento errático.

Corrección de código abreviado:

Si el comentario HTML es demasiado importante para usted, entonces puede usar un shortcode para colocar el comentario de manera consistente. Por ejemplo, use este complemento de ejemplo (modifíquelo según sus necesidades):

<?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' );

Luego, use el código corto [comment] en el modo HTML / TEXTO como se muestra a continuación:

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

En el modo Visual, solo verás:

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

Pero no interrumpirá el guardado o el cambio de modo.

    
respondido por el Fayaz 27.08.2018 - 19:00
-4

La solución adecuada es encontrar una manera de no usar comentarios HTML. Sé que estoy susurrando contra el viento del huracán aquí, pero wordpress es (o debería ser) un CMS y no un clon de portada / Dreamweaver. La manipulación de HTML sin procesar debe dejarse para casos extremos que no pueden resolverse de otra manera. Ni siquiera comencemos la conversación sin salida sobre el uso de los comentarios de Gutenberg, lo que significa que una codificación descuidada o un error en el lado de GB podría introducir un bloque donde no debería estar.

(y wordpress incluso antes de GB, usó el comentario como marcadores significativos por razones heredadas)

Simplemente no lo hagas.

    
respondido por el Mark Kaplun 27.08.2018 - 19:24

Lea otras preguntas en las etiquetas