- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
这就是我正在做的事情。我在插件的设置页面上有一个表单字段文本区域。到目前为止,我所拥有的是将内容正确存储在数据库中。此内容将是 HTML/PHP,更具体地说,它将是 WordPress 循环内的内容结构和模板标签。
我正在使用这段代码在表单提交时将表单中的数据插入到数据库中。
if (isset($_POST["update_settings"])) {
$customPostLayout = esc_attr($_POST["post-layout"]);
update_option('aw_wp_yca_postcontent', $customPostLayout);
}
然后我用这个显示数据:
echo get_option('aw_wp_yca_postcontent');
所以假设我有这个形式:
<div id="wrapper">
<?php the_title(); ?>
</div>
当我转到应该显示帖子的前端时,我得到了这个:
<div id=\"wrapper\"> <?php the_title(); ?> </div>
因此,不是在循环内渲染,而是将其作为字符串输出。我在这里做错了什么?我试过使用 eval()
,这不是我的偏好,也尝试过使用 htmlspecialchars()
和 htmlentities()
的各种东西。显然我不明白这里的东西。
最佳答案
当你将它放入数据库时,你存储的是一个文本字符串。因此,当您从数据库中提取它时,您得到的只是一个文本字符串。如果你回显一个文本字符串,唯一会被执行的代码是客户端代码(html、javascript、css 等)。如果你想从一个字符串中执行 php 代码,那么是的,你将不得不使用 eval , 这不是好的做法。但是,我也不认为将 php 存储在数据库中是一种好的做法。
尽管如此,您的 eval 失败的原因是因为 eval() 需要一串有效的 php 代码,IE,介于 <?php
之间的东西和 ?>
.您的代码以 html 开头,因此如果您希望它正确评估 html,则需要对其进行一些编辑。
eval("?> <b>foo</b> <?php ;");
例如,这将正确评估:
$myEvalString="?> ".get_option('aw_wp_yca_postcontent'). "<?php ;";
eval($myEvalString);
要使 php 从字符串运行代码,您可以做的另一件事是将其写入文件,然后包含它,如下所示:
file_put_contents("/your/file/path/specialCode.php",get_option('aw_wp_yca_postcontent'));
//your loop code...
include '/your/file/path/specialCode.php';
//..
关于php - update_option 文本区域包含 html 和 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18263736/
我正在为 WordPress 的管理区域制作一个表单。这是到目前为止的代码; 在管理区域的页面上,文本框会自动填充“$gpspl_options”。但是,当我添加文本并点击提交时,它不会更新
这就是我正在做的事情。我在插件的设置页面上有一个表单字段文本区域。到目前为止,我所拥有的是将内容正确存储在数据库中。此内容将是 HTML/PHP,更具体地说,它将是 WordPress 循环内的内容结
我正在更新一个已经发布了一段时间的 WordPress 插件,插件“面向 future ”的一部分是摆脱在插件开始阶段实现的一些伪劣命名方案。 我想我会简单地添加一个激活钩子(Hook)来检查这些名称
我在使用 get_option 和 update_option 时遇到了一个奇怪的问题。我需要向 wp_options 表添加一个选项,所以我使用了这个 update_option('_option_
我是一名优秀的程序员,十分优秀!