使用包含html和php的文本区域更新_选项
这就是我要说的。我在插件的设置页面上有一个表单字段文本区域。到目前为止,我所做的是将内容正确地存储在数据库中。该内容将是HTML/PHP,更具体地说,它将是WordPress循环中的内容结构和模板标记 我使用这段代码在表单提交时将表单中的数据插入数据库使用包含html和php的文本区域更新_选项,php,database,wordpress,Php,Database,Wordpress,这就是我要说的。我在插件的设置页面上有一个表单字段文本区域。到目前为止,我所做的是将内容正确地存储在数据库中。该内容将是HTML/PHP,更具体地说,它将是WordPress循环中的内容结构和模板标记 我使用这段代码在表单提交时将表单中的数据插入数据库 if (isset($_POST["update_settings"])) { $customPostLayout = esc_attr($_POST["post-layout"]); update_option('aw_wp
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代码字符串,即介于
之间的代码。您的代码以html开头,因此如果您希望它正确地评估html,那么您需要对其进行一些编辑
eval("?> <b>foo</b> <?php ;");
谢谢你的回复。我无法让您的第二个选项正常工作,一直得到一个名为
文件\u put\u contents(filepath/file)[function.file put contents]:无法打开流:权限被拒绝的文件。你的第一个选择奏效了;但是,我的表单提交仍在转义html中的任何引号。然后用反斜杠将它们写在页面上。有什么想法吗?用斜杠($yourString)来修正引号。发生权限问题是因为您可能没有对服务器的root访问权限,这取决于您的托管计划。您是否具有ssh中服务器的root访问权限?还是你在用cpanel?你有什么托管计划?我有根访问权限,并通过ssh将适当的文件设置为777。还是不走运。这在内部虚拟LAMP服务器上,而不是在外部共享主机上。我很快就会试试睫毛膏,然后告诉你。谢谢你的更新。太好了!如果仍然存在权限问题,请确保已为目标文件夹(而不仅仅是文件)设置了正确的权限。
$myEvalString="?> ".get_option('aw_wp_yca_postcontent'). "<?php ;";
eval($myEvalString);
file_put_contents("/your/file/path/specialCode.php",get_option('aw_wp_yca_postcontent'));
//your loop code...
include '/your/file/path/specialCode.php';
//..