Я работаю над виджетами WordPress, и все примеры имеют огромные фрагменты HTML / PHP, смешанные, и их невозможно прочитать, поэтому в интересах попытки очистить вещи я хотел бы переместить весь HTML-рендеринг в отдельный PHP-файл, который будет include() 'd.
Хитрость к этому заключается в том, что файл, который я включаю, похоже, не имеет доступа к $this и я не уверен, как это исправить.
widget.php
class Preorder extends WP_Widget { ... function form() { include('form.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 не получается бесплатно. Я попробовал aliasing $this для другой переменной и даже просто для удовольствия, используя ключевое слово global без успеха.
Надеюсь, я пропустил что-то легкое.
Забыл, что я повторяю каталог и include каждый файл .php, переименованный form.php в form.tmpl и, похоже, работает.
Durr.