You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wp-graphql插件环境下WordPress内置get_tags()函数无法正常使用求助

问题排查与修复方案

错误点说明

  • 链接获取函数错误:使用仅适用于分类目录的get_category_link()函数获取标签链接,无法正确返回标签URL,需要替换为标签专属的链接函数。
  • 查询参数逻辑错误:get_tags()的number参数为单次查询返回的条目数,直接传入每页数量即可,现有逻辑$number = $perPage + $offset会导致查询数量随页码增大而递增,既多余又影响性能。
  • 空标签默认过滤:get_tags()默认开启hide_empty配置,会自动过滤无关联文章的标签,若站点存在大量空标签会出现返回结果数量不符合预期的问题。
  • 性能不足:3万+标签的场景下查询全量术语对象会占用额外内存,可指定仅查询ID降低性能消耗。

修复后完整代码

//Get all tag urls for sitemap
add_action('graphql_register_types', function () {
    register_graphql_field('RootQuery', 'getTagUrls', [
        'type' => ['list_of' => 'String'],
        'args' => [
            'pageNo' => [
                'type' => 'int',
            ],
            'perPage' => [
                'type' => 'int',
            ],
        ],
        'description' => __('This function returns tag urls, It takes pageNo and PerPage as optional args.'),
        'resolve' => function ($source, $args, $context, $info) {
            $tagUrls = array();
            $paged = isset($args['pageNo']) ? $args['pageNo'] : 1;
            $perPage = isset($args['perPage']) ? $args['perPage'] : 10;
            $offset = ($paged - 1) * $perPage;
            
            $tagIds = get_tags(array(
                'orderby' => 'name',
                'order' => 'ASC',
                'number' => $perPage,
                'offset' => $offset,
                'hide_empty' => false, // 按需调整,false为返回所有标签包括空标签
                'fields' => 'ids' // 仅查询ID,大幅提升性能
            ));
            
            foreach ($tagIds as $tagId) {
                $fullUrl = esc_url(get_tag_link($tagId));
                $url = str_replace(home_url(), '', $fullUrl);
                $tagUrls[] = $url;
            }
            return $tagUrls;
        },
    ]);
});

验证查询示例

query GetTagPageUrls {
  getTagUrls(pageNo: 1, perPage: 20)
}

内容的提问来源于stack exchange,提问作者Dipankar Maikap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 14:24:04