Intereting Posts
Как использовать страницу wp-login.php только для выхода из системы? Манипулировать постоянной связью удалить сообщение и категории / количество меток прямо сейчас виджет панели инструментов Список всех типов сообщений в представлении администратора с использованием /wp-admin/edit.php?post_type= Использование нескольких версий jQuery, все еще вызывающих его, как WP нравится Как получить WP_User_Query с несколькими аргументами роли Проверьте, содержит ли тег сообщения Woocommerce checkout field maxlength, введите только поле ввода номера (почтовый индекс) Выберите последние 2 статьи, но только из данной категории Возвращаемое значение add_filter Используя WP_Query, как я могу показать события (пользовательский тип сообщения), которые есть в будущем? Карусель каретки для почты Настройка нескольких фоновых изображений по умолчанию? Как реализовать безопасную загрузку изображений с внешнего интерфейса? WordPress Multisite – Несколько подпапок для блогов

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

<?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 вернется к тому, что она должна быть, и ваши условные условия должны работать по назначению.