我数组中的项目似乎未传递到我的'resolve'=>函数中。现在函数返回失败。如果我将$ meta替换为数组项,则它可以工作。我试图获取GraphQL的元值,并且不想在每个字段中创建一个函数。
add_action( 'graphql_register_types', function() {
$metas = array('phone', 'city', 'state', 'zip');
foreach($metas as $meta){
register_graphql_field( 'Location', $meta, [
'type' => 'String',
'description' => __( 'The post data', 'wp-graphql' ),
'resolve' => function($post, $meta) {
$GQL_data = get_post_meta( get_the_ID(), $meta, true);
return ! empty( $GQL_data ) ? $GQL_data : 'fail';
}
] );
}
});
预期的GraphQL输出:
“电话”:“ 123-123-1234”,
“城市”:“洛杉矶”,
“州”:“ CA”,
“ zip”:“ 99922”
当前所有项目的值为:“失败”
答案 0 :(得分:0)
这是一个回调匿名函数,您不能只更改其参数。您可以使用的是“使用”,如此处https://secure.php.net/manual/en/functions.anonymous.php
中所述register_graphql_field( 'Location', $meta, [
'type' => 'String',
'description' => __( 'The post data', 'wp-graphql' ),
'resolve' => function($post) use ($meta) {
$GQL_data = get_post_meta( get_the_ID(), $meta, true);
return ! empty( $GQL_data ) ? $GQL_data : 'fail';
}
] );