Intereting Posts
Установить уровень домена rel canonical с Yoast SEO Рассчитывать родительские комментарии и ответы отдельно? Pagination не работает в настраиваемом шаблоне страницы Отображать название персонализированного заголовка в виде текста, если миниатюра сообщения недоступна Как создать страницу, в которой перечислены все категории с ее рейтингами Получение значений атрибутов shortcode и содержимого короткого кода с помощью JavaScript regex Как добавить пользовательский столбец в корзину woocommerce? Классифицировать пользовательские типы сообщений Строгое правило Ошибка загрузки bootstrap navwalker Как я могу получить таблицу с количеством опубликованных сообщений по дате? Переписать правила и запрос для виртуальной страницы Не удалось отобразить панель администратора WordPress в интерфейсе как администратор Как переместить все шаблоны тем в подпапку WP Показывать всплывающее окно или уведомление администратора после добавления новых категорий Загрузка пользовательских типов сообщений в полнофункциональный календарь на основе jQuery?

Почему условные выражения не могут работать на странице?

<?php if (is_single()) { echo '1'; } elseif ( is_page() ) { echo '2'; } else { echo '3'; } ?> 

Я помещаю этот фрагмент вверху index.php, и это то, что я использую, чтобы управлять макетом моих сообщений в блоге. Затем я создал новую страницу, установил шаблон по умолчанию и оставил его пустым. Он показывает все мои сообщения. Но фрагмент выше эха на 3. Он использует index.php в качестве шаблона, но это страница. Почему это не повторяет 2?

ОБНОВИТЬ

Поскольку страница подачи блога была установлена ​​в «Настройки»> «Чтение», мне пришлось использовать условный is_home(); , Извиняюсь за всю путаницу.

Solutions Collecting From Web of "Почему условные выражения не могут работать на странице?"

Условные теги в основном вытекают из основного запроса и зависят от него.

  • is_page() функции is_page()
    • $wp_query->is_page() метод
      • который проверяет $wp_query->is_page (установленное во время загрузки) и некоторые другие вещи, если вы попросили проверить конкретную страницу.

Таким образом, вероятная причина для условного тега не производить ожидаемый доход – это проблема с глобальным $wp_query , например, он стирается и перезаписывается query_posts() .

Развернув ответ @Rarst, вам нужно будет запустить wp_reset_query() или wp_reset_postdata() в конце вашего цикла (фида). Это приведет к тому, что глобальная переменная $wp_query вернется к тому, что она должна быть, и ваши условные условия должны работать по назначению.