Сегодня мы научим вас правильно добавлять фрагменты кода в свой файл темы functions.php. Этот процесс довольно легок для специалистов PHP, но сложен для новых пользователей. Часто новички стремятся быстро написать код или вставить нужный код, но из-за нехватки знаний в PHP, порой приводит к поломке сайта. Это нормально, и если читаете эту статью, значит у вашего сайта проблемы, и мы хотим заверить вас, что Вы не один такой. Все мы совершали подобную ошибку как минимум по несколько раз. Сейчас мы расскажем вам, наиболее популярные ошибки и как избежать их при вставке кода из других источников и материалов в файл functions.php.
Примечание: не путайте файл functions.php расположенный в папке /wp-content/themes/yourthemename/ и файл ядра Wordpess functions.php находящийся в папке /wp-includes/.
Основной код семантики РНР пишется так:
//Это начальный тег <?РНР //Это конечный тег ?>
Основная причина, почему необходимо знать данный код происходит потому, что более 95% проблем которые мы исправили для наших пользователей, предполагают вставку кода в неположенном месте. Поэтому знание семантики РНР очень необходимо. Ниже описаны, по нашему мнению, наиболее популярные ошибки.
1-я распространенная ошибка
Владелец сайта вставляет код между тэгами PHP, как показано ниже, но вставляют его неверно.
<?php add_filter( 'login_headerurl', 'Fcustom_logins_url' ); function Fcustom_logins_url($url) { return 'http://AndreyEx.ru'; } ?>
Пример кода functions.php (Примечание. Файл functions.php обычно имеет гораздо больший объем, но смысл тот же):
<?php //смешивают код PHP с существующим здесь //Программер вставляет код который он нашёл в интернете <?php add_filter( 'login_headerurl', 'Fcustom_logins_url' ); function Fcustom_logins_url($url) { return 'http://AndreyEx.ru'; } ?> ?>
Это будет явно ошибка на Вордпресс, потому что у вас уже есть начальный тег который который еще не закрыли. Есть два решения данной проблемы. Первый, вставляем элемент в правильном месте:
<?php //смешивают код PHP с существующим здесь //Видите, как мы правильно закрыли тег PHP ?> //Теперь можем открыть тег. <?php add_filter( 'login_headerurl', 'Fcustom_logins_url' ); function Fcustom_logins_url($url) { return 'http://AndreyEx.ru'; } ?>
Заметьте, насколько мы правильно вставили код после закрытия предыдущего.
Другой способ-просто удалить начальный и конечный теги с вашего нового кода. Так будет выглядеть:
<?php //смешивают код PHP с существующим здесь // Новый код просто вставляется сюда (обратите внимание, что мы удалили начальный и конечный тег из вставленного кода) add_filter( 'login_headerurl', 'Fcustom_logins_url' ); function Fcustom_logins_url($url) { return 'http://AndreyEx.ru'; } ?>
2-я распространенная ошибка
У каждого учебника есть свой собственный стиль написания. Некоторые держат их в фрагментах, обматывают тегом PHP, которые вы видели выше. Другие не оборачивают свои фрагменты вокруг PHP-тегом. Это подводит нас к очередной проблемы. Пример:
function Fcustom_logins() { echo '<style type="text/css"> h1 {background-image: url('.get_bloginfo('template_directory').'/images/logins.png) !important; } </style>'; } add_action('login_head', 'Fcustom_logins');
Автор исходит из того, что вы знаете, что этот код должен быть внутри тегов. Некоторые думают, что Вы разместите их код внизу вашего файла functions.php. Пример ошибки новичка:
<?php //смешивают код PHP с существующим здесь ?> //Затем пользователь вставляет код здесь (обратите внимание на PHP-теги которые уже закрыты выше): function Fcustom_logins() { echo '<style type="text/css"> h1 a {background-image: url('.get_bloginfo('template_directory').'/images/logins.png) !important; } </style>'; } add_action('login_head', 'Fcustom_logins');
Если вы заметили, код вставлен вне тегов. Вордпресс не знает, что это за код, таким образом получается ошибка. Пример правильного кода:
<?php //смешивают код PHP с существующим здесь //Новый идет здесь function Fcustom_logins() { echo '<style type="text/css"> h1 {background-image: url('.get_bloginfo('template_directory').'/images/logins.png) !important; } </style>'; } add_action('login_head', 'Fcustom_logins'); //PHP End Tag ?>
3-я распространенная ошибка
Далее последняя ошибка. которая является самой распространенной, когда пользователь вставляет новый фрагмент в пределах существующей функции.
Устройство функции обычно выглядит так:
function Fcustom_function_name() { // это начальный // код функции идет здесь } // Это конечный тег
Если поместить одну функцию внутри другой, то она вызывает исключение на вашем сайте. Пример этой ошибки примерно такой:
function Fcustom_name_function() { // здесь начальный тег // код функции идет здесь function Fcustom_login() { echo '<style type="text/css"> h1 {background-image: url('.get_bloginfo('template_directory').'/images/login.png) !important; } </style>'; } add_action('login_head', 'Fcustom_login'); } // Тут конечный тег
Вы не можете сделать это. Каждая функция являются независимой, поэтому нельзя ставить два вместе. Далее правильный код вставки:
function Fcustom_name_function() { // это начальный тег // код функции идет здесь } // Это конечный тег function Fcustom_login() { echo '<style type="text/css"> h1 a {background-image: url('.get_bloginfo('template_directory').'/images/login.png) !important; } </style>'; } add_action('login_head', 'Fcustom_login');
Выше указанные три ошибки, вероятной причиной, почему ваша тема неисправна, после того как Вы дополнили фрагментом кода ваш файл functions.php
Другие Советы
Бывают случаи, когда мы сталкиваемся с вопросами, просто чтобы узнать, какой вставленный код с ошибками. Некоторые из них действительно небрежные ошибки от невнимательности. В то же время как другие функциональные ошибки с кодом или сам пользователь не следует инструкциям правильно.
В некоторых учебниках авторы просто вызывают функции без проверки наличия напрямую в их фрагменте, не имея условных операторов для проверки, что плагин существует. Вы можете винить как пользователей так и авторов. Автор должен был иметь условный оператор на месте, но пользователь должен также читать статьи правильно перед тем как установить необходимый плагин.
Бывают случаи, когда вы сталкиваетесь с длинными фрагментами. Например, наш код формирования сниппета. Авторы имеют тенденцию объяснять код для их пользователей (который является хорошо), но он также приводит к ошибкам в коде. Так, мы делаем прокрутку вниз или вверх, чтобы получить окончательный фрагмент кода, а не собираем все воедино сами.
Узнаете ли вы эти ошибки? Как вы с ними справлялись? Были у вас ошибки, которые мы не упомянули выше? Если да, то поделитесь в комментариях с нами.