WordPress开发笔记

WordPress判断文章类型post_type是否为自定义?

在WordPress的single.php中,可以通过检查post type对象的_builtin属性来判断当前文章是系统默认还是自定义类型。以下是实现步骤:

步骤说明

  1. 获取当前文章的post type:使用get_post_type()函数。
  2. 获取post type对象:通过get_post_type_object()函数。
  3. 检查_builtin属性:若为true则为系统默认,否则为自定义。

示例代码

<?php
// 获取当前文章的post type
$zzw_post_type = get_post_type();

// 获取post type对象
$zzw_post_type_obj = get_post_type_object( $zzw_post_type );

if ( $zzw_post_type_obj ) {
    if ( $zzw_post_type_obj->_builtin ) {
        //echo '当前文章类型为系统默认:' . $zzw_post_type;
    } else {
        //echo '当前文章类型为自定义:' . $zzw_post_type;
    }
} else {
    //echo '无效的文章类型。';
}
?>

代码解释

  • get_post_type():获取当前文章的类型名称(如postpage或自定义类型)。
  • get_post_type_object():返回包含该类型详细信息的对象,其中系统默认类型的_builtin属性为true
  • 检查对象有效性:确保获取到有效的post type对象,避免错误。

注意事项

  • 内置默认类型包括postpageattachment等,其_builtin属性由WordPress自动设置。
  • 自定义类型通过register_post_type()注册时,若未指定_builtin参数,默认为false

这种方法准确可靠,无需维护默认类型列表,直接利用WordPress内部属性判断。