为什么WordPress剥离了作为表单元素和主题SVG图标的自定义HTML?

时间:2022-01-12 作者:Motivated

当我添加一个只包含表单元素(例如表单、输入、文本区域等)的自定义HTML块时,WordPress似乎正在全面剥离这些元素。

类似地,如果我添加一个SVG图标作为主题的一部分,例如GeneratePress,WordPress似乎也会删除这个图标。

为什么WordPress要过滤这些内容,我有什么解决方案/选项?

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

为什么WordPress要过滤这些

因为这是一个很大的安全漏洞。WordPress会在保存时将您的帖子内容清理到标签和属性的白名单中。当显示帖子内容时,其他过滤器(the_content ) 用于将要素转换为其最终标记。E、 通过交换短代码、呈现动态块、获取嵌入的URL并将其交换为嵌入的HTML代码等。

例外情况是在非多站点自行安装中,管理员可能有unfiltered_html 能力。这是一种绕过安全性的非常危险的功能,例如,您可以插入不平衡的标签来破坏您的网站,或者比特币矿工和恶意软件。此外,任何不是管理员的人打开这篇文章并保存后,都会将其全部删除。

我有哪些解决方案/选项?

除了您所做的以外,任何其他API:

自定义短代码过滤模板,自定义块,自定义小部件(甚至自定义HTML小部件),但不是在帖子内容中执行的原始格式HTML和javascript。

最简单的可能是一个短代码,例如。shortcode-plugin.php:

<?php
/**
 * Plugin Name: I\'m a plugin yay
 */

add_shortcode( \'yourshortcode\', function( $atts ) : string {
    ob_start();
    ?>
    <form>
        ....
    </form>
    <?php
    return ob_get_clean();
} );

相关推荐

Search with filters

我想在搜索表单中创建三个过滤器,其中包括三个不同的过滤器(标签、类别和帖子)。是否可以创建这些过滤器?如果可能的话,意味着我如何创建它?基本上,我不擅长PHP。所以,请帮我解决这个问题。谢谢