[英]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.