Добавить условный хук действия - только при использовании home.php
Я пытаюсь добавить хук действия в functions.php, только если страница использует home.php
, но следующий код не работает:
if ( is_page_template("home.php") ) {
// выполнить действия
}
Чтобы убедиться, что используется именно файл home.php
, я делаю так:
global $template; echo $template;
Используйте is_home
вместо этого, так как is_page_template
не будет работать для home.php
, поскольку технически это не шаблон страницы в традиционном понимании.
add_action('template_redirect', 'are_we_home_yet', 10);
function are_we_home_yet(){
if ( is_home() ) {
//ваша логика здесь
}
}
Исправленный вариант:
add_action('template_redirect', 'are_we_home_yet', 10);
function are_we_home_yet(){
global $template;
$template_file = basename((__FILE__).$template);
if ( is_home() && $template_file = 'home.php' ) {
//ваша логика здесь
}
}
Исправленный ответ - это то, что вам действительно нужно. Он проверяет, находитесь ли вы на главной странице, а также получает используемый файл шаблона и проверяет, является ли этот файл вашим home.php
. Если это так, вы можете приступать к выполнению вашей логики...

У меня была такая проблема. Я хотел подключать скрипты Jssor Slider только при загрузке главной страницы. Я использовал файл home.php, и решил это следующим образом:
- Переименовал файл home.php во что-то другое, например home_mysite.php, задав имя для шаблона страницы в верхнем комментарии файла:
/** * Название шаблона: Главная */
- Затем создал новую пустую страницу, выбрав шаблон Главная.
- Настроил WordPress на отображение моей новой страницы в качестве главной (
Настройки > Чтение > Статическая страница > Главная страница: Главная
) - Наконец, я понял, что необходимо поместить условный код внутри моей функции, чтобы
is_page('home')
работало корректно. ('home' - это ярлык моей новой пустой главной страницы). То есть, когда я пытался условно добавить действие, я не мог проверить, загружается ли моя главная страница -is_page('home')
всегда возвращалоfalse
. Это заработало, когда я изменил логику на всегда добавлять действие, но условно подключать скрипты.
Код, который сработал в functions.php:
function mysite_jssor() {
//условно подключаем скрипт
if ( is_page('home') ) {
wp_enqueue_script( 'jssor', get_stylesheet_directory_uri() . '/js/jssor.js', array( 'jquery' ), false, false );
}
}
//всегда добавляем действие
add_action( 'wp_enqueue_scripts', 'mysite_jssor' );
Таким образом мои скрипты Jssor загружаются только при посещении главной страницы, а не других страниц или записей.
