if ( is_single() ) {
// Code here
}
我只想对自定义帖子类型进行代码测试。
#1 楼
在这里,您是:get_post_type()
,然后是if ( 'book' == get_post_type() ) ...
,根据条件标签> Codex中的帖子类型。#2 楼
if ( is_singular( 'book' ) ) {
// conditional content/code
}
当查看自定义帖子类型的帖子:
true
时,上面是book
。自定义帖子类型中的一种:true
或newspaper
。这些和更多条件标签可以在此处查看。
#3 楼
要测试帖子是否为任何自定义帖子类型,请获取所有非内置帖子类型的列表,并测试该帖子类型是否在该列表中。作为功能:
/**
* 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
18年3月21日在13:33
#4 楼
将其添加到您的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')){//工作魔术}结束符不见了……。问候很多,埃塞尔
–user10462
2011年11月21日在14:23
这已经停止为其他人工作了吗?我已经使用了很长时间了,但是突然这对我来说不再起作用。但是,使用不带全局$ wp_query的相同方法始终可以:if('post-type'== get_post_type()){}
– Turtledropbomb
17年1月13日在13:39
is_post_type()已贬值。
– Lisa Cerilli
17年12月21日在12:23
#5 楼
如果由于某种原因您已经可以访问全局变量$ post,则可以简单地使用if ($post->post_type == "your desired post type") {
}
#6 楼
如果要对所有自定义帖子类型使用通配符检查:if( ! is_singular( array('page', 'attachment', 'post') ) ){
// echo 'Imma custom post type!';
}
这样,您无需知道自定义帖子的名称。即使以后更改自定义帖子的名称,该代码也仍然有效。
评论
is_singular()更加紧凑条件标签>单个页面,单个帖子或附件
–稀有
2011年1月11日19:17
@Rarst这仅适用于CPT的单个帖子模板。 get_post_type()是采用更广泛方法的正确方法。 (例如:在搜索页面上)
–amarinediary
12月26日20:40