Неустранимая ошибка: вызов неопределенной функции add action() - нетронутая проблема
Этот вопрос задавался много раз по-разному, но, к сожалению, не очень хорошо освещен в большинстве ответов. У меня такая же проблема, когда я делаю что-то с помощью include-файлов.
В моей двадцатичетырехлетней детской теме functions.php
Я использовал:
require_once get_stylesheet_directory_uri() .'/admin-panel/theme-options.php';
И я использую Примеры вариантов темы Иэна Стюарта. Я использовал его во многих своих проектах, так же, как упоминалось здесь, без ошибок. Но в последнее время у меня возникла проблема в нескольких моих проектах. Если я переведу код в functions.php
, то все будет в порядке. Но это происходит только тогда, когда я пытаюсь включить/потребовать внешний файл.
У меня ошибка:
Фатальная ошибка: Вызов неопределенной функции
add_action()
в C:\xampp\htdocs\project\wp-content\themes\my-theme\admin-panel\theme-options.php в строке 2
В этом случае у меня ошибка с использованием дочерней темы (из T14). Но даже в одной из моих родительских тем я сталкиваюсь с проблемой. Но в том же среда мои другие проекты работают хорошо со всеми включениями и/или требованиями (где определено несколько add_action()
). У меня возникли проблемы с ВСЕМИ add_action()
вызовами , такими как Назначение CPT, Назначение пользовательской таксономии и т.д. Но я успешно разрабатываю еще два проекта, включая внешние файлы из папки inc/
, в которой назначены все мои CPT, а также их мета-поля.
Я попытался переустановить WordPress, деактивировав все мои плагины, попробовал с детства Тема, попробовал только то же самое, изменив двадцать пятнадцать (применив тему по умолчанию), попробовал require()
, require_once()
, include()
, include
, require_once
, и require
один за другим с неудачей. И я использую WP 4.1.1 во всех хороших и проблемных установках.
На большинство предыдущих вопросов отвечают простой строкой:
Как говорится в сообщении, вы не определили функцию
add_action()
и все же пытаетесь ее использовать.
Но,
- как приходите (разве это уже не определено WordPress)? и
- почему проект отличается от проекта в одной и той же среде (Как получилось, что теперь это выходит за рамки только в определенных проектах)?
1 answers
get_stylesheet_directory_uri()
возвращает URL-адрес. Запрошенный файл вызывается, как и любой другой общедоступный ресурс: без контекста инструкции include
. Это похоже на прямое открытие PHP-файла в браузере. Нет контекста WordPress, и функции add_action()
или add_filter()
не определены.
Используйте get_template_directory()
в родительских темах и get_stylesheet_directory()
в дочерних темах.
Отключить allow_url_fopen
и allow_url_include
в вашей среде разработки, чтобы обнаруживать подобные ошибки на ранней стадии и с лучшей ошибкой сообщения.