阻止WordPress删除内容中的HTML注释

时间:2018-08-27 作者:j08691

每当我从可视化编辑器切换到文本(HTML)编辑器并放置HTML comment 在代码中,例如。<!-- this is a comment-->, WordPress会在保存更改或在编辑模式之间来回切换后删除它。

这是WordPress或TinyMCE的一个怪癖吗?更重要的是,我如何阻止这一怪癖,以便将评论保留在内容中?

4 个回复
最合适的回答,由SO网友:j08691 整理而成

看起来是TinyMCE在这样做,可以通过修改valid_elementsextend_valid_elements 选项。我正在使用Advanced TinyMCE Configuration 插件,使这非常容易。上述任一选项要使用的值为--[*]\'

例如:valid_elements: \'strong,em,--[*]\'

SO网友:Fayaz

这是由于very old WordPress HTML Comment bug, 这个问题从未完全解决。

您可以使用Gutenberg,它可以更好地处理HTML注释。

而且This Post 建议在结束HTML注释标记之前放置一个开始HTML注释标记。像这样:

<!-- some HTML Comment <!-- -->
这是有效的HTML注释,但在我的测试中,这有时有效,但有时会显示不稳定的行为。

因为该错误仍然存在并标记为要修复WordPress 5.0 (设定为里程碑),我想你可能仍然会发现一些不稳定的行为。

快捷码修复:

如果HTML注释对您来说太重要,那么您可以使用快捷码来一致地放置注释。例如,使用此示例插件(根据需要进行修改):

<?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\' );
然后,使用[comment] HTML/文本模式下的短代码如下:

Some Content
[comment]
<!--
This is
<div> comment!</div>
OK -->
[/comment]
Some other content.
在视觉模式下,您只能看到:

Some Content
[comment]
[/comment]
Some other content.
但它不会中断保存或模式更改。

SO网友:Rolf Kyburz

我能理解;“不要使用HTML注释”;上面的建议在WP中插入HTML注释是很尴尬的,因为(至少在过去)必须切换到文本模式编辑,否则注释就是(正确的!)看不见的此外,一旦开始使用HTML注释编辑块,WP就会删除该注释,而用户并不知道这一点。

现在,我在我的所有博客帖子中都使用了HTML评论(我用它们来存储标准化的搜索词),因此我学会了接受上述怪癖。然而,现在我意识到,至少在WP 5.5和;5.6,有一个;自定义HTML“;块在这里,我可以编写持久的HTML注释(即WP不会自动删除),在编辑器中可见(不切换到文本模式编辑),并且不会在前端显示的Web内容中留下任何痕迹。就我自己而言,我认为这个问题已经解决。

SO网友:Mark Kaplun

正确的解决方案是找到一种不使用HTML注释的方法。我知道我在这里对着飓风低语,但wordpress是(或应该是)CMS,而不是frontpage/dreamweaver的克隆版。操纵原始HTML应该留给那些无法以任何其他方式解决的极端情况。让我们甚至不要开始关于古腾堡使用注释的死胡同,这意味着您这方面的一些不小心的编码或GB方面的bug可能会在不应该的地方引入一个块。

(甚至在GB之前,wordpress就使用注释作为重要标记,这是因为遗留的原因)

不要这样做。

结束

相关推荐

No duplicate tags by category

我有脚本显示类别中的列表标签,效果很好。<ul class=\"inline-list\"> <?php query_posts(\'category_name=lain-lain\'); if (have_posts()) : while (have_posts()) : the_post(); if( get_the_tag_