我正在创建一个wordpress插件,它将根据用户输入的参数查询数据库,并在链接的html文件中显示结果。我可以让它显示html页面,但结果变量没有通过。
以下是我显示链接HTML文件的方式:
//This is set in another location but
$template = 'results';
//Execute SQL
global $wpdb;
$result = $wpdb->get_results($sql);
//Load template
$content = file_get_contents( plugins_url( 'template-files/'.$template.'.php',__FILE__ ) );
foreach ( $result as $r ){
$contentCopy = $content;
echo jww_display_php_file($contentCopy, $r);
}
function jww_display_php_file( $content, $r ){
$arr = (array)$r;
ob_start() && extract($arr, EXTR_SKIP);
eval('?>'.$content);
$content = ob_get_clean();
ob_flush();
$content .= "<hr>";
return $content;
}
以下是我在HTML文件中的内容:
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td>Name</td>
<td><?php echo $Name; ?></td>
</tr>
</table>
提前感谢您提供任何帮助
答案 0 :(得分:0)
首先,您的results.html
应为results.php
,您无法在php
文件中使用HTML
变量或函数,因此请将文件重命名为{ {1}}然后试试这个
results.php
最后,在$result = $wpdb->get_results($sql);
$content = file_get_contents( plugins_url( 'template-files/results.php',__FILE__ ) );
foreach ( $result as $r ){
$contentCopy = $content;
echo jww_display_file($contentCopy, $r);
}
function jww_display_file( $content, $r ){
$arr = (array)$r;
ob_start() && extract($arr, EXTR_SKIP);
eval('?>'.$content);
$content = ob_get_clean();
ob_flush();
$content .= "<hr>";
return $content;
}
文件中,更改以下内容
results.php
到
<td><?php echo $r->Name; ?></td>
<td><?php echo $r->Age; ?></td>
<td><?php echo $r->DOB; ?></td>
注意: <td><?php echo $Name; ?></td>
<td><?php echo $Age; ?></td>
<td><?php echo $DOB; ?></td>
是邪恶的,但当您使用服务器中的内部文件并且您知道代码是安全的时,这不是问题,这样,{{1加载eval
文件并在Laravel
框架中混合来自控制器的变量。
答案 1 :(得分:0)
我将results.php重命名为results.html,更改了$ content = file_get_contents(plugins_url('template-files /'.$ template。'。html',FILE));它完美无缺!