Форум программистов, компьютерный форум, киберфорум
WordPress
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 5

include/require - и добавляемый модуль не видит ничего из "прошлой жизни"

11.11.2022, 13:24. Показов 519. Ответов 5

Студворк — интернет-сервис помощи студентам
Доброго времени суток всем!

Разработка темы. В footer.php внизу строка
PHP
1
<?php include_once(get_template_directory_uri() . '/includes/tca-calculator-form.php'); ?>
Увидев, что поведение системы совсем далеко от ожидаемого, добавил в самую первую строку подключаемого файла код проверки:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function get_backtrace() {
    // возвращается отформатированный результат функции debug_backtrace
    $arr_backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
    $backdata = $arr_backtrace[1];
    $out = 'Called from '.$backdata['file'].' at line '.$backdata['line'].' ';
 
    return $out;
}
 
$logfilename = 'tcalog_'.date("dmY").'.txt';
file_put_contents($logfilename, print_r([json_encode(get_defined_vars()), date('H:i:s'), get_backtrace()], true).PHP_EOL, FILE_APPEND | LOCK_EX);
 
?>
Итог вывода:
Array
Code
1
2
3
4
5
(
    [0] => {"_GET":[],"_POST":[],"_COOKIE":[],"_FILES":[],"logfilename":"tcalog_11112022.txt"}
    [1] => 12:33:38
    [2] => Called from  at line  
)
То есть
  • а) скрипт работает, потому что рассчитанную в нем самом переменную $logfilename он показал правильно;
  • б) поведение совсем странное, поскольку даже переменных из debug_backtrace(DEBUG_BACKTRACE_IGNORE_A RGS) нет

Поясню, что значит "поведение системы далеко от ожидаемого":
  • а) скрипт не видит переменные, заданные в вызывающем модуле footer.php и в functions.php
  • б) скрипт не видит функций из установленных в WP плагинов, в частности ACF - обращение к функции get_field() вызывает ошибку Функция не определена.

Возможно, тут дело в WP, но обычно подключая файл в php, он всегда видел то, что было объявлено до его включения...

Помогите "вылечить", плз.
Теоретически я могу вставить код сразу же в footer.php, но как-то это неправильно :-(
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.11.2022, 13:24
Ответы с готовыми решениями:

Тест: Кем Вы были в прошлой жизни?
Тест «Кем вы были в прошлой жизни?»

Сервер не видит добавляемый hdd
Имеется сервак HP ProLiant DL360 G5, RAID10 из sas-дисков: под ОС и сервер SQL. Хотим добавить hdd для бэкапов, но сервер упорно новый диск...

require и include
Вот нарыл в интернете: и хотел бы узнать допустим если на странице test.php на которой 10 скриптов которые работают в...

5
754 / 578 / 120
Регистрация: 26.02.2019
Сообщений: 3,115
Записей в блоге: 3
11.11.2022, 14:27
Цитата Сообщение от LouDminsk Посмотреть сообщение
В footer.php внизу строка
Ну начнём с того что подключаешь не правильно. См https://wp-kama.ru/function/get_template_part, https://wp-kama.ru/function/get_footer и https://wp-kama.ru/hook/wp_footer .
Это скорее всего не поможет решить главную проблему (хотя как знать), но надо делать как надо.
0
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 5
11.11.2022, 17:24  [ТС]
Lazor, за первую часть ответа спасибо, вероятно простым include_once в WP при разработке темы да, не обойтись.

По части 2 - ну, слава Б-гу, не первый день в полях )) нормальная область видимости, на самом верху. Без классов, код чистый. Другие фрагменты кода (которые не под include), все прекрасно видят. К тому же, как я писал, кроме переменных, это чудо и функции плагинов не видит, так что в данном случае "область видимости переменных" это не то лекарство.
0
754 / 578 / 120
Регистрация: 26.02.2019
Сообщений: 3,115
Записей в блоге: 3
11.11.2022, 17:30
Цитата Сообщение от LouDminsk Посмотреть сообщение
нормальная область видимости, на самом верху.
На каком-таком "верху"? ))
0
11.11.2022, 18:21
 Комментарий модератора 
Напоминаю правила форума:

3.3 Не отсылайте других пользователей в поиск и избегайте ссылок на поисковые системы (Google, Yandex и др.). Самостоятельно найдите ответ на вопрос и разместите его на форуме.
0
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 5
12.11.2022, 20:37  [ТС]
Lazor, судя по описанию на wp_kama, get_template_part() именно то, что требуется. Вот только и тут не без нюансов...
Вызываемая из footer.php эта функция не подключает файл. Он гарантировано есть, при подключении его через include_once все срабатывало (как я писал в вопросе выше). Файл лежит в подпапке - после того, как эта функция не нашла его ни без слэша, ни со слэшем перед подпапкой, я скопировал файл в корень файлов темы - там же, где и сам footer.php находится. Но функция все равно возвращает false. После этого я попробовал перекинуть подключение из footer.php в functions.php - результат аналогичный, false. А ведь файл есть... (((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2022, 20:37
Помогаю со студенческими работами здесь

Require/include
В общем, хочу сделать одну вещь, ее код большой и с ходу не понятен поэтому приведу модель той части, которая вызывает вопрос. По сути,...

include и require....
здраствуйте.....помогите пожалуста разобраться.... я заранее извиняюсь уж если не получиться описать проблему в двух словах......но...

Отличие include() и require()
Привет, господа... Для подлючение файлов в PHP существуют функции include(), include_once(), require() и require_once(). Я знаю их...

Не работает include и require
В главной папке есть файл Userpage.php который должен подтянуть переменную и другого файла. Это файл с переменной $userInfo в которую...

include или require?
С точки зрения скорости, что лучше употреблять: include или require? как с этим работают гуру PHP?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru