Как правильно вставить фрагмент кода в functions.php файл

Автор:
Nurlan Kemelbekov

Часто начинающие хотят достичь конечного результата, но им не хватает PHP знаний, чтобы понять, как правильно вставить фрагмент кода в functions.php файл темы WordPress, не нарушая работу сайта. Хотя этот процесс довольно прост для тех, кто знает, как работает PHP, кажется немного утомительным для новичков.

Ничего плохого в этом нет, и если вы читаете эту статью, потому что вы сломали ваш сайт, то хочу вас заверить, что вы не первый. Все мы когда-то начинали, и все мы совершали эти ошибки. В этой статье я покажу вам, как избежать наиболее распространенных ошибок при вставке фрагмента кода PHP  из учебников в  functions.php файл WordPress темы.
Примечание: файл functions.php находится в / wp-content/themes/имя темы / functions.php/. Это не то же самое, что основной файл functions.php, расположенный в папке / wp-includes /.

Как заменить functions.php файл темы сайта своим плагином
Чтобы понять, как правильно вставить фрагмент кода в functions.php файл, необходимо понять основную семантику PHP.

//Это открывающий тэг php
<?php
//Это закрывающий тэг php
?>

Причина, почему вы должны ознакомиться с этим это то, что в большинстве случаях пользователи включают фрагмент кода php в неправильном месте. Таким образом, знание PHP семантики очень полезно. Ниже приведены некоторые из наиболее распространенных ошибок, которые совершаются начинающими.

  • Первая самая распространенная ошибка.

Пользователь находит код на веб-сайте, который обернут в PHP тэги и вставляет его в неправильном месте.

<?php
add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
return 'http://maks-1.com';
}
?>

Выше пример фрагмента кода в functions.php файле темы (обратите внимание обычно файл functions.php темы имеет гораздо больше кода, но идея та же). Позвольте привести пример неправильной вставки кода:

<?php
// Тонны нагромождения PHP кодов, которые уже существует в файле

// Пользователь скопировал и вставил фрагмент кода из Интернета вроде этого:

<?php
add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
return 'http://maks-1.com';
}
?>
?>

Тут, очевидно, WordPress не поймет, потому что здесь есть PHP открывающий тег без закрытия, существующего тега PHP. Есть два пути решения этого вопроса. Первый метод это то, что мы вставляем элемент в нужном месте:

<?php
//  PHP коды, которые уже существует в файле

// Посмотрите, как мы закрыли первый открытый тег PHP
?>
// Теперь мы можем открыть тег PHP
<?php
add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
return 'http://maks-1.com';
}
?>

Обратите внимание, как мы правильно вставили PHP код после того, как предыдущий был закрыт.
Другим способом является просто вырезать открытие и закрытие тегов из новой функции WordPress. Таким образом, например, это будет выглядеть следующим образом:

<?php
//  PHP коды, которые уже существует в файле

// Здесь идет новый код (Обратите внимание, как мы раздели открытие и закрытие PHP тега из нового кода)

add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
return 'http://maks-1.com';
}
?>
  • Вторая самая распространенная ошибка.

Каждый писатель учебника имеет свой собственный стиль письма. Некоторые держат фрагменты обернутыми вокруг PHP тегом, который вы видели в примере выше. Другие авторы не обернут фрагмент вокруг PHP тэгом. Это подводит нас ко второй проблеме. Если у вас есть такой код:

function custom_loginlogo() {
echo '<style type="text/css">
h1 a {background-image: url('.get_bloginfo('template_directory').'/images/login_logo.png) !important; }
</style>';
}
add_action('login_head', 'custom_loginlogo');

Автор предполагает, что вы знаете, что этот код должен идти в рамках PHP тэга. Некоторые даже предполагают, что вы поместите этот код в нижней части файла functions.php вашей темы. Пример ошибки новичка:

<?php
//  PHP коды, которые уже существует в файле

?>

// Затем пользователь вставляет код здесь (Обратите внимание на то, что PHP тег уже закрылся выше):

function custom_loginlogo() {
echo '<style type="text/css">
h1 a {background-image: url('.get_bloginfo('template_directory').'/images/login_logo.png) !important; }
</style>';
}
add_action('login_head', 'custom_loginlogo');

Если вы заметили, пользователь вставил код вне PHP тэга. WordPress не знает, что это за код, и таким образом ломается сайт. Правильный код будет выглядеть следующим образом:

<?php
//  PHP кодs, которые уже существует в файле

// Здесь идет новый код
function custom_loginlogo() {
echo '<style type="text/css">
h1 a {background-image: url('.get_bloginfo('template_directory').'/images/login_logo.png) !important; }
</style>';
}
add_action('login_head', 'custom_loginlogo');

// закрывающий тег PHP
?>
  • Третья самая распространенная ошибка.

Теперь, когда мы рассмотрели вопрос открытия и закрытия PHP тега, последняя самая распространенная ошибка, которая встречается, когда пользователь вставил новые фрагменты php кода в рамках существующей функции.
Анатомия функции обычно выглядит следующим образом:

function custom_function_name() { // Это открывающий тег функции

// Здесь идет код конкретной функции

} // Это закрывающий тег функции

Если вставить еще одну функцию внутри существующей функции, то сайт сломается. Пример этой ошибки выглядит так:

function custom_function_name() { // Это открывающий тег функции

// Здесь идет код новой функции

function custom_loginlogo() {
echo '<style type="text/css">
h1 a {background-image: url('.get_bloginfo('template_directory').'/images/login_logo.png) !important; }
</style>';
}
add_action('login_head', 'custom_loginlogo');

} // Это закрывающий тег функции

Вы не должны этого делать. Каждая функция независима, поэтому вы не можете поместить их вместе. Правильный способ вставки будет выглядеть так:

function custom_function_name() { // Это открывающий тег функции

// Код конкретной функции идет здесь
} // Это закрывающий тег функции

function custom_loginlogo() {
echo '<style type="text/css">
h1 a {background-image: url('.get_bloginfo('template_directory').'/images/login_logo.png) !important; }
</style>';
}
add_action('login_head', 'custom_loginlogo');

Приведенные выше три ошибки, возможно, являются причиной того, почему ваша тема сломалась, когда вы скопировали и вставили фрагмент из Интернета в functions.php вашей темы WordPress.
Сталкивались ли вы с этими ошибками? Как вы справлялись с ними? Вы сталкивались с вопросом, который не упоминался выше? Если это так, пожалуйста, поделитесь в комментариях.




Вам также может понравиться:


4 комментарий на “Как правильно вставить фрагмент кода в functions.php файл

  1. А как вы предпочитаете восстанавливать сайт если даже после отката functions.php выводится просто белый экран и статус страницы 500?

  2. Спасибо. Раз 15 уже сломала себе сайт, благо не лезу в functions.php без бэкапа. И после Ваших объяснений чудо свершилось! У меня получилось и все стало как надо))

    • Анна, спасибо за отзыв. Рад, что статья оказалась для Вас полезной.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

* Copy This Password *

* Type Or Paste Password Here *

шесть + пятнадцать =

Я просто хотел сказать, как сильно я ценю Ваш комментарий на мой пост. Спасибо Вам !!