現在のページがブログページかどうかを確認する


33

WordPressは初めてです。現在のページがヘッダーファイルのコードでブログページであるかどうかを確認する方法を探しています。

チェックしましたが、方法が見つかりません。助けてくれ

回答:


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() )少なくとも私の意見では、使用する1つのユースケースは、デフォルトのホームページブログページのレイアウトスタイルが異なるテーマを配布する場合です。
ヒラルディ14

ブログのアーカイブまたはページが選択されているかどうかにかかわらず、is_front_page()はtrueを返します。確認が必要です。codex.wordpress.org/Function_Reference/is_front_page
atwellpub

19

テーマの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 'You are on a blog page'; } ?>

functions.phpファイルでフックを使用して上記をフックし、すべてのページに表示させることができます。


1
これは、あなたがにしているかどうかを確認したい場合は素晴らしい答えですブログページではなくneccessarily (ブログのホーム・ページのように)ブログページ。@Giraldiの答えを参照してください。
ティムマローン

is_page()が存在するため、is_blog()が存在すると誤って想定していました。公式のWordPressコンディショナルタグインデックスを参照することは私にはありませんでした。Widget Logicプラグインを使用して、このソリューションを効果的に適用することができました。
クララスディグナス

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)、質問に完全に答えていないため、少し下に投票されました。これは関数ですが、OPはヘッダーファイルでこれを解決する方法を尋ねました。そのため、何をどこに置くかについてもう少し説明が必要になる場合があります。繰り返しますが、ようこそ、ここにいてくれてうれしいです!
ティムマローン

2
これは実際にはここで唯一の良い答えであり、より多くの賛成票があったはずです。
ラチョトモフ

2

ブログのインデックスページを取得するには、

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

私のために働いていない、私はブログページpost_idを識別するためにget_option( 'page_for_posts')関数を使用しなければならなかった、私の答えは

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

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

    //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

これは、OPに対する正しい答えを提供しません。これは、「ブログページ」ではなく、単一の投稿にいることを示します。
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
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.