#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 , как и любой пользовательский код?