Артем Л.
11416 сообщений
#7 лет назад
Какая-то ерунда, никак не могу понять в чем дело.
Пишу в functions.php 

if (is_front_page()) {echo 'TEST';}


Надпись не выводится. Главная страница сделана через файл home.php
Почему такое может быть? На других сайтах все работало)
Евгений К.
731 сообщение
#7 лет назад
Если else добавить, выводит то что в else ?

Попробуйте через is_home()
Когда-то тоже были кони с is_front_page, но честно как выкрутился уже не могу вспомнить  
Сергей Глушко
834 сообщения
#7 лет назад
По всей видимости перед is_front_page() выполняется какой то не стандартный  wp_query или query_posts
исправить можно или добавив wp_reset_query() перед is_front_page() или использовать if ( (is_home())&&!(is_paged()) ) {
Артем Л.
11416 сообщений
#7 лет назад
wp_reset_query(); if (is_front_page()) {echo '111111111';} else {echo '22222222222';}

if ( (is_home()) && !is_paged()) {echo '111111111';} else {echo '22222222222';}

В обоих случаях выводится 22222222222
Сергей Глушко
834 сообщения
#7 лет назад
А в настройках отображения случайно не страница выбрана? а у этой страницы может быть выбран свой шаблон справа в меню?

а что выводит если распечатать параметры запроса вот так  
global $wp_query;
print_r($wp_query);
есть такое ?  => 1

Что то из этого списка  должно быть  1 =) выяснить что, потом выяснить почему=))
Артем Л.
11416 сообщений
#7 лет назад
Нет, в настройках чтения все по умолчанию без выбора страниц.

is_home - пусто
=> 1
единичка только тут
Чудеса) первый раз такое вижу...
Сергей Глушко
834 сообщения
#7 лет назад
Нашел код который ставит приватным, точней не приватным в прямом смысле, а как я понял измененным, не кастомным, поэтому оставльные is_ в нулях
// Set a flag if a pre_get_posts hook changed the query vars.
$hash = md5( serialize( $this->query_vars ) );
if ( $hash != $this->query_vars_hash ) {
$this->query_vars_changed = true;
$this->query_vars_hash = $hash;
}
Попробовать найти pre_get_posts в шаблоне вашем+)) Что то такое ощущение что это у вас WooCommerce=)
Может не стоит парится, а сделать костыль по request_uri что бы определить главную?
Артем Л.
11416 сообщений
#7 лет назад
Цитата (micros):
Что то такое ощущение что это у вас WooCommerce=)

Да не, сам шаблон пилю с нуля в том то и дело. Скорее всего плагин какой-то портит картину.
Пожалуй да, попробую через request_uri, спасибо!
Сергей Глушко
834 сообщения
#7 лет назад
Hungry_Hunter,
if( $wp_query->is_front_page() ){
//тут главная
}
Нашел, вот так может сработать, если используется функция  pre_get_posts и ей подобные.
Т.е не свойство брать, а метод вызывать=)
Артем Л.
11416 сообщений
#7 лет назад
Не для моего случая  Тоже не срабатывает, сделал как вы и писали через request_uri
Сергей Глушко
834 сообщения
#7 лет назад
Странно что не сработало, видимо что то там не так в плагинах=)))
у меня сработал и $wp_query->is_front_page()  и  $wp_query->is_home() 
после добавления pre_get_posts =) 
При этом как обычно is_front_page() не работает после pre_get_posts=)
Ну да ладно, костыль тоже надежный=))
Виталий Бохин
953 сообщения
#7 лет назад
После вызова wp_head(); для ее работы есть данные, до этого нет, надо обратится к wp_head, пробуйте так:
function my_function() {
    if(is_front_page()){ 
        echo "front"; 
    }else{ 
        echo "not front"; 
    }
}
add_action( 'wp_head', 'my_function' );