我正在创建一个WordPress插件,用户可以根据textarea的值指定自定义循环转发器。
这个想法是,用户可以使用插件附带的预定义转发器,或者只需将html + PHP添加到textarea即可构建自己的转发器。
自定义转发器的示例:
<h1><?php the_title(); ?></h1> <?php the_excerpt(); ?> - <?php the_time(); ?>
问题是当我回显/打印textarea值时,<?php ?>
标记内的WordPress函数不会执行。
我尝试的甚至可能吗?
让我进一步解释...... 我正在构建一个基于Ajax Load More脚本的可安装插件。 此插件仅供网站管理员使用,并且可以完全控制我希望允许他们创建custom repeater的帖子。
在插件设置页面上,我想要一个textarea,管理员可以在其中添加他们想要的任何html / php代码,以便自定义转发器。
我的问题是如何执行在前端的textarea中输入的PHP,因为回显该值不起作用。
答案 0 :(得分:2)
使用eval
函数将纯文本更改为php代码。关于它的更多信息here
eval('echo "Hello world!"');
将打印出“Hello world!”而不是'echo'Hello world!“'
但是如果我写信给textarea:
die();
答案 1 :(得分:1)
这样做的一种方法是使用Justinas所说的eval()
函数,但我强烈建议您不要使用它,因为我发现它不可靠且有问题。
我建议将PHP代码从您从文本区域提取的字符串写入文件,然后将该文件包含在您希望PHP执行的位置。
所以,我建议运行
<?php file_put_contents($file_path, $contents); ?>
每当更新文本区域以更新文件时,
<?php include_once($file_path); ?>
您希望代码位于前端。
答案 2 :(得分:-1)
除非它们在循环中,否则那些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 ?>