通过作为插件一部分的函数包含一个PHP文件?

时间:2012-08-30 作者:Derek W Beck

我为此挣扎了一整天,现在我在这里。。。

我有一个包含php的联系人表单。目前,我的主题索引中有这段代码。php包括:

if ( is_page(\'contact\') ) {
    include("../contact.php");
}
其呈现和功能符合预期:http://www.derekbeck.com/1775/contact/

然而,将其编辑到主题中是有问题的,因为主题升级(我每次都要硬编码),现在尤其是因为我正在为移动用户使用移动主题,他们在使用移动主题时不会看到我的联系人表单。一句话:我需要把这个放到插件中。

我知道制作插件的机制,这不是我的问题。

我的问题是:我似乎无法通过插件文件中的函数来正确地包含上述内容。

例如,我试过:

add_shortcode( \'ContactForm\', \'ContactInsert\' );

function ContactInsert() {
       $file = include(ABSPATH . "../contact.php");
       return $file;
}
我将短代码[联系人表单]放在测试页面的主体中,但它会呈现奇怪的结果:http://www.derekbeck.com/1775/test/(忽略我为测试添加的“1”和“2”)

如果我做得简单

function ContactInsert() {
       ob_start();
       include(ABSPATH . "../contact.php");
       return ob_get_clean();
}
我在页面上没有得到任何结果,只有个主题显示。

我做错了什么?

谢谢

(附言:如果我只是简单地将所有包含的contact.php粘贴到我的插件页面中,它可能会工作,但它是一个很长的文件,我有其他理由将其分开。)

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

答案可能不是(没有测试)代码的格式,而是其中复杂的形式。我已经与代码设计器合作来派生解决方案,但它对于这里来说太复杂了。如果您想知道我的联系人表单的WP插件是如何工作的,现在可以在这里找到:http://formmail-maker.com/wordpress-plugin-form-loader.php

干杯,德里克

PS:总的来说,我认为这段代码应该通过插件为simple Include工作:

function ContactInsert() {
      ob_start();
      include(ABSPATH . "../contact.php");
      return ob_get_clean();
}

SO网友:Puneet Sahalot

通过创建上述短代码,您试图在页面上插入[ContactForm]的任何位置调用/包含整个文件,而短代码应该返回一个值或输出一些内容。既然你不需要插件,我能想到的最好的解决方案就是创建一个自定义页面模板。因为它不是默认主题结构的一部分,所以即使更新主题也不会影响它。

结束