Я не могу получить обычный текст с безголовым WordPress и Graphql

#reactjs #wordpress #graphql #graphiql

#reactjs #wordpress ( wordpress ) #graphql ( графический sql ) #graphiql #wordpress #graphql

Вопрос:

Я создаю интерфейс с React. Я использую безголовый WordPress, графический SQL и WooCommerce. Теперь я создал несколько продуктов с кратким описанием. Но когда я извлекаю эти продукты, я получаю описание в виде строки в формате HTML. Картинка

С помощью playground в WordPress я могу добавить атрибут format к короткому описанию: это выглядит так: WordPress Playground

Хорошо, это работает на игровой площадке. Мой вывод — простой / необработанный текст без HTML-тегов. Когда я копирую этот запрос и выполняю его с помощью react, мой результат равен «null». После удаления атрибута format в запросе в React я получаю выходные данные, но снова в HTML-тегах.

Комментарии:

1. не связывайте внешние изображения … скорее всего, с правами пользователя (администратор graphiql, не вошедший в react)

2. @xadm Я пробовал это с полными правами, проблема не в этом 🙁

3. вы уверены? viewer запрашивается тип / свойства?

4. @xadm Ну, с авторизацией токена на предъявителя это работает, спасибо. :). Вы знаете, как я могу получить доступ к этим данным с каждым пользователем?

Ответ №1:

wpgraphql использует общие возможности пользователя WP для управления видимостью типов и свойств.

Не все значения, видимые в graphiql (встроенные в область администратора), общедоступны. Общедоступная страница, отображающая контент, работает с незарегистрированными правами пользователя, в то время как graphiql работает с возможностями администратора. Raact / apollo должен, по крайней мере, включать учетные данные (для cookie) или использовать токен — для зарегистрированных пользователей.

AFAICR для общедоступного контента вы можете перезаписать admin's private флаг, используя фильтр ‘graphql_data_is_private’. Это выглядит как:

 function add_graphql_private_visibility_filter($is_private, $model_name, $data, $visibility, $owner, $current_user)
{
  // start with UNSAFE 'return false;' here, then make more granular checks
  if ('PostObject' === $model_name) {
    // if ('CPT' === $data->post_type) {
        if(.....
          ...
            return false;
  ...
  return $is_private;
  
 add_filter('graphql_data_is_private', add_graphql_private_visibility_filter', 10, 6);
  

Комментарии:

1. Где я должен добавить эту функцию?

2. функции / плагин / Ваша тема / functions , как и любой пользовательский код?