2011-08-31 101 views
1

我正在研究一個WordPress Widget,並且所有的例子都有巨大的HTML/PHP塊混合在一起,並且不可能讀取,所以爲了試圖清理東西,我想將所有的HTML渲染移動到一個單獨的PHP文件將是include()'d。

對此的訣竅是,我包含的文件似乎無法訪問$this,我不確定如何解決該問題。

widget.php

class Preorder extends WP_Widget { 
    ... 
    function form() { 
     include('form.php'); 
    } 
} 

form.php的

<p> 
    <?php echo $this->get_field_id('title'); ?> 
</p> 

導致[31-Aug-2011 19:59:19] PHP Fatal error: Call to a member function get_field_id() on a non-object in ...這麼清楚$this沒有免費的一起走。我試過別名$this到另一個變量&,即使只是爲了好玩,使用global關鍵字沒有成功。

希望我錯過了一件容易的事。

+3

該代碼應該工作。如果代碼完全如上所示,則可以在form.php中訪問'$ this'。別的東西可能正在其他地方發生。 – mfonda

+0

同意mfonda,上面的代碼應該可以工作。我在許多項目中做了完全相同的事情。 – Bazzz

+0

感謝您的理智檢查傢伙,找出了問題。 – Tivac

回答

0

忘記我正在迭代目錄& include -ing每個.php文件,重命名form.php form.tmpl,似乎工作。

Durr。