Почему я не могу передать элемент массива в мою функцию с помощью php? - PullRequest
0 голосов
/ 16 февраля 2019

Кажется, что мои элементы из моего массива не передаются в функцию my 'resol' =>.Прямо сейчас функция возвращает ошибку.Если я заменю $ 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:

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

"city": "Los Angeles",

"state": "CA",

"zip": "99922"

в настоящее время все элементыимеют значение: «fail»

1 Ответ

0 голосов
/ 16 февраля 2019

Это анонимная функция обратного вызова, вы не можете просто изменить ее параметры.То, что вы можете использовать, это «использовать», как описано здесь 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';
                    }
                ] );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...