Проверка является ли текущая страница страницей блога

19 июл. 2013 г., 14:20:02
Просмотры: 162K
Голосов: 52

Я новичок в WordPress. Я ищу способ проверить, является ли текущая страница страницей блога в коде файла header.

Я искал, но не смог найти способ. Помогите, пожалуйста.

0
Все ответы на вопрос 11
2
68

Если под "страницей блога" вы подразумеваете статическую страницу, установленную как страница записей в Настройках чтения, то её можно проверить следующим образом:

if ( is_front_page() && is_home() ) {
  // Главная страница по умолчанию
} elseif ( is_front_page() ) {
  // Статическая главная страница
} elseif ( is_home() ) {
  // Страница блога
} else {
  // Всё остальное
}

При использовании is_home() и is_front_page() важно соблюдать правильный порядок, чтобы избежать ошибок и проверить все возможные пользовательские настройки.

(Источник: Условные теги - Страница блога)

Или просто:

if ( !is_front_page() && is_home() ) {
  // Страница блога
}

Или ещё проще (предположительно):

if ( is_home() ) {
  // Страница блога
}
3 авг. 2014 г. 06:50:20
Комментарии

Один из случаев, когда стоит использовать if ( !is_front_page() && is_home() ), по крайней мере на мой взгляд, это если вы распространяете тему, у которой разный стиль оформления для главной страницы по умолчанию и страницы блога.

Giraldi Giraldi
3 авг. 2014 г. 10:03:14

Я обнаружил, что is_front_page() возвращает true независимо от того, выбрана ли архивная страница блога или обычная страница. Нужна проверка. https://codex.wordpress.org/Function_Reference/is_front_page

atwellpub atwellpub
28 мая 2017 г. 03:32:40
2
30

Вы можете использовать следующий код в файле functions.php вашей темы:

function is_blog () {
    return ( is_archive() || is_author() || is_category() || is_home() || is_single() || is_tag()) && 'post' == get_post_type();
}

Затем добавьте это в файл, который вы проверяете:

<?php if (is_blog()) { echo 'Вы находитесь на странице блога'; } ?>

Вы можете использовать хуки в файле functions.php, чтобы подключить этот код и сделать так, чтобы он отображался на каждой странице.

18 апр. 2014 г. 11:26:49
Комментарии

Это отличный ответ, если вы хотите определить, находитесь ли вы на странице блога, но не обязательно на главной странице блога. Для этого смотрите ответ @Giraldi.

Tim Malone Tim Malone
18 апр. 2016 г. 01:04:45

Я ошибочно предположил, что функция is_blog() существует, потому что существует is_page(). Мне не пришло в голову проверить официальный указатель условных тегов WordPress. Я успешно применил это решение с помощью плагина Widget Logic.

Clarus Dignus Clarus Dignus
14 апр. 2019 г. 15:34:16
2
19

Если под "страницей блога" вы подразумеваете статическую страницу, установленную как страницу записей в настройках "Чтение":

global $wp_query;

if ( isset( $wp_query ) && (bool) $wp_query->is_posts_page ) {
    //статическая страница блога
}

Примечание: Это решение также работает с действием template_redirect

17 апр. 2016 г. 13:33:00
Комментарии

Привет repinsa, добро пожаловать на WPSE :) Спасибо за ваш ответ. Он получил несколько минусов, вероятно, из-за синтаксической ошибки в коде (пропущена точка с запятой после global $wp_query), а также потому что он не полностью отвечает на вопрос. Это функция, но автор спрашивал, как реализовать это в файле header.php - так что, возможно, нужно немного больше объяснений о том, что и куда вставлять. Ещё раз, добро пожаловать, рады видеть вас здесь!

Tim Malone Tim Malone
18 апр. 2016 г. 01:07:04

Это на самом деле единственный хороший ответ здесь, заслуживал больше плюсов.

LachoTomov LachoTomov
23 дек. 2017 г. 16:16:41
0

Чтобы получить главную страницу блога, я обнаружил, что

if ( !is_front_page() && is_home() ) {
  // страница блога
}

у меня не работает, пришлось использовать функцию get_option('page_for_posts') для определения post_id страницы блога. Мое решение:

if ( !is_front_page() && is_home() ){  

    if ( empty ( $post_id) ) {
        global $post;
        $post_id =  get_option( 'page_for_posts' );
    }

    // страница блога
}
16 мая 2018 г. 21:58:51
2

Вы можете использовать..

<?php if ( is_single() ) { ?>

Здесь выполняются действия

<?php } ?>

чтобы проверить, является ли это отдельной записью блога. Или...

<?php if ( is_home() ) { ?>

Здесь выполняются действия

<?php } ?>

чтобы проверить, является ли это главной страницей блога

19 июл. 2013 г. 14:23:17
Комментарии

Не работает, если вы изменили страницу блога

cdmckay cdmckay
9 окт. 2014 г. 18:09:22

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

butlerblog butlerblog
27 дек. 2017 г. 16:29:08
2

Я использую этот способ

// Получаем классы body в виде массива
$body_classes = get_body_class();
// Проверяем наличие класса "blog" в массиве
if(in_array("blog", $body_classes)) {
   // Выполняем действия
}
27 сент. 2015 г. 14:07:57
Комментарии

Это не идеально, я бы не рекомендовал это.

Uriahs Victor Uriahs Victor
29 сент. 2021 г. 01:40:14

Я бы не полагался на CSS-класс.

Azamat Azamat
31 авг. 2022 г. 08:13:36
0

Есть хитрый метод.

http://example.com/blog

Предположим, если slug вашей страницы блога - blog, вы можете использовать этот код.

global $wp_query;
if($wp_query->query['pagename']=='blog'){
// это страница блога
}
4 окт. 2016 г. 16:04:05
0

ГЛАВНАЯ СТРАНИЦА

if(is_home() && is_front_page() || is_front_page()): // статическая или главная страница по умолчанию
 ...
endif;

БЛОГ

if(is_home() && !is_front_page()): // блог
 ...
endif;
17 дек. 2016 г. 06:51:06
0

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

if( is_page('blog') ) {
echo "Это страница вашего блога"; 
}

Но убедитесь, что вы не выбрали отображение последних записей блога на главной странице, а установили конкретную страницу для блога, например, blog или news и т.д. Просто используйте слаг этой страницы, и всё будет работать.

16 сент. 2017 г. 11:01:56
0

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

Например: В моей странице блога я использую этот шаблон:

template-blog.php

Таким образом, я могу отличить её от любой другой страницы следующим образом:

if( is_page_template('template-blog.php') ) {}

Надеюсь, это поможет.

21 сент. 2021 г. 22:11:40
0

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

[Примечание: Это будет работать, если ваш блог является «Страницей записей»] изображение для описания

   <li <?php if(get_post_type() == 'post' )
     {echo 'class="current-menu-item"';} ?> >
       <a href="<?php echo site_url('/blog');?>">
         Блог
       </a>
    </li>
2 дек. 2021 г. 22:32:33