현재 페이지가 블로그 페이지인지 확인


32

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() )적어도 내 의견으로는, 하나의 유스 케이스 는 기본 홈페이지블로그 페이지에 다른 레이아웃 스타일을 가진 테마를 배포하는 경우 입니다.
Giraldi

블로그 아카이브 또는 페이지 선택 여부에 관계없이 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 파일에서 Hooks를 사용하여 위를 연결하여 모든 페이지에 표시되도록 할 수 있습니다.


1
이것은 당신이에있어 여부를 결정하려는 경우 좋은 답변입니다 블로그 페이지가 아닌 neccessarily (블로그 홈 페이지에서와 같이) 블로그 페이지. @Giraldi의 답변을 참조하십시오.
Tim Malone

is_page ()가 존재하기 때문에 is_blog ()가 존재한다고 잘못 가정했습니다. 공식 WordPress 조건부 태그 색인 을 참조하는 것은 나에게 일어나지 않았습니다 . Widget Logic 플러그인을 사용하여이 솔루션을 효과적으로 적용 할 수있었습니다.
Clarus Dignus

11

'블로그 페이지'에 의해 읽기에서 정적 페이지를 게시물 페이지로 설정 한 경우 :

global $wp_query;

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

추신. 이 솔루션은 template_redirect 작업 에서도 작동 합니다.


안녕하세요 repinsa, WPSE에 오신 것을 환영합니다 :) 답변을 추가해 주셔서 감사합니다. 아마도 코드에 구문 오류가 있기 때문에 ( global $wp_query) 뒤에 세미콜론이 누락되어 있지만 질문에 완전히 대답하지 않았기 때문에 약간 투표되었습니다 . 그것은 기능이지만 OP는 헤더 파일에서이를 해결하는 방법을 물었습니다. 따라서 어디에 배치 해야하는지에 대한 약간의 설명이 필요할 수 있습니다. 다시 한번 환영합니다.
Tim Malone

2
그것은 실제로 여기서 유일하게 좋은 대답입니다.
Lacho Tomov

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

이것은 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.