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

Если под "страницей блога" вы подразумеваете статическую страницу, установленную как страница записей в Настройках чтения, то её можно проверить следующим образом:
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() ) {
// Страница блога
}

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

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

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

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

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

Если под "страницей блога" вы подразумеваете статическую страницу, установленную как страницу записей в настройках "Чтение":
global $wp_query;
if ( isset( $wp_query ) && (bool) $wp_query->is_posts_page ) {
//статическая страница блога
}
Примечание: Это решение также работает с действием template_redirect

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

Чтобы получить главную страницу блога, я обнаружил, что
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' );
}
// страница блога
}

Вы можете использовать..
<?php if ( is_single() ) { ?>
Здесь выполняются действия
<?php } ?>
чтобы проверить, является ли это отдельной записью блога. Или...
<?php if ( is_home() ) { ?>
Здесь выполняются действия
<?php } ?>
чтобы проверить, является ли это главной страницей блога

Есть хитрый метод.
Предположим, если slug вашей страницы блога - blog
, вы можете использовать этот код.
global $wp_query;
if($wp_query->query['pagename']=='blog'){
// это страница блога
}

Думаю, это очень просто. Я был в такой же ситуации и использовал следующий метод, который заключается в использовании слага страницы.
if( is_page('blog') ) {
echo "Это страница вашего блога";
}
Но убедитесь, что вы не выбрали отображение последних записей блога на главной странице, а установили конкретную страницу для блога, например, blog или news и т.д. Просто используйте слаг этой страницы, и всё будет работать.

На мой взгляд, лучшее решение вместо проверки, является ли страница главной, архивом или нет, ИЛИ & И вы можете просто проверить используемый шаблон.
Например: В моей странице блога я использую этот шаблон:
template-blog.php
Таким образом, я могу отличить её от любой другой страницы следующим образом:
if( is_page_template('template-blog.php') ) {}
Надеюсь, это поможет.

Это сработало для меня... Даже если я захожу внутрь отдельных записей, меню блога остается активным. Таким образом, вы всегда можете указать страницу блога.
[Примечание: Это будет работать, если ваш блог является «Страницей записей»]
<li <?php if(get_post_type() == 'post' )
{echo 'class="current-menu-item"';} ?> >
<a href="<?php echo site_url('/blog');?>">
Блог
</a>
</li>
