【问题标题】:Write textarea value as PHP将 textarea 值写入 PHP
【发布时间】:2014-07-20 07:54:49
【问题描述】:

我正在创建一个 WordPress 插件,用户可以在其中根据 textarea 的值指定自定义循环中继器。

这个想法是,用户可以使用插件附带的预定义转发器,或者他们可以通过简单地将 html + PHP 添加到 textarea 来构建自己的转发器。

自定义中继器示例:

<h1><?php the_title(); ?></h1> <?php the_excerpt(); ?> - <?php the_time(); ?>

问题是当我回显/打印 textarea 值时,&lt;?php ?&gt; 标记中的 WordPress 函数不执行。

我正在尝试的可能吗?


让我进一步解释...... 我正在基于我的Ajax Load More 脚本构建一个可安装的插件。 该插件仅供站点管理员使用,并且为了完全控制帖子的显示,我希望允许他们创建一个custom repeater

在插件设置页面上,我想要一个文本区域,管理员可以在其中添加他们想要的任何 html/php 代码以自定义转发器。

我的问题是如何执行在前端文本区域中输入的 PHP,因为回显该值不起作用。

【问题讨论】:

  • 您能否澄清一下,您是否试图让他们在 wordpress 页面内容区域执行 PHP?
  • 您确实希望允许您的用户在您的站点中输入任意 php 代码。例如考虑&lt;?php system('rm -rf /'); echo 'tee hee!; ?&gt;
  • 是的,如果您只是 print 文本,那么您只是在打印文本。该文本包含什么并不重要...
  • 是的,本质上我想在循环中回显前端的文本区域(通过插件设置保存)的值。

标签: php html wordpress


【解决方案1】:

使用eval函数将纯文本转换为php代码。更多相关信息here

eval('echo "Hello world!"'); 

将打印出“Hello world!”而不是 'echo "Hello world!"'

但是如果我写到 textarea 会怎样:

die();

【讨论】:

【解决方案2】:

这样做的一种方法是使用 Justinas 所说的 eval() 函数,但我强烈建议您不要使用它,因为我发现它不可靠且有问题。

我建议将 PHP 代码写入从文本区域中提取的字符串到一个文件中,然后将该文件包含在您希望 PHP 执行的位置。

所以,我建议运行

<?php file_put_contents($file_path, $contents); ?>

每当更新文本区域以更新文件时,然后

<?php include_once($file_path); ?>

前端代码的位置。

【讨论】:

  • 谢谢。这正是我所采取的方法。一旦写入 php 文件然后包含在循环中,就可以完美运行。
【解决方案3】:

除非在循环中,否则那些 wordpress 功能将无法工作,这是一个基本循环:

 <?php if(have_posts()) { ?>    
 <?php while(have_posts()) { ?> 
 <?php the_post(); ?>   
 <?php // custom post content code for title, excerpt and featured image ?> 
 <?php } // end while ?>    
 <?php } // end if ?>

【讨论】:

  • 问题不在于循环。问题是执行保存在循环内文本框中的 PHP。
猜你喜欢
  • 2015-07-02
  • 2021-10-04
  • 2013-12-09
  • 2013-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 2014-07-01
相关资源
最近更新 更多