为什么我无法使用php将数组项传递到函数中?

时间:2019-02-16 04:21:17

标签: php wordpress

我数组中的项目似乎未传递到我的'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”

当前所有项目的值为:“失败”

1 个答案:

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