Wordpress. Почему в скрипте php постоянно вылетает Fatal error: Call to undefined function?
Всем привет, объясните, пжл., как в целом работает wordpress.
У меня такая проблема: я хочу написать свой скрипт на основе уже имеющихся скриптов (код в основном взят из general-template.php).
Сайт работает нормально - там всё рабочее. Но как только я что-то беру из general-template.php, напишу немного там своего - Fatal error: Call to undefined function.
Запускаю полностью рабочий general-template.php - Fatal error: Call to undefined function, ну и дальше какая функция.
То есть по отдельности вообще ничего работает, а в целом работает. Как так?
Но мне ж свои скрипты надо тестировать по отдельности.
И причем, в general-template.php нет ни одного include, и нигде нет ни одного includ'a. - и это работает нормально.
P.S может, я запускаю нет так (и это скорее всего): php -S localhost:8000 имя_моего_скрипта.php
Нельзя просто взять и запустить типа wordpress/wp-includes/my_script.php )
Или делаете плагин, в нем создаете свою страницу(add_plugins_page) и в ней выводите что хотите, или в functions.php пишите код, а далее опять же или add_options_page или просто страницу на фронтенде и задаете ей свой шаблон в котором делаете что хотите.
Да, действительно, видимо, функции, которые я сама пишу надо в function.php делать. Тогда их можно вызвать из страниц шаблона. Но, ведь не все ж функции обявлены в function.php. Та же wp_login_form, там не объявлена, а прекрасно работает. Я могу ее вызвать, хотя в шаблоне никаких include не делаю.
Да и function.php, которые лежит в теме (в которой я работаю) подключает только '/functions/theme-functions.php' и еще три файла, но в списке самого fucntion.php, которую я правила нет.
Может в general-template.php нет include, но сам по себе этот файл не выполняется, а подключается из какого то другого скрипта. В контексте которого уже подключены все необходимые функции.
Как вы запускаете файл???
Он часть системы и пишет что нет функций которые ему нужны. Я ногу оторву, кросовок надену и буду спрашивать почему она не бежит.
Разворачивайте сайт по нормальному полностью и тестируйте.
Запуск вордпресса описан в кодексе. Если хотите использовать его скрипты у себя в проекте то нужно подключать файл require_once("/wordpress/wp-load.php");
@Alexufo, да я понимаю. Но всё же, как уже ответила @vasilukwolf'y, я ж просто копирую функцию (из родного wordpress) и просто изменяю ее имя, а потом вызываю. Ошибиться тут трудно.
Ок.
В wp-includes есть файл general-template.php . Там функция wp_login_form
Я копирую ПОЛНОСТЬЮ текст этой функцию, создаю файл в этой же директории и вставляю полностью этот текст. Единственно, что имя переделываю, вдруг какой конфликт имен или еще что. И вызываю. И белая страница.
В Wordpress не обязательно include, так могут быть м hook. Скорее всего вы фунцию написали, но не зарегестрировали её, она так не работает. Нужно зарегестрировать в functions.php для темы или в файле плагина. Если вы хакаете, то же самое.
Да и сколько говорить уже! Код в студию!
Да я щас просто хотя бы хочу полностью идентичную функцию запустить из того же general-template.php, чтоб убедится что работает и всё, что своего нагородила убрала, так что нечего щас показывать. Только имя функции поменяла и всё. Объявляю ее и вызываю и всё.