Вопрос или проблема
(Обновление: До версии WordPress 6.3 синхронизированные шаблоны назывались “многоразовыми блоками”. Я использовал “многоразовые блоки” в вопросе и ответе, но вопрос и ответ все еще применимы).
У меня есть настраиваемый тип записи, и я хочу, чтобы пользовательская роль (я назвал её subscriber_modified) (на основе подписчика) также имела возможность просматривать и добавлять многоразовые блоки при редактировании содержимого настраиваемого типа записи.
Пользователи с ролью subscriber_modified могут редактировать настраиваемые типы записей (вставлять новые блоки, добавлять текст и т.д.), как я и предполагал, но пользователи не могут иметь доступ к многоразовым блокам.
[Я пробовал добавлять многоразовые блоки в шаблон настраиваемой записи][1], чтобы многоразовый блок автоматически загружался, когда пользователь subscriber_modified создает новую настраиваемую запись. Многоразовый блок не отображается; вместо него отображается сообщение “этот блок был удалён или недоступен” для пользователя subscriber_modified. Когда администратор создает или редактирует настраиваемую запись, содержание многоразового блока отображается, как предполагалось. Многоразовый блок также не находится, когда пользователь subscriber_modified ищет блок в списке блоков; многоразовый блок отображается в списке доступных блоков.
Официальная страница о ролях и возможностях на поддержке WordPress упоминает “читать многоразовые блоки”, но конкретная возможность не указывается.
Я уже проверил, и эта пользовательская роль уже имеет следующие возможности (и это все доступные возможности, содержащие “block” в них согласно плагину members):
publish_blocks
read_private_blocks
delete_blocks
delete_private_blocks
edit_private_blocks
Правка: Я также предположил и добавил возможность “read_reusable_blocks” к этой пользовательской роли; это не повлияло; пользователь все еще не может просматривать многоразовый блок. [1]: https://wordpress.stackexchange.com/a/327967/48698
На данный момент нет специальной пользовательской возможности для чтения многоразового блока; невозможно настроить возможности (чтение, редактирование, удаление) исключительно для многоразовых блоков.
Возможности в настоящее время связаны с возможностями типа записи ‘post’, так что возможности, которые вы даете типу записи ‘post’, также будут использоваться для многоразовых блоков.
Ответ или решение
Вопрос о возможности пользователя читать синхронизированный паттерн внутри публикации поднимает множество нюансов, связанных с механизмом работы WordPress, особенно учитывая изменения, которые произошли начиная с версии 6.3. Сначала хотелось бы объяснить теоретическую часть вопроса.
### Теория
В предыдущих версиях WordPress до 6.3 “синхронизированные паттерны” назывались “многократно используемые блоки” или “reusable blocks”. Эти элементы позволяли пользователям создавать блоки контента, которые можно повторно использовать в нескольких публикациях или страницах. Важное их свойство — возможность изменения содержимого блока, что автоматически отражается во всех местах, где блок используется. Это полезная функциональность для поддержания консистентного контента на веб-сайте.
После обновления, терминология изменилась, но сами элементы сохранили свою функциональность. В случае с WordPress, права доступа к разным элементам зависят от ролей пользователей. Например, стандартная роль «подписчик» имеет минимум прав для взаимодействия с контентом сайта.
### Пример
Предположим, что вы создали пользовательский тип записи и желаете, чтобы пользовательская роль (названа вами как subscriber_modified — модифицированный подписчик) также имела возможность видеть и добавлять многократно используемые блоки при редактировании содержимого пользовательского типа записи. Однако пользователи с ролью subscriber_modified могут редактировать пользовательские типы записей (вставлять новые блоки, добавлять текст и т.д.) как вы и предполагали, но не могут получать доступ к многократно используемым блокам.
Вы также сообщили, что пытались интегрировать многократно используемые блоки в шаблон пользовательской записи, так чтобы при создании новой записи пользователь subscriber_modified мог бы увидеть уже загруженный блок. Однако вместо этого отображалось сообщение о том, что блок был удален или недоступен.
### Применение
Как показывает официальная документация WordPress, в том числе и страница о ролях и возможностях пользователей, возможности доступа к многократно используемым блокам, к сожалению, не могут быть настроены независимо от возможностей стандартного типа записи ‘post’. Соответственно, доступ к синхронизированным паттернам зависит от прав на работу с записями.
Для решения описанной проблемы вам потребуется модифицировать права доступа для типа записи ‘post’, чтобы они также применялись и к многократно используемым блокам. Вы можете использовать сторонние плагины или кастомные коды, чтобы включить необходимые возможности, например, ‘edit_posts’, ‘publish_posts’ и другие.
Также стоит отметить, что изменение ролей и прав доступа является довольно тонким процессом и изменения должны быть тщательно протестированы, чтобы избежать нарушения функциональности сайта.
На основе вышеописанного подхода, взаимосвязь между ролями пользователей и возможностями работы с многократно используемыми блоками может быть реализована только через настройку прав для стандартного типа записи. В отсутствие конкретной возможности как «read_reusable_blocks», которая могла бы управлять доступом непосредственно к ресурсам многократно используемых блоков, данный подход может оказаться наилучшим возможным решением.