仪表板中的GET_OPTION出现问题

时间:2017-07-15 作者:Greg Skala

我创建了一个简单的插件,它将html代码从仪表板中的文本区域传输到前端页面,在前端页面中调用插件中定义的函数来呈现前端页面。然而,我在阅读选项时遇到了问题。i、 e。保存工作还可以,但阅读会带来问题。

要保存和读取的字段的示例代码。

<textarea name="bn_notice_F" type="text"
    value="<?php echo get_option(\'bn_notice_F\'); ?>" ><?php
    echo get_option(\'bn_notice_F\');
?></textarea> 
保存选项有效,但当我阅读get_option 该函数添加一些文本,消除html标记等。

例如,保存时:

<iframe width="560" height="315"
    src="https://www.youtube.com/embed/rlZRtQkfK04"
    frameborder="0" allowfullscreen></iframe>
它可以正确保存,但在仪表板上显示时,我会得到:

</iframe>" ><iframe width="560" height="315" src="https://www.youtube.com/embed/rlZRtQkfK04" frameborder="0" allowfullscreen></iframe>
有什么线索吗?有没有消毒或类似的东西?如果是这样,如何从文本区域传递和保存原始文本,并读取到文本区域的原始代码?

谢谢你的帮助

更新插件设置为

add_submenu_page(\'options-general.php\', __(\'b_Notice\'), __(\'b_Notice\'), \'delete_plugins\', \'b-notice\', array($this, \'settingsPage\'));
还有一个表单可以保存和读取选项的文本。

那么我有表格代码

<form method="post" action="options.php">
            <?php settings_fields(\'bn\'); ?>
            <?php do_settings_sections(\'bn\'); ?>
             <label for="bn_enabled_S1">Side Notice</label>             
             <input type="checkbox" name="bn_enabled_S1" value="1" <?php checked( \'1\', get_option( \'bn_enabled_S1\' ) ); ?> />           
             <textarea name="bn_notice_S1" type="text" value="<?php echo get_option(\'bn_notice_S1\'); ?>" ><?php echo get_option(\'bn_notice_S1\')?></textarea> 
            <?php submit_button(); ?>            
    </form>
然后是函数

 public function settings(){
    register_setting(\'bn\', \'bn_enabled_F\');
    register_setting(\'bn\', \'bn_notice_F\');
}
感谢您查看代码。

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

问题是你的value="" 属性,例如<textarea value="<iframe>"> 是无效的HTML,浏览器将尽最大努力尝试并修复标记。这就是为什么你会得到奇怪的结果

因此,请移除value 属性你还想带着esc_textarea 防止恶意代码从文本区域溢出

结束

相关推荐

从Options表中的数据创建阵列

大家好,我正试图从wordpress的选项表中的数据创建一个数组。我的数据都以相同的方式开始,然后是字段信息的名称。有没有办法提取所有这些数据并使用WordPress命令创建数组?或者,唯一的方法是使用适当的“SQL查询”,我想很多人都说在WordPress中不要这样做?