簡體   English   中英

為什么我不能使用 php 將數組項傳遞到我的函數中?

[英]Why can't I pass array item into my function with php?

我的數組中的項目似乎沒有傳遞到我的 '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",

"city": "洛杉磯",

"狀態": "CA",

“郵編”:“99922”

當前所有項目的值為:“失敗”

這是一個回調匿名函數,你不能只改變它的參數。 您可以使用的是“使用”,如此處記錄的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';
                    }
                ] );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM