pc wx

扫码关注“沃之涛科技”安全登录

扫码登录 微信内打开可长按扫码一键登录

登录即表示同意服务协议条款

我已确认并阅读 服务协议条款

如果您丢失了所有信息,可联系管理员QQ:1500351892。

添加域名
确定删除该域名吗?
该操作无法复原
用户头像

用户

ID: 剩余积分:

无赠送
100积分
100
赠100积分
500积分
500
赠400积分
1000积分
1000
赠1300积分
2000积分
2000
赠7000积分
5000积分
5000
注意事项

积分仅限于AI文章写作也可以用于WordPress下的SEO合集插件“智能改写”“词库挖掘”“关键词排名监控”“AI智能DK”功能使用;

充值仅用于消费,不可变更,退款,提现,请慎重选择!

支付宝
微信
购买积分: 100
赠送积分: 0
应付金额: ¥100

用户邮箱

验证码

点此继续访问
邮箱不存在
确定删除吗?
该操作无法复原
分类编辑
序号
分类名称
操作
{{item.index}}

暂无数据

{{item.index}}.
暂无数据
行业资讯
右圆圈
左圆圈
大圆圈
左边大圆圈
圆圈
圆圈

适配多主题多插件:get_post_types 与 get_object_taxonomies 核心兼容方案

发布日期:2025-11-12 15:43:46

WordPress 开发中,灵活驾驭内容结构是打造个性化站点的关键。get_post_types get_object_taxonomies 这两个核心函数,是开发者探索和操控 WordPress 内容模型的 “钥匙”。它们分别负责获取文章类型和分类法的信息,是实现动态内容展示、自定义交互的基石。本文将从函数定义、参数解析、实战示例等维度,全面剖析这两个函数的功能与应用。

一、get_post_types:探索 WordPress 的文章类型体系

函数定义与核心作用

get_post_types WordPress 内置函数,用于检索当前站点中已注册的所有文章类型(包括 WordPress 内置的 postpageattachment,以及开发者自定义的文章类型如 productevent 等)。它能帮助开发者动态获取文章类型列表,为内容的条件判断、界面渲染提供数据支撑。

函数语法与参数解析

get_post_types( $args = array(), $output = 'names', $operator = 'and' );

$args(数组,可选):用于筛选文章类型的参数,支持 WordPress 注册文章类型时的所有参数(如 publichierarchicalshow_ui 等)。

$output(字符串,可选):控制返回结果的格式,可选值为 'names'(返回文章类型的 slug 数组)、'objects'(返回 WP_Post_Type 对象数组)。

$operator(字符串,可选):定义 $args 中多参数的逻辑关系,'and' 表示 “且”,'or' 表示 “或”。

实战示例:灵活筛选文章类型

示例 1:获取所有公开的文章类型

$public_post_types = get_post_types( array( 'public' => true ), 'names' );

if ( $public_post_types ) {

    echo '

本站公开的文章类型:

';

 

    echo '

  • ';

 

    foreach ( $public_post_types as $post_type ) {

        echo '

  • ' . $post_type . '
  • ';

 

    }

    echo '

';

 

}

此示例中,array( 'public' => true ) 筛选出所有允许前台访问的文章类型,'names' 确保返回的是 slug 列表,常用于生成内容导航或筛选器。

示例 2:获取所有自定义文章类型(排除内置类型)

$custom_post_types = get_post_types(

    array(

        'public' => true,

        '_builtin' => false // 排除内置文章类型

    ),

    'objects'

);

 

if ( $custom_post_types ) {

    echo '

自定义文章类型详情:

';

 

    foreach ( $custom_post_types as $post_type ) {

        echo '

';

 

        echo '

' . $post_type->label . '' . $post_type->name . '

';

 

        echo '

描述:' . ( $post_type->description ?: '' ) . '

';

 

        echo '

';

 

    }

}

通过 '_builtin' => false 筛选,仅返回开发者自定义的文章类型,并以 'objects' 格式获取,可直接访问 WP_Post_Type 对象的属性(如 labeldescription),便于展示更丰富的信息。

二、get_object_taxonomies:揭秘文章类型与分类法的关联

函数定义与核心作用

get_object_taxonomies 用于获取某个文章类型或具体对象所关联的所有分类法(Taxonomy)。无论是 WordPress 内置的 categorypost_tag,还是开发者自定义的分类法(如 product_catevent_type),都可通过该函数动态获取,是实现内容分类筛选、归档页定制的核心工具。

函数语法与参数解析

get_object_taxonomies( $object, $output = 'names' );

$object(字符串 / 对象,必填):可以是文章类型的 slug(如 'post''product'),也可以是具体的文章对象(如 WP_Post 实例)。

$output(字符串,可选):控制返回结果的格式,'names' 返回分类法的 slug 数组,'objects' 返回 WP_Taxonomy 对象数组。

实战示例:分类法的动态获取与应用

示例 1:获取特定文章类型的所有分类法

$post_type = 'product'; // 假设是 WooCommerce 产品类型

$taxonomies = get_object_taxonomies( $post_type, 'objects' );

 

if ( $taxonomies ) {

    echo '

' . $post_type . ' 关联的分类法:

';

 

    foreach ( $taxonomies as $taxonomy ) {

        echo '

';

 

        echo '

' . $taxonomy->label . '' . $taxonomy->name . '

';

 

        echo '

层级:' . ( $taxonomy->hierarchical ? '' : '' ) . '

';

 

        echo '

';

 

    }

}

此示例针对 'product' 文章类型,以 'objects' 格式获取关联分类法,可直接访问 WP_Taxonomy 对象的 labelhierarchical 等属性,用于展示分类法的基本信息或生成分类筛选组件。

示例 2:获取单篇文章的所有分类法(含分类项)

$post_id = 123; // 目标文章ID

$post = get_post( $post_id );

if ( $post ) {

    $taxonomies = get_object_taxonomies( $post, 'objects' );

    

    echo '

文章 #' . $post_id . ' 的分类信息:

';

 

    foreach ( $taxonomies as $taxonomy ) {

        $terms = get_the_terms( $post_id, $taxonomy->name );

        if ( $terms && ! is_wp_error( $terms ) ) {

            echo '

';

 

            echo '

' . $taxonomy->label . '

';

 

            echo '

  • ';

 

            foreach ( $terms as $term ) {

                echo '

 

            }

            echo '

';

 

            echo '

';

 

        }

    }

}

这里将 $post 对象传入函数,获取该文章关联的所有分类法,再通过 get_the_terms() 获取每个分类法下的具体分类项(如文章所属的 “分类” 和 “标签”),最终生成带链接的分类项列表,常用于文章详情页的分类展示。

三、两者的联动:构建动态内容生态

在实际开发中,get_post_types get_object_taxonomies 常配合使用,实现更复杂的业务逻辑。例如,为每个自定义文章类型自动生成分类筛选器:

// 步骤1:获取所有自定义文章类型

$custom_post_types = get_post_types(

    array(

        'public' => true,

        '_builtin' => false

    ),

    'objects'

);

 

// 步骤2:为每个文章类型生成分类筛选区域

if ( $custom_post_types ) {

    foreach ( $custom_post_types as $post_type ) {

        $taxonomies = get_object_taxonomies( $post_type->name, 'objects' );

        

        echo '

';

 

        echo '

' . $post_type->label . ' 筛选:

';

 

        foreach ( $taxonomies as $taxonomy ) {

            echo '

';

 

            echo '';

            // 此处可调用 wp_dropdown_categories 生成下拉筛选框

            wp_dropdown_categories( array(

                'taxonomy' => $taxonomy->name,

                'show_option_all' => '全部' . $taxonomy->label,

            ) );

            echo '

';

 

        }

        echo '

';

 

    }

}

这段代码先通过 get_post_types 拿到所有自定义文章类型,再对每个类型调用 get_object_taxonomies 获取其关联分类法,最终为每个分类法生成下拉筛选框,实现了 “文章类型 - 分类法 - 分类项” 的动态筛选体系。

四、总结:从内容结构到用户体验的桥梁

get_post_types get_object_taxonomies WordPress 内容模型的 “透视镜”。前者让开发者能全局掌控站点的文章类型体系,后者则聚焦于文章类型与分类法的关联关系。它们的组合应用,为动态导航生成、智能内容筛选、个性化归档页等功能提供了底层支持。

在实际开发中,掌握这两个函数的参数细节与返回格式,能帮助开发者摆脱硬编码的局限,打造更灵活、更具扩展性的 WordPress 站点。无论是电商插件中的产品类型与分类管理,还是企业站的多类型内容聚合,它们都是连接内容结构与用户体验的关键纽带。


营业执照
seo合集软著
WordPress积木主题软著
报价
交流
微信二维码
kelerk
图片