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

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


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

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

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

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

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

Что то из этого списка http://joxi.ru/krDDw0qfE3p47r должно быть  1 =) выяснить что, потом выяснить почему=))
Артем Л.
Hungry_Hunter
31 год, Россия
10376 сообщений
#2 месяца назад
Нет, в настройках чтения все по умолчанию без выбора страниц.

is_home - пусто
[query_vars_changed:WP_Query:private] => 1
единичка только тут
Чудеса) первый раз такое вижу...
Сергей Глушко
micros
26 лет, Украина
787 сообщений
#2 месяца назад
Нашел код который ставит приватным, точней не приватным в прямом смысле, а как я понял измененным, не кастомным, поэтому оставльные 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 что бы определить главную?
Артем Л.
Hungry_Hunter
31 год, Россия
10376 сообщений
#2 месяца назад
Цитата (micros):
Что то такое ощущение что это у вас WooCommerce=)

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