게시물이 맞춤 게시물 유형인지 어떻게 테스트합니까?


103

게시물이 사용자 정의 게시물 유형인지 테스트하는 방법을 찾고 있습니다. 예를 들어 사이드 바에서 다음과 같은 코드를 넣을 수 있습니다.

 if ( is_single() ) {
     // Code here
 }

맞춤 게시물 유형에 대해서만 코드 테스트를 원합니다.

답변:



166
if ( is_singular( 'book' ) ) {
    // conditional content/code
}

위는 true맞춤 게시물 유형의 게시물을 볼 때 book입니다.

if ( is_singular( array( 'newspaper', 'book' ) ) ) {
    //  conditional content/code
}

위는 true맞춤 게시물 유형의 게시물을 볼 때입니다 : newspaper또는 book.

이러한 조건부 태그 는 여기에서 볼 수 있습니다 .


27

이것을에 추가 functions.php하면 루프 내부 또는 외부에서 기능을 사용할 수 있습니다.

function is_post_type($type){
    global $wp_query;
    if($type == get_post_type($wp_query->post->ID)) 
        return true;
    return false;
}

이제 다음을 사용할 수 있습니다.

if (is_single() && is_post_type('post_type')){
    // Work magic
}

고마워요, 이것은 매우 유용합니다! 그러나 다음과 같아야합니다. if (is_single () && is_post_type ( 'post_type')) {// work magic} 닫는 괄호가 없습니다 .... 많은 인사, Ethel

다른 사람을 위해 작동이 중지 되었습니까? 나는 이것을 오랫동안 사용했지만 갑자기 이것은 나를 위해 작동을 멈췄습니다. 그러나 전역 $ wp_query 없이 동일한 방법 사용하면 항상 작동합니다.if ( 'post-type' == get_post_type() ) {}
turtledropbomb

is_post_type ()은 감가 상각됩니다.
Lisa Cerilli

23

게시물 인 경우 테스트하려면 어떤 게시물의 유형이 목록에있는 경우 사용자 정의 포스트 유형, 모든되지 내장 된 포스트 유형 및 테스트의 목록을 가져옵니다.

기능으로서 :

/**
 * Check if a post is a custom post type.
 * @param  mixed $post Post object or ID
 * @return boolean
 */
function is_custom_post_type( $post = NULL )
{
    $all_custom_post_types = get_post_types( array ( '_builtin' => FALSE ) );

    // there are no custom post types
    if ( empty ( $all_custom_post_types ) )
        return FALSE;

    $custom_types      = array_keys( $all_custom_post_types );
    $current_post_type = get_post_type( $post );

    // could not detect current type
    if ( ! $current_post_type )
        return FALSE;

    return in_array( $current_post_type, $custom_types );
}

용법:

if ( is_custom_post_type() )
    print 'This is a custom post type!';

이것이 정답입니다.
aalaap

10

어떤 이유로 든 이미 글로벌 변수 $ post에 액세스 할 수 있다면 간단히 사용할 수 있습니다

if ($post->post_type == "your desired post type") {
}

5

와일드 카드를 원하는 경우 모든 사용자 정의 게시물 유형을 확인하십시오.

if( ! is_singular( array('page', 'attachment', 'post') ) ){
    // echo 'Imma custom post type!';
}

이렇게하면 맞춤 게시물의 이름을 알 필요가 없습니다. 나중에 맞춤 게시물의 이름을 변경하더라도 코드는 계속 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.