Каковы различные способы обнаружения домашней страницы в WordPress?

Каковы различные способы обнаружения главной страницы WordPress

кроме is_front_page() и is_home()

благодаря

is_front_page() – это то, что вы хотите.

Я предполагаю, что из-за того, что is_home() не работает, ваша домашняя страница статична в соответствии с настройками в wp-admin.

is_home() возвращает true на главной странице блога, тогда как is_front_page() возвращает значение true, на котором когда-либо была определена страница вашей главной страницы, фид или нет.

Из кода:

Этот условный тег проверяет, является ли главная страница сообщениями или страницами. Это логическая функция, означающая, что она возвращает TRUE или FALSE. Он возвращает TRUE, когда отображается основная страница блога, и на экране Settings-> Reading-> Front page установлено значение «Ваши последние сообщения» или когда установлено значение «Статическая страница», а значением «Front Page» является текущей страницы.

Я просто делаю следующее:

 if ( $_SERVER["REQUEST_URI"] == '/' ) { } 

Он работает и не перегружает вещи, особенно, поскольку is_front_page() и is_home() не всегда работают так, как вы ожидали бы от них.

С двадцать десять я использую:

 <?php if ( $_SERVER["REQUEST_URI"] == '/' ) { ?> <h1 class="site-title"><?php bloginfo( 'name' ); ?></h1> <h2 class="site-description"><?php bloginfo( 'description' ); ?></h2> <?php } else { ?> <p class="site-title"><?php bloginfo( 'name' ); ?></p> <p class="site-description"><?php bloginfo( 'description' ); ?></p> <?php } ?> 

Работает как шарм … $ _SERVER – это тот, который я всегда использую, и он всегда работает.

Во многих ситуациях сайт WordPress может иметь is_home и is_frontpage, как eval, так и true на домашней странице REAL, а также на главной странице блога. После создания сайтов в WordPress в течение примерно 4 лет это все еще беспокоит меня.

Например, если у вас есть сайт, на котором у вас есть ваши последние сообщения на главной странице, возможно, с помощью слайдера или других элементов, ориентированных на главную страницу, и у меня есть другая страница блога, то is_frontpage, а is_home будет отображаться как истина на страницах BOTH. Таким образом, WordPress не имеет четкой условной функции для подлинной домашней страницы, по крайней мере, как большинство людей думают о домашней странице веб-сайта.

Поэтому я согласен с Лиамом в том, что если вы столкнетесь с запутанной ситуацией, что-то вроде if ($ _SERVER ["REQUEST_URI"] == '/') {}

является более надежным.

Нашел этот вопрос около двух лет назад, имея дело с довольно конкретной установкой:

Я хотел загрузить модуль (фасетную поисковую систему) на домашнюю страницу, а не на любую другую страницу. Проблема с ним заключалась в том, что он должен был загрузиться в init для правильной работы и быть быстрым.

Обычно я должен был согласиться на ответ Лиама Галвина .
Но я не поклонник решений грубой силы . Поэтому я заглянул в is_front_page() чтобы узнать, почему он возвращает false во время init . И это довольно просто: он полагается на $wp_query , который не установлен в этой точке.

Поэтому я написал функцию ниже (и использовал ее с тех пор), сочетая лучшее из обоих миров:
грубая сила до $wp_query будет установлен параметр $wp_query (должен ли он когда-либо понадобиться) и правильный WP-путь после этого:

 function on_front_page() { global $wp_query; if ( ! isset( $wp_query ) ) { return $_SERVER["REQUEST_URI"] == '/'; } else { return $wp_query->is_front_page(); } } 

Это не более того, не менее, чем вариант is_front_page() , с ответом Лиама в качестве резервного. Не сталкивайтесь с коллизиями с именами, но не переименуйте их, если вы найдете его имя слишком распространенным.

Факт, что я копирую / вставляю его в каждый проект WP, так как он меня не подвел один раз, поэтому я решил поделиться с вами.

извне цикла:

 if(get_option("page_on_front") == $post->ID){ //do front page stuff here } 

is_home() – это путь.

Вы пробовали этот метод, и он не работает? Если да, это обычно связано с настройками mod_rewrite или самими настройками wordpress.