Làm thế nào để kiểm tra nếu một bài viết là một loại bài tùy chỉnh?


103

Tôi đang tìm cách để kiểm tra nếu một bài viết là một loại bài tùy chỉnh. Ví dụ: trong, giả sử, thanh bên tôi có thể đặt mã như thế này:

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

Tôi muốn kiểm tra mã chỉ cho một loại bài tùy chỉnh.

Câu trả lời:



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

Trên đây là truekhi xem một bài đăng của loại bài tùy chỉnh : book.

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

Trên đây là truekhi xem một bài đăng của các loại bài tùy chỉnh: newspaperhoặc book.

Những thẻ này và nhiều điều kiện hơn có thể được xem ở đây .


27

Thêm phần này vào của bạn functions.phpvà bạn có thể có chức năng, bên trong hoặc bên ngoài vòng lặp:

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

Vì vậy, bây giờ bạn có thể sử dụng như sau:

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

Cảm ơn bạn, điều này rất hữu ích! Nhưng nó phải là: if (is_single () && is_post_type ('post_type')) {// ma thuật công việc} Khung đóng cửa bị thiếu .... Nhiều lời chào, Ethel

Điều này đã ngừng làm việc cho bất cứ ai khác? Tôi đã sử dụng nó từ lâu, nhưng đột nhiên nó ngừng hoạt động với tôi. Tuy nhiên, sử dụng cùng một phương thức mà không có toàn cầu $ wp_query luôn hoạt động:if ( 'post-type' == get_post_type() ) {}
turtledropbomb

is_post_type () bị khấu hao.
Lisa Cerilli

23

Để kiểm tra xem một bài đăng có phải là bất kỳ loại bài đăng tùy chỉnh nào không , hãy tìm nạp danh sách tất cả các loại bài đăng không tích hợp và kiểm tra xem loại bài đăng đó có trong danh sách đó không.

Là một chức năng:

/**
 * 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 );
}

Sử dụng:

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

Đây phải là câu trả lời được chấp nhận.
aalaap

10

Nếu vì bất kỳ lý do nào bạn đã có quyền truy cập vào biến toàn cầu $ post, bạn chỉ cần sử dụng

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

5

Nếu bạn muốn kiểm tra thẻ hoang dã cho tất cả các loại bài đăng tùy chỉnh của bạn:

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

Bằng cách này, bạn không cần biết tên bài đăng tùy chỉnh của mình. Ngoài ra mã vẫn hoạt động ngay cả khi bạn thay đổi tên của bài đăng tùy chỉnh của bạn sau này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.