Отображение черновиков и ожидающих сообщений с помощью WpGraphQL

Я использую плагин wpgraphql. По большей части он работает. Однако я могу запрашивать только сообщения со статусомpublished. Посты со статусомpending или draft не появляйся.

Другими словами, вот мой вопрос:

query MyQuery {
  newsArticles {
    nodes {
      title
    }
  }
}

Если я установлю статус своих статей на pending или draft, то ничего не появляется. Если я установлю их наpublished тогда они действительно появляются.

Обратите внимание: это не имеет значения, если я попробую другой тип сообщения (например, posts) или запрос использует edges, как это:

query MyQuery {
  newsArticles {
    edges {
      node {
        title
      }
    }
  }
}

Результаты такие же.

Итак, есть идеи, как вернуть результаты независимо от статуса?

Спасибо.

0 ответов

WPGraphQL по умолчанию позволяет запрашивать только общедоступные сообщения, потому что именно так работает WordPress, т. Е. Пользователям видны только общедоступные сообщения.

Первые несколько шагов - добавить аутентификацию поверх нашего graphql запросы, чтобы можно было делать запросы к закрытым сообщениям.

  1. Загрузите это - https://github.com/wp-graphql/wp-graphql-jwt-authentication плагин WordPress либо путем клонирования репо в plugins каталог или загрузив zip-файл через WordPress.

  2. После вышеуказанного шага вы должны увидеть плагин в разделе плагинов. Не активируйте плагин сейчас.

  3. Добавить define('GRAPHQL_JWT_AUTH_SECRET_KEY', 'secret_token'); на ваш wp-config.php файл, который присутствует в /var/www/htmlпапка. Этот секретный ключ используется плагином для генерации токенов для доступа к закрытым сообщениям. Убедитесь, что секретный токен представляет собой произвольную длинную строку, которая должна быть доступна только для сервера WordPress.

  4. Активируйте плагин и запросите следующее

mutation LoginUser {
  login( input: {
    clientMutationId: "uniqueId",
    username: "your_login",
    password: "your password"
  } ) {
    authToken
    user {
      id
      name
    }
  }
}

Вы получите токен, который вы можете использовать из своего кода для запроса непубличных сообщений.

После того, как описанные выше шаги будут выполнены, остается единственное, как использовать токен и получать закрытые сообщения в вашем коде.

  1. Добавить SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 в вашем .htaccess файл, который присутствует в /var/www/htmlкаталог. Если вы не обновили .htaccessраньше, после обновления он должен выглядеть, как показано ниже. Это позволяет Authorizationзаголовок входящего запроса на сервере WordPress. Мы будем использовать Authorization заголовок для отправки аутентифицированного токена.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
  1. Как только вышеуказанный шаг будет выполнен, вы сможете отправить Authorization заголовок и получать непубличные сообщения
Authorization: Bearer ${your_token}

Заменить ${your_token} с вашим фактическим токеном, и теперь вы сможете запрашивать непубличные сообщения.

Другие вопросы по тегам