从文档中:
根据
JetPack JSON API docs:
默认情况下,API中允许所有元数据密钥,只要它们不是受保护的密钥。默认情况下,以\\u1开头的任何元数据键都受保护。但是,用户可以使用edit\\u post\\u meta(用于编辑和查看)、add\\u post\\u meta和delete\\u post\\u meta功能访问和编辑受保护的元数据密钥,这些功能适用于每个操作。我们还添加了一个过滤器rest\\u api\\u allowed\\u public\\u元数据,允许您专门将任何用户访问的某些元数据密钥列为白名单,即使该密钥受到保护。
所以rest_api_allowed_public_metadata
过滤器是您正在寻找的。
源代码:
如果您查看JetPack的源代码,您将发现以下部分:
function is_metadata_public( $key ) {
if ( empty( $key ) )
return false;
// whitelist of post types that can be accessed
if ( in_array( $key, apply_filters( \'rest_api_allowed_public_metadata\', array() ) ) )
return true;
return false;
}
在文件中
class.json-api-endpoints.php
.
您还可以查看allow_bbpress_public_metadata()
作用here 了解如何实现此功能rest_api_allowed_public_metadata
滤器
示例:
下面是一个类似的示例:
/**
* Whitelist protected meta keys
*
* @param array $allowed_meta_keys
* @return array $allowed_meta_keys
*/
function custom_rest_api_allowed_public_metadata( $allowed_meta_keys )
{
// only run for REST API requests
if ( ! defined( \'REST_API_REQUEST\' ) || ! REST_API_REQUEST )
return $allowed_meta_keys;
$allowed_meta_keys[] = \'_ecmb_supporting_bands\';
$allowed_meta_keys[] = \'_ecmb_tickets_avail\';
$allowed_meta_keys[] = \'_ecmb_event_agelim\';
return $allowed_meta_keys;
}
add_filter( \'rest_api_allowed_public_metadata\', \'custom_rest_api_allowed_public_metadata\' );
JSON输出与此类似:
"metadata":[{"id":"196711","key":"_ecmb_event_agelim","value":"18"},
{"id":"196709","key":"_ecmb_supporting_bands","value":"The Rolling Stones"},
{"id":"196710","key":"_ecmb_tickets_avail","value":"5500"}]