メタ値の許可/拒否リストの定義
カスタム投稿、ユーザー、コメント、タクソノミー(タグとカテゴリー)のメタ値を取得するには、対応するタイプから metaValue(単一の値)および metaValues(値の配列)フィールドをクエリします。
Post.metaValuePost.metaValuesGenericCustomPost.metaValueGenericCustomPost.metaValuesUser.metaValueUser.metaValuesComment.metaValueComment.metaValuesPostTag.metaValuePostTag.metaValuesPostCategory.metaValuePostCategory.metaValuesGenericTag.metaValueGenericTag.metaValuesGenericCategory.metaValueGenericCategory.metaValues
また、入力フィールド metaQuery を使用して、カスタム投稿、ユーザー、コメント、タクソノミー(タグとカテゴリー)の結果をメタに基づいてフィルタリングすることもできます。
クエリおよびフィルタリングのどちらの場合も、メタ値はパブリックまたはプライベートのいずれかになります。たとえば、ユーザーメタにはプライベートな wp_capabilities エントリが含まれる一方、description はパブリックです。また、last_name はアプリケーションによってパブリックにもプライベートにもなります。
Gato GraphQL プラグインは、どのメタキーがパブリックでどれがプライベートかを強制しません。これは明示的に設定する必要があります。デフォルトでは、許可されたメタキーのリストは空です。
メタ値のレスポンス
対応する設定ページでアクセスが許可されていないメタキーをクエリすると、クエリはエラーを返します。
たとえば、次のクエリを実行した場合:
{
post(by: { id: 1 }) {
id
metaValue(key: "nothingHere")
}
}以下が返されます:
{
"errors": [
{
"message": "There is no meta with key 'nothingHere'",
"extensions": {
"type": "Post",
"id": 1,
"field": "metaValue(key:\"nothingHere\")"
}
}
],
"data": {
"post": {
"id": 1,
"metaValue": null
}
}
}クエリ対象のオブジェクトにメタキーが存在しない場合、またはその値が空の場合、レスポンスは null となります。それ以外の場合、レスポンスはメタ値になります。
許可されたメタキーの設定
これは「Custom Post Meta」モジュールの説明です。Users、Comments、Taxonomies モジュールについても、手順は同様です。
メタフィールド経由でクエリできるメタキーのリストを設定する必要があります。
各エントリは次のいずれかになります:
/または#で囲まれている場合は、正規表現(regex)- それ以外の場合は、完全なメタキー
たとえば、以下のエントリはいずれもメタキー "_edit_last" に一致します:
_edit_last/_edit_.*/#_edit_([a-zA-Z]*)#
この設定を行える場所は、優先順位の順に2つあります:
- カスタム: 対応するスキーマ設定内
- 一般: 設定ページ内
エンドポイントに適用されるスキーマ設定で、オプション "Use custom configuration" を選択し、目的のエントリを入力します:

それ以外の場合、設定の「Schema Custom Post Meta」タブで定義されたエントリが使用されます:

「Allow access」と「Deny access」の2つの動作があります:
- Allow access: 設定されたエントリのみにアクセスでき、その他にはアクセスできません
- Deny access: 設定されたエントリにはアクセスできず、その他のすべてのエントリにはアクセスできます
