无法通过短码处理php

时间:2011-12-12 作者:Gareth Watson

我一直在寻找解决方法,虽然我对我的问题有了更好的理解(感谢其他人发布的类似查询),但我仍然不确定解决方案。

我正在编写一个短代码,如下所示:

function cup_bc_shortcode(){

$html = file_get_contents(\'/html/cup_bc_layout.php\', true);
return $html;
}
add_shortcode(\'budgetcalc\', \'cup_bc_shortcode\');
文件“cup\\u bc\\u布局”。php’包含html和php。PHP代码在输出时呈现为文本,而不是由浏览器处理。是否有类似的方式包含PHP文件?

我理解,为了工作,短代码必须返回输出,但如果我可以帮助的话,我不希望在这个函数中将其构建为单个字符串。

此外,我对PHP还很陌生,所以即使是最明显的解决方案,我也无法找到。

非常感谢你的帮助。

2 个回复
最合适的回答,由SO网友:Bainternet 整理而成

问题是您正在使用file_get_contents() 它只获取文件的内容(因此而得名)

如果需要渲染(评估和处理php文件),那么只需使用include().

但如果你的cup_bc_layout.php 文件echo输出了一些内容,那么您应该将include放在对象缓冲区中,然后返回值以确保短代码正常工作。

所以试试这个:

function cup_bc_shortcode($atts,$content=NULL){
    ob_start();
    include(\'/html/cup_bc_layout.php\');
    $return_val = ob_get_contents();
    ob_end_clean();     
    return $return_val;
}
add_shortcode(\'budgetcalc\', \'cup_bc_shortcode\');

SO网友:Joshua Abenazer

为什么不将该文件的代码放在cup_bc_shotcode() 直接调用函数,而不是调用单独的文件。或者将该文件的代码放在函数中,然后在cup_bc_shotcode() 作用

结束

相关推荐

Auth.php模板中的分页返回404错误

大家好!!!我需要一些关于作者分页的帮助。php模板除了作者之外,我的所有循环都有分页功能。php,我得到一个404错误在我的设置/阅读中,我已将博客帖子设置为显示为1。第一步是作者从作者改写为艺术家,function set_new_author_base() { global $wp_rewrite; $author_slug = \'artist\'; $wp_rewrite->author_base = $author_slug; }&