【发布时间】:2019-04-10 15:53:17
【问题描述】:
我在 Wordpress 中使用 GraphQL 作为 API 和这个插件:https://docs.wpgraphql.com/getting-started/custom-fields-and-meta 我创建了自定义字段,我想将 where 子句用于布尔属性,但我得到了所有记录,即使是那些与我的 where 子句不匹配的记录
我的查询如下所示:
query pagesInMenu {
pages(where: { menu: true }) {
edges {
node {
id
menu
title
}
}
}
}
我得到 menu = false 和 menu = true 的记录... 它是通过下面的 PHP 代码添加的自定义字段:
function registerMenu($type) {
register_graphql_field( $type, 'menu', [
'type' => 'Boolean',
'description' => __( 'Is in menu?', 'wp-graphql' ),
'resolve' => function( $post ) {
$menu = get_post_meta( $post->ID, 'menu', true );
return ! empty( $menu ) ? ($menu == "true") : false;
}
] );
}
add_action( 'graphql_register_types', registerMenu('Page') );
add_action( 'graphql_register_types', registerMenu('RootQueryToPageConnectionWhereArgs') );
【问题讨论】:
-
我会尝试
filter_var(...)而不是那种比较;那是return filter_var($menu, FILTER_VALIDATE_BOOLEAN); -
@MiroHudak 我按照您推荐的 PHP 代码进行了更改,现在我仍然得到所有记录,但菜单:false 到处都是,我在这个问题上很新,我尝试了一些更改返回语句但没有到目前为止的运气。 :(
-
@KryštofKošut 你解决过这个问题吗?我今晚遇到了同样的问题。
标签: php graphql where-clause wp-graphql