Я пытаюсь загрузить файл через require_once() для обработки некоторых расширенных функций в моей теме. Я мог бы поместить весь код прямо в functions.php, но я пытаюсь выделить этот код в отдельный скрипт.
Это файл widget_context.php (см. код ниже), и прямо сейчас я просто пытаюсь вывести некоторый текст обратно в каждый виджет. Он отлично работает, когда я делаю эхо непосредственно из функции, которая вызывает файл.
Однако я не могу получить эхо или возврат (из файла widget_context.php) для отображения в виджете.
Что мне не хватает?
Эта функция находится внутри functions.php
add_filter('in_widget_form', 'widget_context');
function widget_context(){
//echo works here:
//echo 'in widget form';
$widgets_context_file = TEMPLATEPATH . "/widget_context.php";
require_once($widgets_context_file);
}
Вот содержимое widget_context.php
<?php
echo 'place the checkboxes here';
return 'place the checkboxes here';
?>
Я не уверен, почему, но по какой-то причине вы должны использовать
include()
orrequire()
внутриform()
вместоinclude_once()
andrequire_once()
. Я предполагаю, что form() вызывается несколько раз, поэтому файл внешнего вида включается только в первый раз.include_once()
иrequire_once()
будет нормально работать внутриwidget()
, но все же лучше использоватьinclude()
иrequire()
в случае, если виджет имеет несколько экземпляров.Если вы когда-либо решали это, поделитесь ответом с другими. Одной из возможных причин того, что вы испытали, является то, что вы были в дочерней теме. TEMPLATEPATH ссылается на родительскую тему, а STYLESHEETPATH ссылается на дочернюю тему.