我如何才能阻止wp_UPDATE_POST弄乱了HTML示例代码?

时间:2015-06-03 作者:Firsh - justifiedgrid.com

我在前端展示了一些示例HTML/PHP代码(语法突出显示)。这些条目显示为FAQ自定义帖子,并有一个插件(CMS树页面)来改变菜单顺序,在菜单上显示这些内容。每当我更改顺序时,它都会调用wp_update_post, 正在更新ID, menu_order, post_parent, post_type. 对于调试,我输出post_content 更新前和更新后的产权都会发生可怕的变化。

之前(正确):

[html light="true"]</body>[/html]
之后(凌乱):

[html light="true"]</body>[/html]
如果我再这样做几次,它就会变成活地狱:

[html light="true"]</body>[/html]
看起来很像htmlspecialchars() 具有ENT_NOQUOTES 已经在上面投下了。。。

请注意,这些来自“源代码”视图,而不是前端。浏览器正确处理“Before”状态,并将其呈现为

</body>
我怎样才能防止它变得一团糟?

1 个回复
SO网友:Firsh - justifiedgrid.com

是的https://wordpress.org/plugins/syntaxhighlighter/ 插件故障。其中有一些功能与此相关,即encode_shortcode_contents_slashed_noquickedit, encode_shortcode_contents_callback.

现在我将其替换为https://wordpress.org/plugins/crayon-syntax-highlighter/ 但当我确认这是另一个插件的错误时,我已经写了一个解决方案。

function wpse190396_insert_post_data($data, $postarr){
    if($postarr[\'filter\'] == \'db\'
        && ($data[\'post_type\'] == \'fix\' || $data[\'post_type\'] == \'faq\')
        && (strpos($data[\'post_content\'],\'&amp;lt;\') !== false
            || strpos($data[\'post_content\'],\'&amp;nbsp;\') !== false
            || strpos($data[\'post_content\'],\'&amp;gt;\') !== false
            )){
        $data[\'post_content\'] = htmlspecialchars_decode($data[\'post_content\']);
    }
    return $data;
}

add_action( \'wp_insert_post_data\', \'wpse190396_insert_post_data\', 10, 2 );

结束

相关推荐

在触发“The Plugin Generated x Characters of Underular Output of Underful Output During Activate”错误时查看输出

我正在开发一个插件,在创建新表时遇到了一些困难。我得到了“插件在激活期间生成了x个字符的意外输出”错误。是否有办法查看实际错误?我认为这个过程涉及重定向,因此我没有看到实际的错误输出。我有所有的错误报告和登录,但仍然一无所获。

我如何才能阻止wp_UPDATE_POST弄乱了HTML示例代码? - 小码农CODE - 行之有效找到问题解决它

我如何才能阻止wp_UPDATE_POST弄乱了HTML示例代码?

时间:2015-06-03 作者:Firsh - justifiedgrid.com

我在前端展示了一些示例HTML/PHP代码(语法突出显示)。这些条目显示为FAQ自定义帖子,并有一个插件(CMS树页面)来改变菜单顺序,在菜单上显示这些内容。每当我更改顺序时,它都会调用wp_update_post, 正在更新ID, menu_order, post_parent, post_type. 对于调试,我输出post_content 更新前和更新后的产权都会发生可怕的变化。

之前(正确):

[html light="true"]&lt;/body&gt;[/html]
之后(凌乱):

[html light="true"]&amp;lt;/body&amp;gt;[/html]
如果我再这样做几次,它就会变成活地狱:

[html light="true"]&amp;amp;amp;lt;/body&amp;amp;amp;gt;[/html]
看起来很像htmlspecialchars() 具有ENT_NOQUOTES 已经在上面投下了。。。

请注意,这些来自“源代码”视图,而不是前端。浏览器正确处理“Before”状态,并将其呈现为

</body>
我怎样才能防止它变得一团糟?

1 个回复
SO网友:Firsh - justifiedgrid.com

是的https://wordpress.org/plugins/syntaxhighlighter/ 插件故障。其中有一些功能与此相关,即encode_shortcode_contents_slashed_noquickedit, encode_shortcode_contents_callback.

现在我将其替换为https://wordpress.org/plugins/crayon-syntax-highlighter/ 但当我确认这是另一个插件的错误时,我已经写了一个解决方案。

function wpse190396_insert_post_data($data, $postarr){
    if($postarr[\'filter\'] == \'db\'
        && ($data[\'post_type\'] == \'fix\' || $data[\'post_type\'] == \'faq\')
        && (strpos($data[\'post_content\'],\'&amp;lt;\') !== false
            || strpos($data[\'post_content\'],\'&amp;nbsp;\') !== false
            || strpos($data[\'post_content\'],\'&amp;gt;\') !== false
            )){
        $data[\'post_content\'] = htmlspecialchars_decode($data[\'post_content\']);
    }
    return $data;
}

add_action( \'wp_insert_post_data\', \'wpse190396_insert_post_data\', 10, 2 );

相关推荐

在触发“The Plugin Generated x Characters of Underular Output of Underful Output During Activate”错误时查看输出

我正在开发一个插件,在创建新表时遇到了一些困难。我得到了“插件在激活期间生成了x个字符的意外输出”错误。是否有办法查看实际错误?我认为这个过程涉及重定向,因此我没有看到实际的错误输出。我有所有的错误报告和登录,但仍然一无所获。