Php if is home is paged

Проблема с использованием функции is_home()

Потратил сегодня пару часов, пытаясь понять, почему функция is_home() возвращает значение TRUE даже если открыта не главная страница блога. Путем тестов выяснилось, что за главную страницу считается любая страница, образованная постраничной навигацией (/page/2, /page/3 и т.д.). Если подумать, то это вполне логично для функций типа is_category() — ведь при переходе на вторую страницу определенной рубрики сама рубрика остается той же самой. Но ситуация с is_home() совершенно другая — главных страниц в блоге не может быть больше одной. Вероятно для создателей WordPress понятие «main blog page» сродни категории с таким же названием. Обойти проблему оказалось довольно легко, надо вместо кода:

 if ( is_home() ) { ?> 

Главная страница!

} else { ?>

Это не главная страница!

} ?>

Главная страница!

else < ?>

Это не главная страница!

?>

 if ( (is_home())&&!(is_paged()) ) { ?> 

Главная страница!

} else { ?>

Это не главная страница!

} ?>

Главная страница!

else < ?>

Это не главная страница!

?>

Как вы видите, решение оказалось элементарным. Жаль, что для его поиска пришлось закопаться в форумы поддержки, так как в документации ничего подобного не нашлось.

Понравился пост? Подпишись на обновления по RSS или Twitter !

что доходить то? это в статье изначально есть.
а кодекс вещь хорошая, но не все там есть и не всегда.

Ребята, не забывайте о том что если у вас главная страница является статической — то есть вывод заданой page в админке, то такое условие работать не будет. Нужно использовать проверку следующего вида:
is_front_page() — работает сто процентно!

Василий СПАСИБО!!))) Вожусь уже 2-й час не могу добиться чтоб условие выполнялось. А теперь все работает ЧЕТКО!)

Вот спасибо, а то рекламу, что то совсем неохота было вручную на каждый пост вставлять. А printf на главной в каждом посте выводил, что тоже не симпатично.

Источник

Условный тег: is_home

Тег проверяет вывод главной страницы блога с записями. Если в блоге главной страницей установлена статическая страница (‘На главной странице отображать‘ в ‘Параметрах\Чтение‘), то тег будет срабатывать именно на странице с записями. В этом случае для определения главной страницы блога надо использовать условный тег is_front_page. Этот условный тег является boolean-функцией, то есть он возвращает только true или false.

Внимание! «Главная страница блога» и «главная страница блога с записями» это разные понятия, совпадающие по смыслу только, если в качестве главной страницы выбран вывод последних записей.

В функции нет никаких параметров.

Возвращает true при выводе главной страницы блога с записями и false в противном случае.

1 Проверка на вывод главной страницы блога с записями

 if( is_home() ) echo "Это главная страница блога с записями"; else echo "Это не главная страница блога с записями"; ?>

Внимание! Тег is_home() сработает и на страницах, образованных постраничной навигацией (/page/2 и др).

2 Использование с условным тегом is_paged

Данный код определяет главную страницу блога с записями, исключая страницы, образованные постраничной навигацией.

 if( is_home() && !is_paged() ) echo "Это главная страница блога с записями"; else echo "Это не главная страница блога с записями"; ?>

Функция добавлена в версии 1.5.0

Функция is_home() находится в wp-includes/query.php

Понравился пост? Подпишись на обновления по RSS или Twitter !

Мне как раз на страницах менять ничего не нужно. У меня вот какая проблема. Хочу для внутренней оптимизации показывать на главной заголовок сайта с h1 а на всех второстепенных просто в div, а в h1 заголовок статьи. Нужно это потому, что h1 на странице должен быть только один. Странно, но данный код не работает для неавторизованных. То есть, мне, админу, показывается все хорошо, а незалогиненным — оба кода друг за другом. Вот мой код:

 if ( is_home() ) { ?> 
bloginfo('name'); ?>
bloginfo('description'); ?>
} else { ?>
bloginfo('name'); ?>
bloginfo('description'); ?>
} ?>

else < ?>

?>

Странно, но данный код не работает для неавторизованных. То есть, мне, админу, показывается все хорошо, а незалогиненным — оба кода друг за другом.

вы проверяйте куда вы запихнули этот код.
так, со стороны — он должен работать без вопросов.
никаких ошибок я не вижу.

Все, нашел причину. Страница закэшировалась и выдавалась через раз то из кэша, то нормальная. Вспомнил, что w3 total cache не кэшурует админов. Странно только, что перед работой над темой я весь кэш обнулил и выключил плагин. В общем, помогло включение плагина, повторное обнуление, выключение всех браузеров и чистка их кэша с помощью cCleaner.

Источник

Условный тег: is_paged

Тег проверяет вывод страницы, образованной постраничной навигацией (/page/2, page/3 и т.д.). Этот условный тег является boolean-функцией, то есть он возвращает только true или false.

В функции нет никаких параметров.

Возвращает true при выводе страницы, образованной постраничной навигацией и false в противном случае.

1 Проверка на вывод страницы, образованной постраничной навигацией

 if( is_paged() ) echo "Это страница образована постраничной навигацией"; else echo "Это страница не образована постраничной навигацией"; ?>

2 Использование с условным тегом is_home

Этот код определяет главную страницу блога с записями, исключая страницы, образованные постраничной навигацией.

 if( is_home() && !is_paged() ) echo "Это главная страница блога с записями"; else echo "Это не главная страница блога с записями"; ?>

3 Определение конкретной страницы постраничной навигации

 global $wp_query; if( $wp_query->query_vars['paged'] == 5 ){ echo "Это 5 страница, образованная постраничной навигацией"; } ?>

Тег проверяет вывод страницы постраничной навигации только для главной страницы блога с записями и для архивов. Не будет работать в записях и страницах, разбитых через использование тега .

Функция добавлена в версии 1.5.0

Функция is_paged() находится в wp-includes/query.php

Понравился пост? Подпишись на обновления по RSS или Twitter !

Комментариев пока еще нет.

Источник

Вывод текста в блоге только на главной

Условные операторы wordpress

Стандартный формат блога построен таким образом, что его сообщения (посты) выводятся друг за другом, причем первыми отображаются самые новые, а старые постепенно уходят в архив. Так было в самого начала, но с развитием блоггинга мы могли видеть множество различных вариантов шаблонов wordpress, которые, например, отображают информацию в газетном виде, а сверху демонстрируются так называемые featured (избранные) статьи. Или, например, фото блоги, что практически не содержат текстовой информации, лишь фото, ну и т.п.. Люди понемногу стали отходить от стандартов. И это здорово.

Одним из таких моментов, что может слегка разнообразить ваш блог, есть вывод определенного текста на главной странице блога. То есть читатель заходит на проект site.ru и видит небольшое текстовое описание, о чем собственно сайт, что здесь можно найти и т.п. Иногда такие описания (вступления) помещаются в сайдбар, иногда в шапку блога. Можно поступить несколько иным образом, скомбинировав два варианта:

  • на главной отображается текстовый блок с вступлением;
  • на всех остальных страницах описание блога выводится в сайдбаре, но в уменьшенном (более компактном виде).

Пример пригодился мне в одном из блогов. Я там по дизайну еще не все делал, но как раз сегодня разбирался с выводом текста на главную. Получается, что многие посты на WordPress Inside основаны на личном опыте:)

Кстати, если вам нужно подправить лишь оформление главной, то достаточно будет использовать WordPress функцию body_class — она добавит в body соответствующие классы, а дальше вы примените CSS стили.

Условные операторы wordpress

Для решения нашей задачи мы будем использовать условные операторы wordpress. Но тут есть небольшая «неувязочка», которую раскусить пока не удалось, хотя на финальный результат она не влияет. Фишка в том, что для определения главной страницы блога есть сразу 2 оператора — is_home() и is_front_page(). По описанию в кодексе мне лично до конца и не удалось понять какая между ними разница, термины одинаковые какие-то, поэтому просто практически нашел работающий вариант.

is_home() – условный оператор, который равен TRUE или FALSE и проверяет отображается ли в данный момент «main page» для блога. Сказано еще, что в WordPress 2.1 функция обрабатывается несколько иначе, чем в других версиях и, если выбрана статическая страница в качестве главной, то там могут возникнуть проблемы.

is_front_page() – добавлена в версии 2.5, также является условной, принимает значение TRUE или FALSE в зависимости от того отображается ли в данный момент «front» страница или пост. То есть, судя по всему, функция универсальная и срабатывает в обеих случаях – когда у вас в админке выбрано «отображать последние записи на главной» либо в качестве главной идет «статическая страница».

Если меня читают гуру wordpress, которые разбираются во всех тонкостях системы, то буду признателен за разъяснение. Но пока что могу сказать, что я использую у себя is_front_page() и никаких проблем не наблюдал. На главной при этом выводятся «последние посты». Получаем что-то вроде:

 if (is_front_page() ) { echo('This is a homepage'); // действие для главной страницы } else { echo('This is not a homepage'); // действие для не главной страницы } ?>

В блогах бывают ситуации, когда на главной странице не помещаются все посты и внизу появляется разбиение на страницы. Что важно(!) система wordpress при переходе по ним не меняет состояние страницы с «главной» на другое — получается главная страница, которая просто не помещается за один раз. Поэтому мы будем использовать еще один важный условный оператор:

is_paged() — реагирует (TRUE или FALSE) на ситуацию, когда все посты архива (для главной, категории, тегов) не помещаются на одной странице и разбиваются на несколько. Причем следует заметить, что это не касается разбиения отдельного поста на страницы с помощью .

Итого — выводим текст только на главной

Чтобы выводить текст на главной и прятать его на любых других страницах я использую код, который добавляю в файл шаблона index.php до выборки последних постов блога have_posts():

 if ((is_front_page()) and (!is_paged())) { ?> 
} ?>

Теперь шаг номер 2 – будем выводить небольшое краткое описание для блога в сайдбаре – для этого открываем файл sidebar.php и добавляем в нужное нам место строки:

 if ((!is_page('2')) and !((is_front_page()) and (!is_paged()))) { ?> 

Короткое описание

} ?>

Здесь мы видим еще один условный оператор, который может кому-то пригодиться.

is_page (‘ID’) – проверяет отображение страницы с номером, указанным в ID. В моем примере я скрываю краткое описание блога в сайдбаре на странице с id 2, потому что там у меня приготовлена целая статья «о проекте». То есть нет смысла выводить краткое описание, когда все рассказывается непосредственно в блоке контента.

Понравился пост? Подпишись на обновления блога по RSS wordpress insideRSS, RSS wordpress insideEmail или twitter wordpress insidetwitter!

рейтинг

Оцените статью:

категорияКатегории: Возможности; Хаки и секреты;
тегиТеги: главная, полезное для блога, правка кода, сниппеты, тексты блога, улучшаем блог.

Похожие статьи:

Источник

Читайте также:  Gender code in php
Оцените статью