每当我从可视化编辑器切换到文本(HTML)编辑器并放置HTML comment 在代码中,例如。<!-- this is a comment-->
, WordPress会在保存更改或在编辑模式之间来回切换后删除它。
这是WordPress或TinyMCE的一个怪癖吗?更重要的是,我如何阻止这一怪癖,以便将评论保留在内容中?
每当我从可视化编辑器切换到文本(HTML)编辑器并放置HTML comment 在代码中,例如。<!-- this is a comment-->
, WordPress会在保存更改或在编辑模式之间来回切换后删除它。
这是WordPress或TinyMCE的一个怪癖吗?更重要的是,我如何阻止这一怪癖,以便将评论保留在内容中?
看起来是TinyMCE在这样做,可以通过修改valid_elements
或extend_valid_elements
选项。我正在使用Advanced TinyMCE Configuration 插件,使这非常容易。上述任一选项要使用的值为--[*]\'
例如:valid_elements: \'strong,em,--[*]\'
这是由于very old WordPress HTML Comment bug, 这个问题从未完全解决。
您可以使用Gutenberg,它可以更好地处理HTML注释。
而且This Post 建议在结束HTML注释标记之前放置一个开始HTML注释标记。像这样:
<!-- some HTML Comment <!-- -->
这是有效的HTML注释,但在我的测试中,这有时有效,但有时会显示不稳定的行为。因为该错误仍然存在并标记为要修复WordPress 5.0
(设定为里程碑),我想你可能仍然会发现一些不稳定的行为。
<?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.
但它不会中断保存或模式更改。我能理解;“不要使用HTML注释”;上面的建议在WP中插入HTML注释是很尴尬的,因为(至少在过去)必须切换到文本模式编辑,否则注释就是(正确的!)看不见的此外,一旦开始使用HTML注释编辑块,WP就会删除该注释,而用户并不知道这一点。
现在,我在我的所有博客帖子中都使用了HTML评论(我用它们来存储标准化的搜索词),因此我学会了接受上述怪癖。然而,现在我意识到,至少在WP 5.5和;5.6,有一个;自定义HTML“;块在这里,我可以编写持久的HTML注释(即WP不会自动删除),在编辑器中可见(不切换到文本模式编辑),并且不会在前端显示的Web内容中留下任何痕迹。就我自己而言,我认为这个问题已经解决。
正确的解决方案是找到一种不使用HTML注释的方法。我知道我在这里对着飓风低语,但wordpress是(或应该是)CMS,而不是frontpage/dreamweaver的克隆版。操纵原始HTML应该留给那些无法以任何其他方式解决的极端情况。让我们甚至不要开始关于古腾堡使用注释的死胡同,这意味着您这方面的一些不小心的编码或GB方面的bug可能会在不应该的地方引入一个块。
(甚至在GB之前,wordpress就使用注释作为重要标记,这是因为遗留的原因)
不要这样做。
我有脚本显示类别中的列表标签,效果很好。<ul class=\"inline-list\"> <?php query_posts(\'category_name=lain-lain\'); if (have_posts()) : while (have_posts()) : the_post(); if( get_the_tag_