Разграничение доступа без плагинов

+17

Для разграничения доступа в Wordpress написано немало плагинов. Но как правило они либо недостаточно функциональны, либо реализуют слишком много ненужных функций, тем самым излишне замедляя работу сайта. Если же вам просто нужно ограничить доступ к странице (или её частям) для определенных групп- можно обойтись парой функций темы. Далее я пошагово распишу как это сделать.

Блок с выбором групп в форме редактирования поста

Привожу листинг кода с комментариями.

Он добавляет к форме редактирования поста блок с выбором групп, которым нужно открыть доступ к данному посту (если не выбрана ни одна группа- доступ имеют все).

Выглядит данный блок примерно так:

Данный код следует поместить в конец файла functions.php вашей темы:

Функции проверки доступа к странице

Здесь потребуется две функции.

Первая. Проверяет доступ пользователя к текущей странице.

По-умолчанию проверяется текущая страница и текущий пользователь. Однако функции можно указать параметры:
$p - ID или URL проверяемой страницы;
$user_id - ID пользователя.

Вторая. Проверяет наличие роли у пользователя.

Данную функцию можно использовать отдельно для проверки роли пользователя.
Принимает два параметра:
$role - название роли (обязательный);
$user_id - ID пользователя, которого нужно проверить (по-умолчанию- текущий).

Обе функци так же следует поместить в конец файла functions.php вашей темы.

Проверка доступа к странице в шаблоне

Теперь у нас есть все необходимое для сокрытия страниц. Осталось добавить проверку доступа в шаблон.

Заметьте- wordpress позволяет очень гибко настраивать шаблоны страниц, поэтому вы должны понимать анатомию вашей темы.
Например: по-умолчанию используется index.php, но его может переопределить page.php для отображения статичной страницы, а single.php - когда запрошен конкретный пост. Подробнее можно почитать в документации.

Итак, что бы скрыть содержимое страницы- нужно поместить его в условие как показано на примере:

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

Понравилась статья? Поделись с друзьями:

Комментарии ()

  1. CoderWeb 20 июня 2014, 00:29 # 0
    Здравствуйте, а чем этот вариант лучше плагина?
    1. Кундиус Руслан 20 июня 2014, 00:46 # 0
      Во-первых доступ настраивается на странице редактирования поста, а не отдельной, как в большинстве плагинов.
      Во-вторых плагины реализовывают больше ненужного функционала, следовательно при них тратится больше ресурсов.

      Хотя такая реализация привязана к функционалу темы, а значит если вы меняете их как перчатки выбирая из готовых- это решение не для вас)
    2. CoderWeb 20 июня 2014, 02:10 # 0
      Спасибо))
      Категории
      События студии все
      Популярное
      Последнее