Как да добавяме PHP код във страница functions.php на WordPress за начинаещи

functions.php

Здравейте, приятели! От време на време във моите статии ви давам съвети за поставяне на код във страница functions.php, което за начинаещите може да бъде е проблематично. Затова в тази статия реших да ви разкажа как правилно да поставяте код във файл functions.php на вашата тема и как да избегнете най-честите грешки.

Забележка: Страница functions.php се намира във /wp-content/themes/вашата_тема/functions.php. Това НЕ е файла functions.php който се намира във wp-includes/functions.php.

За да разберете как правилно се поставя код, трябва да разбирате основните положения в PHP.

//Това е отварящия таг във PHP кода
<?php

//Това е затварящия таг във PHP кода
?>

Недопустимо е да поставяте какъвто и да е PHP код преди отварящия таг. Трябва да знаете това, защото над 95% от проблемите възникват при поставяне на кода на неправилното място. И така, ето най-често срещаните грешки при поставяне на код във functions.php.

Първа най-често срещана грешка при поставяне на код в functions.php

Слагате код на неправилно място който има отварящ (<?php) и затварящ (?>) PHP таг като на примера долу:

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

Ето ви пример как изглежда кода във файл functions.php:

<?php
//Тук е останалия PHP код във вашия файл
	 
//Потребителя би трябвало да сложи кода ето така:
 
<?php
add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
    return 'http://www.ptcpari.com';
}
?>
?>

При това положение WordPress се чуди какво по дяволите става, защото в кода има отварящ PHP таг, но няма затварящ PHP таг. Има два начина за оправяне на проблема. Първия метод е да поставите кода на правилното място:

<?php
//Тук е останалия PHP код във вашия файл
 
//Вижте как правилно сме затворили първия отварящ PHP таг
?>
//Сега може да напишем отварящ PHP таг.
<?php
add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
    return 'http://www.ptcpari.com.com';
}
?>

Забележете, че кода е поставен правилно след предишния затварящ таг.

При втория метод просто премахвате отварящия и затварящия таг от кода който искате да поставите във functions.php файла. Примера ще изглежда така:

<?php
//Тук е останалия PHP код във вашия файл  
	 
// Новия код е поставен тук (Забележете, че са премахнати отварящия и затварящия PHP таг от кода)
 
add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
    return 'http://www.ptcpari.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 код във вашия файл   
	 
//Новия код отива тук
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 таг, последната често срещана грешка е когато код се поставя във вече съществуваща функция в документа.

Обикновено функцията изглежда по този начин:

function custom_function_name() { // Tова е отварящия таг на функцията
	 
// специфичния код за функцията е тук
 
} // Tова е затварящия таг на функцията

Ако поставите друга функция във вече съществуваща функция, това ще доведе до срив на сайта. Пример за тази грешка може да бъде:

function custom_function_name() { // Tова е отварящия таг на функцията

// специфичния код за функцията е тук
	 
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');
 
} // Tова е затварящия таг на функцията

Не може да правите така! Всяка функция е независима, затова не може да слагате две функции заедно. Правилния начин за слагане на кода е:

function custom_function_name() { // Tова е отварящия таг на функцията
	 
// специфичния код за функцията е тук

 
} // Tова е затварящия таг на функцията
	 
	 
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 на вашата активна тема.

Понякога в самия PHP код има грешки, направени от автора по невнимание, например забравени кавички. Или друг път е виновен самия ползвател, който не изпълнява правилно инструкциите, или пък самите инструкции са грешни и т.н.

Сблъсквали ли сте се със тези грешки? Как се справяте със тях? Сблъсквали ли сте се със грешка която не съм споменал във статията? Ако е така, споделете в коментарите.

С уважение, Николай Томов.

Хареса ли ви статията? Споделете я с приятелите:

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *