Як перевірити, чи публікація є користувацьким типом публікації?


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
}

Дякую, це дуже корисно! Але має бути: якщо (is_single () && is_post_type ('post_type')) {// робоча магія} Відсутня дужка закриття .... Багато привітань, Ethel

Це перестало працювати для когось іншого? Я використовував це протягом століть, але раптом це перестало працювати для мене. Однак використання того самого методу без глобального $ wp_query завжди працює:if ( 'post-type' == get_post_type() ) {}
turtledropbomb

is_post_type () амортизується.
Ліза Черіллі

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!';
}

Таким чином, вам не потрібно знати назву власної публікації. Також код все ще працює, навіть якщо пізніше ви зміните ім’я свого спеціального допису.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.