Intereting Posts
Как исправить «Вы не можете редактировать этот элемент?» Для администраторов в существующих сообщениях? Как добавить изображения, загруженные в сообщение, в настраиваемое поле по умолчанию Проблема с изображением Parallax Можно ли интегрировать WordPress * сообщения * и социальные медиа (Facebook, Google+, Twitter)? Найти размер страницы из WordPress Сайт WordPress, отображающий 404 для любой страницы, кроме индекса Переадресовать категорию в первый доступный пост для детей Настроить стили редактора Как я могу достичь чего-то вроде has_post_format ('standard')? Не удалось войти в систему из-за неправильного пароля сразу после регистрации? get_current_screen – ошибка «Попытка получить свойство не-объекта» Как сохранить результаты запроса в include, который обновляется каждые 15 минут Изменение цикла WooCommerce никогда не возвращается Как увеличить ограничение размера файла для загрузки мультимедиа? запрос на основе сравнения

Роль пользователя не указывается в WordPress Multisite?

У меня есть многоязычный WordPress как следующий

  1. multisite on domain.com

  2. multisite на sub1.domain.com

  3. multisite на sub2.domain.com

  4. multisite на sub3.domain.com

    X multisite на subx.domain.com


  • Все сайты находятся в одной базе данных. (Если есть способ использовать другую базу данных, она также будет работать)

  • Я использую user.com user.com и таблицу usermeta для всех других subx.domain.com, добавив следующий код на все остальные мультисайты


define( 'CUSTOM_USER_TABLE', $table_prefix.'my_users' ); define( 'CUSTOM_USER_META_TABLE', $table_prefix.'my_usermeta' ); 

и использование

  • «Синхронизатор пользовательских сеансов» для обработки файлов cookie для входа в систему

  • Все работает отлично Только проблема, с которой я столкнулся, – это
  • моя роль пользователя не синхронизирована, что я имею в виду

Если кто-то Создать учетную запись на домене.com или любой учетной записи subx.domain.com также создается на всех других сайтах subx.domain.com

но

Любые другие subx.domain.com Multisite Не имеют роли пользователя, поэтому они не могут ничего делать ни на одном другом Multisite


Что я хочу сделать ?

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

ИЛИ


  • Я хочу использовать одну и ту же пользовательскую и пользовательскую мета для всего сайта, что означает, что everysite будет использовать одни и те же функции usermeta, это будет более полезно для меня, потому что я хочу использовать плагин mycred, и я не хочу никаких проблем ** (Более полезно)

РЕДАКТИРОВАТЬ

Так, например, у меня есть учетная запись с ролью редактора на сетевом сайте, у меня также есть учетная запись на другом сетевом сайте, но я не являюсь редактором там, даже если у меня нет какой-либо роли, мой какой-либо сетевой сайт должен быть той же самой ролью, потому что моя множественная многосетевая сеть работает по тому пути

если бы вы сказали, почему мне или кому-то нужна такая настройка?

  • Ans: У меня похожий сайт с переполнением стека, он полностью отличается от переполнения стека, но способ его работы такой же, поэтому, если вы зарегистрируетесь на любом подэлементе переполнения стека, у вас будет доступ ко всему дочернему сайту с той же учетной записью, но я также хочу роль должна быть такой же, а также нужна глобальная точечная система

Solutions Collecting From Web of "Роль пользователя не указывается в WordPress Multisite?"

Я хочу использовать одну и ту же пользовательскую и пользовательскую мета для всего сайта, что означает, что everysite будет использовать одни и те же функции usermeta, это будет более полезно для меня, потому что я хочу использовать плагин mycred, и я не хочу никаких проблем ** (Более полезно)

В этом суть проблемы, в частности:

Everysite будет использовать те же возможности usermeta

На каждом сайте уже используется одна и та же пользовательская и пользовательская мета, проблема в том, что роли и возможности не хранятся в метателе пользователя! У них есть отдельная таблица

Итак, что, если я тоже поделил таблицы ролей?

Это не сработает. Если в таблице ролей указано, что у вас есть статус редактора на сайте №3, у нас теперь есть проблема, потому что у вас несколько многопользовательских установок. Означает ли это сайт №3 на sub1.domain.com? Означает ли это сайт №3 на sub2.domain.com? Нет никакого способа узнать

Проблема работает глубже

Роли и возможности не являются общими, они являются сайтом / блоком. Я могу быть редактором в блоге, но администратором другого блога в рамках одной и той же многоузловой установки.

Например, WordPress.com – это гигантская многоузловая установка. Я могу создать сайт и быть администратором этого сайта, но у меня нет доступа администратора к вашему сайту.

По умолчанию, если я вхожу на сайт, у меня нет роли пользователя, которая является преднамеренной.

Функциональность супердесантного ввода в заблуждение

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

Если в этом параметре отображается ваш идентификатор пользователя, вы можете сделать почти что угодно, и он переопределит и предположит, что у вас есть возможность. Это немного больше, чем это, но это хорошее приближение. Вы не найдете супер-роль администратора в таблице ролей.

Итак, как мне построить систему, где я предоставляю пользователю роль, которая везде?

Универсальная роль, которую вы установили один раз, которая установлена ​​повсюду? Эта функциональность не выходит из строя и противоречит тому, как работает стандартный WordPress (и может иметь непредвиденные побочные эффекты).

На фундаментальном уровне то, что вы строили, – это единый вход, но через хрупкую систему общих пользовательских таблиц.

Поэтому вам понадобятся:

  • Где-то сохранить роль, установленную для пользователя
  • Код для чтения и программного программирования, игнорируя таблицу пользователя
  • Код для предоставления пользовательского интерфейса для установки роли
  • Список тех ролей, которые вы хотите, если плагин добавляет новые роли, тогда они не будут использоваться, если он не будет добавлен ко всем сайтам во всех установках

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

К сожалению, делать это может быть трудным или дорогостоящим:

  • Объект WP_User не предоставляет простых фильтров, может потребоваться отметить роль и все ее возможности и предоставить вашу собственную замену WP_User, это может вызвать проблемы совместимости
  • Вы можете проверить загрузку каждой страницы, если роль пользователя совпадает с тем, что она предназначена, и установить ее, если это не так. Это было бы более дорогостоящим, но более надежным и более совместимым

Я бы отметил, что все это будет дорого стоить. Ваша установка подтолкнула вас к углу высоких технических долгов, и это одна из затрат.

Как другие люди делают это

Когда вы перестраиваете систему в будущем, рассмотрите систему единого входа в систему. Федеративный логин, такой как предоставленные OAuth или SAML, является долгосрочным ответом здесь. В этом сценарии вы должны указать уровень аутентификации на сайт при входе пользователя в систему (логин может быть плавным перенаправлением, если пользователь уже прошел аутентификацию с помощью поставщика единого входа), затем установите соответствующую роль, когда пользователь будет отправлен обратно сайт.

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

Я просто получил это в Интернете, это работает для меня, это требует некоторой работы


kinsta.com/blog/share-logins-wordpress