- Изменение файла functions.php сайт перестал работать
- Что делать, если при изменении в файле functions.php сайт перестал работать. Так называемый белый экран смерти в WordPress
- Все про файл functions.php для вордпресс
- Что такое файл functions.php и зачем он нужен?
- Где находится functions.php и как его редактировать?
- Вставка сниппетов (примеры кода и типичные ошибки)
- Файл темы functions.php в WordPress
- Возможности functions.php
- functions.php против плагинов
- Для чего на самом деле нужен functions.php
- Как подгружается functions.php
- Ошибки в functions.php при вставке кода
- Чтобы не было ошибок, учитывайте 4 момента:
- #1 Правильная вложенность
- #2 Никаких переносов строк, пробелов, текста до и после ?>
- #3 Использование и ?> внутри PHP функции
Изменение файла functions.php сайт перестал работать
Просмотров: 1 101
Всем доброго времени суток! Бывают такие ситуации когда при добавление кода в файл «Функции темы» (functions.php) WordPress сайт перестает работать. Что делать в такой ситуации? Немного расскажу про себя, как я выходил из такого положения. Ещё ни чего почти не умея, захотел немного добавить каких то функций в тему блога. Как мы обычно делаем, вбиваем в поиск нужную нам фразу и переходим по ссылке на страницу с инструкцией. Автор пишет добавьте этот код сюда, этот туда и будет вам счастье. Таких уроков из серии без плагинов много в сети.
Хотя мне кажется, кто пишет уроки для пользователей платформы ВордПресс, должны предупреждать своих читателей о последствиях которые могут возникнуть при неправильном внесении изменений в файл и как это исправить. Чтобы потом не отвечать в комментариях испуганным посетителям на вопрос — Сайт перестал работать, что делать? Помогите!
Если вы редактируете тему файл (functions.php), используемую в настоящий момент, подумайте о возможном нарушении работоспособности сайта.
При обновлении темы сделанные вами изменения будут перезаписаны.
Чтобы избежать этого, можно создать дочернюю тему. Или использовать специальные плагины для безопасного добавления PHP кода в файл functions.php.
Что делать, если при изменении в файле functions.php сайт перестал работать. Так называемый белый экран смерти в WordPress
Добавил как то я (по инструкции на каком то блоге) код в функцию темы, обновляю файл и передо мной возник белый экран. Ужас. Блог / сайт WordPress перестал работать. Пришлось переустанавливать ( вот дурак был) все заново — движок; шаблон и пару своих статей. А надо было всего то, зайти на свой хостинг, открыть файл functions.php в теме блога:
и удалить вставленный код. Сохранить файл и блог опять работает. Если Вы например не помните какой код нужно удалить, найдите свой шаблон блога на вашем компьютере (скачанную тему) и замените на хостинге файл functions.php файлом из папки с темой. Если, это вам не помогло, тогда попробуйте следующий вариант (подойдёт для тех, у кого есть тема в запасе).
Зайдите на свой хостинг и удалите проблемную тему. WordPress активирует тему по умолчанию (Twenty Fifteen, Twenty Eleven, Twenty Twelve или другие) и ошибка исчезнут. Потом можете вставить старую версию файла, исправить проблемы в теме и включить его позже. Настоятельно рекомендую держать в каталоге одну из тем, которая идет по умолчанию при установке WordPress. Даже если не собираетесь использовать.
Если у вас нету запасной темы на хостинге, тогда следующий вариант.
Попробовать закачать папку с вашей рабочей темой на сервер.
То есть, вам нужно взять первоначальную версию темы и залить её на хостинг, предварительно скачав на всякий случай старую папку с измененным шаблоном на компьютер.
- Заходите на хостинг в раздел шаблонов /wp-content/themes/ваша_тема.
- Скачиваете тему на компьютер.
- Закачиваете первоначальный вариант темы на сервер.
- Пробуете войти в админку.
Важно : Перед тем как внести изменения в «Функции темы» (functions.php) сделайте копию файла. Тогда, Вы без всяких проблем восстановите работоспособность вашего любимого сайта.
А у меня на сегодня всё. Всего доброго. До встречи на страницах блога WordPress mania.
Источник
Все про файл functions.php для вордпресс
Статья имеет 3 подраздела:
Что такое файл functions.php и зачем он нужен?
Как правило, в данном файле задаются дополнительные функции для шаблона, позволяющие менять внешний вид вашего сайта. Однако на самом деле его возможности значительно шире, поскольку functions.php в WordPress автоматически загружается при инициализации системы. То есть при вызове любой страницы, как фронтенда (сайта), так и бэкенда (админки), соответствующие функции из данного файла будут выполнены.
Следовательно, с помощью файла functions.php вы можете решить целый спектр абсолютно разных задач:
- Наиболее простой вариант — изменение внешнего вида темы. Вспоминаются сразу хаки для ссылки читать далее где можно влиять на вид линка «read more» и формат анонса.
- Определение своих функций дабы позже вызывать их в других файлах шаблона, что экономит время на внедрение изменений на сайте (да, и вообще является нормальным принципом в программировании). Например, функция отображение первой картинки поста, которую после определения можно использовать в файлах темы для категорий, тегов, архивов.
- Настройка админки под себя — скрытие определенных пунктов из меню, изменение разных параметров отображения для других пользователей и т.п. Сразу вспоминается статья про скрытие custom fields для не админов. Также с помощью functions.php в WordPress можно создать специальную страницу настроек темы.
- Переопределение каких-то параметров системы — изменение размеров миниатюр для шаблона, а также разного рода хаки и фильтры. Например, с помощью данного файла можно подправить отображение комментариев в wp_list_comments.
Вообще файл functions.php в WordPress по логике и скорости работы напоминает плагины. Хотя при этом у них есть принципиальные отличия. Модули используются, как правило, для решения каких-то конкретных задач и применяются к любой теме вашего сайта. Плюс для работы их нужно активировать. Что касается файла шаблона functions.php, то он может содержать много разных функций и выполняется только для той темы, в которой определен. То есть при смене шаблона, все ваши текущие наработки будут отключены, а система начнет считывать информацию из другого файла функций (об этом следует помнить).
Где находится functions.php и как его редактировать?
Файл функций расположен в корневой директории темы (вместе с index.php, single.php и другими). То есть вы заходите в папку wp-content/themes/название_темы/, и он будет там. Это не то же самое что одноименный файл ядра, который находится в системной директории /wp-includes/, нужный нам объект — в папке шаблона.
Сейчас в WordPress файл шаблона functions.php можно найти в 99% популярных тем, но раньше он был не везде. Если в вашей теме нет functions.php, то вы спокойно можете его создать.
Есть два способа редактирования файла функций:
- через WP админку;
- с помощью текстового редактора.
Первый вариант достаточно простой и наглядный. Вы заходите в меню «Внешний вид» — «Редактор» и выбираете соответствующий файл для правки.
После внесения изменений нажмите кнопку «Обновить файл» в самом низу. Преимущество данного метода в том, что вам не нужно использовать какие-то дополнительные программы для работы, все происходит внутри панели администрирования. Однако не всегда это возможно сделать.
Если файл functions.php закрыт для записи, то воспользоваться встроенным редактором WordPress у вас не получится. В таком случае запускаете FTP клиент, например, Mozilla и скачиваете файл функций на локальный компьютер.
Для работы с php файлом советую использовать специальные бесплатные редакторы — Notepad++ или Sublime Text. При этом важно чтобы кодировка редактируемого файла была UTF-8 без BOM. Вот как можно ее выбрать в Notepad++:
Если этого не сделать, то из-за BOM может возникнуть глюк в WordPress. Для Sublime Text 2 в меню «File» есть опция «Reopen With Encoding», позволяющая открыть файл в нужной кодировке. Однако при запуске functions.php автоматически срабатывает UTF-8 (т.к. файл сохранен именно в ней), поэтому ничего дополнительно делать не нужно.
После внесения изменений в файл, загружаете его обратно на FTP в ту же самую корневую папку активного шаблона. Второй метод, как видите, чуть более сложный, но иногда без него не обойтись. Если вдруг, редактируя functions.php в WordPress админке вы допустили ошибку, то весь сайт может перестать работать (увидите белый экран). В таком случае исправить код можно будет лишь, скачав файл функций на локальный компьютер и отредактировав его в текстовом редакторе.
Вставка сниппетов (примеры кода и типичные ошибки)
Дабы у вас не возникало ошибок при работе с functions.php в WordPress, давайте рассмотрим основные правила вставки кода и возможные ошибки. Первым делом обратите внимание на глобальную структуру любого PHP файла:
Здесь в начале идет специальный открывающий тег и в конце закрывающий. Важно чтобы не было никаких пробелов перед открывающимся и после закрывающегося тегов! Хотя в некоторых случаях вы можете встретить запись, когда последнего тега нет (для PHP это нормально). Давайте рассмотрим парочку примеров.
Ситуация 1
Допустим, вы нашли в интернете готовый сниппет для решения определенной задачи. И в описании сказано, что нужно вставить этот код в файл функций functions.php. В качестве примера выберем код удаления WP версии из wp_head:
Так размещать неправильно:
Возникает ошибка, поскольку система встречает тег открытия из найденного сниппета (так правильно):
Следующий вариант также будет работать (между PHP блоками не должно быть пробелов):
Ситуация 2
Допустим вы хотите обновить jQuery в WordPress для чего нашли соответствующий код:
Неправильный вариант использования:
Нельзя размещать код после закрывающего PHP тега. Вам нужно поставить всю функцию внутрь конструкции:
Кстати, если в functions.php закрывающего тега ?> нет (что допускается), то добавляете нужный сниппет просто в конец файла.
Ситуация 3
Нельзя вставлять сниппет внутрь другой функции. Допустим, в файле шаблона functions.php у вас имеется следующий код:
Неправильный вариант вставки:
Добавить код можно только после закрывающего тега «>» первой функции. Вот так будет правильно:
Ситуация 4
Рассмотрим для ознакомления еще один вариант, когда внутри функции вы можете встретить конструкцию , которая не будет нарушать общий порядок работы самого файла.
ID, ‘_oxygen_post_location’, true ); ?>
Тут нужно учитывать 2 нюанса. Во-первых, не должно быть ошибок в последовательности открывающих и закрывающих PHP тегов — каждый открытый блок должен быть закрыт. Во-вторых, внутри функции <…>пробелы и переносы строк между тегами не критичны. В любом случае нужно быть очень внимательным в процессе редактирования. Плюс редакторов Notepad++ и Sublime Text в том, что они подсвечивают теги/функции, и так проще ориентироваться в коде.
Источник
Файл темы functions.php в WordPress
Каждый знакомый с WordPress слышал про файл темы (шаблона) functions.php . Однако не все хорошо понимают его назначение, видя в нем лишь файл в котором хранятся различные php функции. В сети, как и у меня на этом сайте, часто предлагается добавлять PHP код в этот файл. Однако не каждый код подойдет для этого файла. Не потому что он не будет работать, а потому что он не подходит по логике использования.
Также при редактировании functions.php новички допускают ошибки из-за которых сайт перестает работать.
В этой статье я постараюсь рассмотреть все эти моменты: когда нужно использовать functions.php и когда этого лучше не делать, какие ошибки при редактировании functions.php могут возникнуть.
Возможности functions.php
functions.php располагается в папке темы и загружается каждый раз, во время просмотра внешней части сайта, в админ-панели и даже во время AJAX запросов. Нет случая, когда functions.php не будет подключен и это открывает широкие возможности перед разработчиками.
Для примера, следующий код, вставленный в файл темы functions.php расширит возможности темы — включит поддержку миниатюр поста:
Другой пример, код заменит текст в подвале админ-панели WordPress, на данные о количестве запросов к базе данных, времени генерации страницы и использовании памяти:
functions.php против плагинов
— «Плагины работают медленнее чем код в файле functions.php», говорят неосведомленные — это не так!
Нет никакой разницы в скорости работы кода, не важно подключается он через плагин или через файл functions.php. Подробнее читайте в отдельной заметке.
Теоретически вставка кода в functions.php равносильна установке плагина, но это не одно и тоже. Ведь при смене темы, мы получим совершенно другой functions.php и все внесенные изменения будут потеряны, а вот плагин останется, сколько тему не меняй. С этих соображений и нужно относится к файлу functions.php. Если добавляемый функционал относится не только к теме, но и к сайту в целом, то стоит задуматься о подключении его в виде плагина.
Второй пример выше «Данные о количестве запросов к базе данных в подвале админки». По логике не подходит для использования в файле functions.php. Потому что, если мы сменим шаблон, то мы потеряем этот функционал, а он используется в админке и нужен независимо от того какая тема используется.
Поэтому, давайте удалим его из functions.php и сделаем из него плагин — это просто!
Чтобы создать плагин нужно создать файл с кодом ниже (название файла может быть любое), добавить его в каталог плагинов wp-content/plugins/ и активировать плагин в админ-панели:
Если нет желания видеть еще один плагин в админ-панели, то можно использовать Must-Use плагины.
Для чего на самом деле нужен functions.php
Как я писал выше: functions.php необходим для того, чтобы расширить функциональность темы и только для этого! В этот файл нужно добавлять всякий код, который нужен для шаблона непосредственно, но не для сайта в целом.
Если на каком-либо ресурсе вам предлагают добавить код в файл functions.php , а функция кода не относится к шаблону непосредственно, то не ленитесь сделайте плагин из этого кода и возможно в будущем избежите неожиданной пропажи добавленного ранее функционала.
Как подгружается functions.php
functions.php подключается во время инициализации текущей темы, после того, как подключены все функции WordPress и все активные плагины. Опишу коротко хронологию загрузки WordPress, где видно, когда подключаются важные файлы:
Процесс загрузки WordPress, и functions.php в частности, хорошо показан на этом рисунке:
Ошибки в functions.php при вставке кода
Неоднократно встречал вопросы об ошибках, вроде: «После установки кода в файл functions.php сайт перестал работать — белый экран. Что делать?». Я и сам с подобным сталкивался когда-то.
Для меня некоторые решения этой проблемы, долгое время, оставались загадкой — вроде ничего не делал, и даже танца с бубном не было, но — раз и все заработало. Почему так происходит? Давайте рассмотрим возможные ситуации из-за которых может «ломаться» сайт и их объяснение:
Вставляете готовый код — сайт перестает работать.
Чаще всего, дело в открывающем и закрывающем тегах PHP и ?> . Обычно, если вставляемый код имеет в начале и в конце эти теги, то их нужно удалить. Также, файл functions.php не должен выводить на экран никакой текст (HTML код или другой контент). Вывод текста допускается только внутри функции, которые в дальнейшем будут использоваться в шаблоне или которые прикрепляются к хукам (подробнее см. ниже).
Нельзя допускать никаких символов до или после ?> , в том числе невидимые символы (перенос строки), потому что functions.php подключается до установки http заголовков (в таких заголовках передаются различные данные, например, что это html документ; что кодировка utf-8 другое). По правилам PHP, контент должен выводится на экран после того, как отправлены заголовки. А все что за пределами и ?> это и есть контент — текст выводимый на экран, даже невидимый символ \n. Поэтому такой текст вызывает ошибку.
Чтобы не было ошибок, учитывайте 4 момента:
#1 Правильная вложенность
Пример, у нас была такая структура:
Если Вы добавили php код так, то это вызовет ошибку или, что еще хуже, белый экран, когда показ ошибок отключен:
#2 Никаких переносов строк, пробелов, текста до и после ?>
Такой код вызовет ошибку:
Логичнее его записать так:
Бывает что перенос строки ставят в самом конце functions.php, вот тогда это становится настоящей проблемой, потому что все казалось бы правильно, но сайт не работает. На самом деле после ?> или до ?> , это допустимо для PHP. Рекомендую всегда делать именно так:
#3 Использование и ?> внутри PHP функции
Если в functions.php присутствует функция, то внутри этой функции можно использовать теги и ?> , например, для того, чтобы визуально выделить HTML код внутри функции:
Дело в том, что в этом случае функция только лишь регистрируется и не выполняет никаких действий. Все что внутри функции (между < >) не работает пока эта функция не будет вызвана, а вызываются такие функции обычно из шаблона или через фильтры, уже после того как отправлены HTTP заголовки. Поэтому в данном примере, мы можем игнорировать переносы строк и использовать ?> и как угодно.
Источник