プラグインの設定
プラグインの設定メタ値の許可/拒否リストの定義

メタ値の許可/拒否リストの定義

カスタム投稿、ユーザー、コメント、タクソノミー(タグとカテゴリー)のメタ値を取得するには、対応するタイプから metaValue(単一の値)および metaValues(値の配列)フィールドをクエリします。

  • Post.metaValue
  • Post.metaValues
  • GenericCustomPost.metaValue
  • GenericCustomPost.metaValues
  • User.metaValue
  • User.metaValues
  • Comment.metaValue
  • Comment.metaValues
  • PostTag.metaValue
  • PostTag.metaValues
  • PostCategory.metaValue
  • PostCategory.metaValues
  • GenericTag.metaValue
  • GenericTag.metaValues
  • GenericCategory.metaValue
  • GenericCategory.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つあります:

  1. カスタム: 対応するスキーマ設定内
  2. 一般: 設定ページ内

エンドポイントに適用されるスキーマ設定で、オプション "Use custom configuration" を選択し、目的のエントリを入力します:

スキーマ設定でのエントリの定義

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

設定でのエントリの定義
設定でのエントリの定義

「Allow access」と「Deny access」の2つの動作があります:

  • Allow access: 設定されたエントリのみにアクセスでき、その他にはアクセスできません
  • Deny access: 設定されたエントリにはアクセスできず、その他のすべてのエントリにはアクセスできます
アクセス動作の定義
アクセス動作の定義