首页 > 解决方案 > Wpgraphql-使数据私有

问题描述

我想将数据设为私有(在获取查询时返回 null)。我知道有 graphql_data_is_private 过滤器,但我不知道如何实现我的查询,文档中没有示例。

文档(https://www.wpgraphql.com/filters/graphql_data_is_private/):

apply_filters( 'graphql_data_is_private', bool $is_private, string $model_name, mixed $data, string $visibility, int $owner, WP_User $current_user );

我的查询:

query MyQuery {
  users {
    edges {
      node {
        lastName
      }
    }
  }
}

标签: wordpressgraphql

解决方案


这不是一个查询选项,它是一个 BE 定义,您应该添加一个过滤器(在您的插件或主题代码中)以修改(适应您的需要)标准 BE 行为。此过滤器(钩子)(用于查询对象)用于检查是否应返回数据。

add_filter('graphql_data_is_private', 'add_graphql_private_visibility_filter', 10, 6);

function add_graphql_private_visibility_filter($is_private, $model_name, $data, $visibility, $owner, $current_user)
{
  if ('UserObject' === $model_name) {
    // if( is_your_allowed_data_condition ) return false;
    return true;
  }

  // return not changed for other objects
  return $is_private;
}

推荐阅读