Gatsby:在自定义帖子类型上使用 GraphQL 查询和自定义分类
Posted
技术标签:
【中文标题】Gatsby:在自定义帖子类型上使用 GraphQL 查询和自定义分类【英文标题】:Gatsby: Using GraphQL Query on Custom Post Type with Custom Taxonomy 【发布时间】:2019-09-23 04:33:14 【问题描述】:我正在使用 Gatsby 为 WordPress 提供前端并使用 GraphQL 查询数据。
我有一个包含自定义帖子类型和自定义分类的帖子。
但是当我在CPT上查询时,我可以得到Custom Taxonomy的编号,但不知道如何检索相应的名称。
以下是我的查询;
wordpressWpPortfolio
title
slug
id
portfolio_categories
这就是返回的内容;
"data":
"wordpressWpPortfolio":
"title": "Test Portfolio 1",
"slug": "test-portfolio-1",
"id": "5caf7182-c9f5-53d9-94da-b49cfbdc6d7f",
"portfolio_categories": [
5
]
但是,我无法在 GraphQL 游乐场中选择其他字段。
以下是我的预期结果;
"data":
"wordpressWpPortfolio":
"title": "Test Portfolio 1",
"slug": "test-portfolio-1",
"id": "5caf7182-c9f5-53d9-94da-b49cfbdc6d7f",
"portfolio_categories": [
"id":5,
"name":"portfolio category name"
]
有没有办法“加入”其余的端点?
我做错了什么,我该如何解决?
【问题讨论】:
这可以在 WP 中用 register_graphql_connection( $config ) 修改吗? 【参考方案1】:您正在寻找的是自定义规范器。
gatsby-source-wordpress
页面上有一个很好的示例,与您想要实现的目标非常相似。
或者,您可能希望修改您的 CPT REST API 以使用 register_rest_api()
方法返回字段的类别 ID 和 name,前提是您对 WordPress 感到满意发展。
类似这样的:
register_rest_field(
// Custom Post Type name
'portfolio',
// Name of field being added to your REST API response (portfolio_categories)
'portfolio_categories',
array(
'get_callback' => function( $data )
$category_terms = wp_get_post_terms(
$data['id'],
'portfolio_categories'
);
$portfolio_categories = array();
foreach( $category_terms as $term )
$portfolio_category_obj = new StdClass();
$portfolio_category_obj->ID = $term->ID;
$portfolio_category_obj->name = $term->name;
array_push(
$portfolio_categories,
$portfolio_category_obj
);
return $portfolio_categories;
,
)
);
这将在您的 REST API 中添加一个名为 portfolio_categories
的额外字段,该字段返回一个数组,以便您可以按预期使用 GraphQL。
之后记得运行gatsby develop
来启动/重启你的开发服务器。
【讨论】:
【参考方案2】:您需要在查询中包含姓名:
wordpressWpPortfolio
title
slug
id
portfolio_categories
id
name
【讨论】:
谢谢我试过了,但只返回一个整数... "message": "Field \"portfolio_categories\" must not have a selection because type \"[Int]\" has no subfields .", 没有解析器,这就是 Wordpress RestAPI 开箱即用的方式,所以我需要在 Wordpress CPT UI(或函数)中进行修改或做其他事情以上是关于Gatsby:在自定义帖子类型上使用 GraphQL 查询和自定义分类的主要内容,如果未能解决你的问题,请参考以下文章
如何在自定义帖子类型上使用Woocommerce的二级图像上传Metabox?
Wordpress - 特色图像元框未显示在自定义帖子类型上
php 在自定义帖子类型存档和一些自定义分类存档上强制命令到`menu_order`