gpt4 book ai didi

php - update_option 文本区域包含 html 和 php

转载 作者:搜寻专家 更新时间:2023-10-30 20:18:41 27 4
gpt4 key购买 nike

这就是我正在做的事情。我在插件的设置页面上有一个表单字段文本区域。到目前为止,我所拥有的是将内容正确存储在数据库中。此内容将是 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com