Добавить условный хук действия - только при использовании home.php

10 окт. 2012 г., 21:29:28
Просмотры: 16.3K
Голосов: 4

Я пытаюсь добавить хук действия в functions.php, только если страница использует home.php, но следующий код не работает:

if ( is_page_template("home.php") ) {

// выполнить действия

}

Чтобы убедиться, что используется именно файл home.php, я делаю так:

global $template; echo $template; 
0
Все ответы на вопрос 3
1

Используйте 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. Если это так, вы можете приступать к выполнению вашей логики...

10 окт. 2012 г. 23:14:55
Комментарии

Вы имели в виду : is_home() && $template_file == 'home.php' ?

Bryan Bryan
14 июл. 2017 г. 00:49:44
0

У меня была такая проблема. Я хотел подключать скрипты Jssor Slider только при загрузке главной страницы. Я использовал файл home.php, и решил это следующим образом:

  1. Переименовал файл home.php во что-то другое, например home_mysite.php, задав имя для шаблона страницы в верхнем комментарии файла:
/**
* Название шаблона: Главная
*/
  1. Затем создал новую пустую страницу, выбрав шаблон Главная.
  2. Настроил WordPress на отображение моей новой страницы в качестве главной (Настройки > Чтение > Статическая страница > Главная страница: Главная)
  3. Наконец, я понял, что необходимо поместить условный код внутри моей функции, чтобы 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 загружаются только при посещении главной страницы, а не других страниц или записей.

8 сент. 2015 г. 03:12:57
0

Функция, которую вы ищете, это is_front_page()

add_action('template_redirect', 'work_only_on_front_page', 10);
   function work_only_on_front_page(){
    if ( is_front_page() ) {
    // Ваш код
   }
}
18 апр. 2018 г. 17:33:09