dqnek0079 2019-02-14 19:09
浏览 47
已采纳

为什么我的数组项没有传入我的函数foreach PHP for GraphQL?

My items from my array seem to not be passed into the my 'resolve' => function. Right now the function returns fail. If I replace $meta with an array item then it works. Im trying to fetch meta values for GraphQL and dont want to make a function per field.

            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';
                        }
                    ] );
                }
            });

Expected GraphQL output:

"phone": "123-123-1234",

"city": "Los Angeles",

"state": "CA",

"zip": "99922"

currently all items have a value of: "fail"

  • 写回答

1条回答 默认 最新

  • dqj5046 2019-03-17 03:50
    关注

    The problem is your resolve function when trying to pass a variable into the scope of an anonymous function use the use keyword. What you doing in you code is just renaming the the second parameter (which is the arguments array, and in this case its empty) to $meta and passing that to the get_post_meta function array.

    Try refactoring your code to this.

    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 ) use( $meta ) { // Note use( $meta )
                   $GQL_data = get_post_meta( get_the_ID(), $meta, true);
                   return ! empty( $GQL_data  ) ? $GQL_data  : 'fail';
               }
           ] );
    
       }
    } );
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 thinkphp适配人大金仓问题
  • ¥15 有卷积神经网络识别害虫的项目吗
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义