投稿がカスタム投稿タイプであるかどうかをテストするにはどうすればよいですか?


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')){//作業魔法}閉じ括弧が欠落していました....多くのご挨拶、エセル

これは他の人のために機能しなくなりましたか?私はこれを長年使ってきましたが、突然これは私のために機能しなくなりました。ただし、グローバル$ 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!';
}

これにより、カスタム投稿の名前を知る必要がなくなります。また、後でカスタム投稿の名前を変更しても、コードは機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.