Перевірте, чи поточна сторінка - це сторінка блогу


33

Я новачок у WordPress. Я шукаю спосіб перевірити, чи поточна сторінка - це сторінка блогу в коді файла заголовка.

Я перевірив, але не можу знайти спосіб. Допоможіть, Pls.

Відповіді:


42

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

if ( is_front_page() && is_home() ) {
  // Default homepage
} elseif ( is_front_page() ) {
  // static homepage
} elseif ( is_home() ) {
  // blog page
} else {
  //everyting else
}

Коли ви використовуєте is_home()та is_front_page(), ви повинні використовувати їх у правильному порядку, щоб уникнути помилок та перевірити всі налаштування користувача.

(Джерело: Умовні теги - Сторінка блогу )

Або просто:

if ( !is_front_page() && is_home() ) {
  // blog page
}

Або простіше (я думаю):

if ( is_home() ) {
  // blog page
}

Один із випадків використання if ( !is_front_page() && is_home() ), принаймні, на мою думку, - це якщо ви поширюєте тему, яка має різний стиль макета для домашньої сторінки за замовчуванням та сторінки блогу .
Гіральді

Я знаходжу, що is_front_page () поверне справжнє значення незалежно від того, чи вибрано архів блогу чи сторінку. Потрібна перевірка. codex.wordpress.org/Function_Reference/is_front_page
atwellpub

19

Ви можете використовувати наступне у вашому файлі themes.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 'You are on a blog page'; } ?>

Ви можете використовувати гачки у вашому файлі function.php, щоб підключити вищезазначене, щоб вони з’явилися на кожній сторінці.


1
Це відмінний відповідь , якщо ви хочете , щоб визначити , якщо ви на на сторінці блогу, але необов'язково з сторінки блогу (як на головній сторінці блогу). Дивіться на це відповідь @ Гіральді.
Тім Малоун

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

11

Якщо під "сторінкою блогу" ви мали на увазі статичну сторінку, яку встановлено як сторінку публікацій у "Читання"

global $wp_query;

if ( isset( $wp_query ) && (bool) $wp_query->is_posts_page ) {
    //static blog page
}

PS. Це рішення також працює на template_redirect дії


Привіт repinsa, ласкаво просимо до WPSE :) Дякуємо, що додали свою відповідь. Його трохи проголосували, мабуть, тому, що в коді є синтаксична помилка (пропущена крапка з комою після global $wp_query), а також тому, що вона не відповідає повністю на запитання. Це функція, але ОП запитав, як це зробити у своєму заголовковому файлі - тому, можливо, знадобиться трохи більше пояснень щодо того, куди подіти. Знову ласкаво просимо, радий вас тут!
Тім Малоун

2
Це насправді єдина хороша відповідь тут, повинна була мати більше результатів.
Лачо Томов

2

Щоб отримати індексну сторінку блогу , я знайшов це

if ( !is_front_page() && is_home() ) {
  // blog page
}

не працює для мене, мені довелося скористатися функцією 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' );
    }

    //blog page
}

0

Існує хитрий метод.

http://example.com/blog

Припустимо, якщо на вашій сторінці блогу стовбур blog, ви можете використовувати цей код.

global $wp_query;
if($wp_query->query['pagename']=='blog'){
// this is blog page
}

0

ДОМАШНЯ СТОРІНКА

if(is_home() && is_front_page() || is_front_page()): // static or default hompage
 ...
endif;

БЛОГ

if(is_home() && !is_front_page()): // blog
 ...
endif;

0

Я думаю, що це дуже просто, я опинився в тій же ситуації, і я застосував наступний прийом, який полягає у використанні сторінки-слизи.

if( is_page('blog') ) {
echo "This is your blog page"; 
}

Але переконайтеся, що ви не вибрали домашню сторінку для відображення останніх публікацій блогу, а ви встановили певну сторінку для блогів, таких як блог чи новини тощо.


0

Ви можете використовувати ..

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

Do stuff here

<?php } ?>

щоб перевірити, чи це одна публікація в блозі. Або ...

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

Do stuff here

<?php } ?>

щоб перевірити, чи це домашня сторінка блогу


2
Не працює, якщо ви змінили сторінку блогу
cdmckay

Це не дає правильної відповіді на ОП. Це означає, що ви знаходитесь на одній публікації, а не на "сторінці блогу".
butlerblog

-1

Я використовую цей спосіб

// Get body classes as array
$body_classes = get_body_class();
// Check if "blog" class exists in the array
if(in_array("blog", $body_classes)) {
   // Do stuff
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.