投稿がカスタム投稿タイプかどうかをテストする方法を探しています。例えば、例えば、私はこのようなコードを入れることができるサイドバーで:
if ( is_single() ) {
// Code here
}
カスタム投稿タイプ専用のコードテストが必要です。
get_post_type()
そしてif ( 'book' == get_post_type() ) ...
/ 条件付きタグ>投稿タイプ Codexで。
if ( is_singular( 'book' ) ) {
// conditional content/code
}
カスタム投稿タイプtrue
の投稿を表示すると、上記はbook
です。
if ( is_singular( array( 'newspaper', 'book' ) ) ) {
// conditional content/code
}
カスタム投稿タイプの投稿を表示する場合、上記はtrue
です:newspaper
またはbook
。
これらの条件付きタグ ここで見ることができます 。
これを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
}
投稿が any カスタム投稿タイプであるかどうかをテストするには、組み込みの投稿タイプではないすべてのリストを取得し、その投稿のタイプがそのリストにあるかどうかをテストします。
機能として:
/**
* 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!';
何らかの理由でグローバル変数$ postにすでにアクセスしている場合は、単純に次のようにします。
if ($post->post_type == "your desired post type") {
}
すべてのカスタム投稿タイプをワイルドカードでチェックしたい場合は、
if( ! is_singular( array('page', 'attachment', 'post') ) ){
// echo 'Imma custom post type!';
}
これにより、カスタム投稿の名前を知る必要がなくなります。後でカスタム投稿の名前を変更しても、コードは機能します。