Определите, является ли страница страницей сообщений


18

На странице « Настройки чтения» вы можете установить «Первую страницу» и «Страницу сообщений». Вы можете проверить, является ли текущая страницаis_front_page();

Есть ли аналогичная функция для «Страницы сообщений». Я заметил, что is_page();не работает для этой специальной страницы.

Благодарность

Ответы:


34

is_home() проверяет «страницу сообщений», несмотря на несколько запутанное название функции.


спасибо, я думал, что проверил их все, но я думаю, что нет ...
Майк

3
Как насчет $wp_query->is_posts_page?
Уэстон Рутер

У @WestonRuter есть правильный ответ на вопрос.
J

6

Wordpress поставляется с 7 основными типами страниц шаблонов, которые можно определить таким образом

if ( is_main_query() ) {
    // Error
    if ( is_404() ) {
        ;
    }
    // Front page
    if ( is_front_page() ) {
        ;
    }
    // Archive
    if ( is_archive() ) {
        ;
    }
    // Comments popup
    if ( is_comments_popup() ) {
        ;
    }
    // Search
    if ( is_search() ) {
        ;
    }
    // Singular
    if ( is_singular() ) {
        ;
    }
    // Home - the blog page
    if ( is_home() ) {
        ;
    }
}

is_home говорит вам, что у вас есть страница блога.


1

«Страница сообщений» обычно представляет собой архив:

  • сообщения категории
  • сообщения тега
  • сообщения даты (год, месяц ...)
  • сообщения главного архива

Каждый из них может быть проверен одним из множества условных тегов, таких как is_category() is_tag() is_date() is_archive() И многие другие. Чтобы лучше понять, обратитесь к кодексу http://codex.wordpress.org/Conditional_Tags


0

Сначала проверьте блоги, связанные с такими вещами, как автор, тег, тип сообщения

function is_blog () {
        global  $post;
        $posttype = get_post_type($post );
        return ( ((is_archive()) || (is_author()) || (is_category()) || (is_home()) || (is_single()) || (is_tag())) && ( $posttype == 'post')  ) ? true : false ;
  }

Теперь проверь и верни то, что хочешь иметь

function check_post_type(){
    $postType;
    if (is_blog())
      {
         $postType = 'I am post';
      } else
       {
          $postType = 'I am page';
       };
    return $postType;
  }

Используйте это как босс <?php echo check_post_type();?>

Благодаря Уэсу Босу


0

TL; DR

Случай A . Нет необходимости определять его внутри основного файла шаблона (index.php), потому что это шаблон по умолчанию для него [1] .

Случай B . Чтобы определить его внутри шаблона страницы (например, page.php), просто проверьте его следующим образом:

get_option( 'page_for_posts' ) == get_the_ID()

Детали

Я буквально копал его в исходном коде [2], чтобы узнать, как WordPress проверяет значение. Оказывается, он использует оператор, get_option( 'page_for_posts' )чтобы узнать идентификатор сообщения выбранного значения на странице сообщений .

Так что да, для этой цели не существует такой официальной функции проверки, которая была бы похожа на is_front_page().

Если вы знаете идентификатор выбранной вами страницы, вы можете использовать его для проверки.

Ссылки

  1. WordPress Codex, разработка тем, codex.wordpress.org/Theme_Development

  2. Исходный код настроекНастройки чтения , github.com/WordPress/.../wp-admin/options-reading.php

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.