0
183
2018-11-01

WordPress - Доступ к чтению страниц кастомного типа только после авторизации пользователя

Задача была следующей - необходимо было опубликовать контент который должен был быть доступен для чтения определенной группе пользователей сайта под управлением WordPress. В этой записи Вы узнаете как это можно реализовать максимально быстро.
Понравилась страница? Поставь свою оценку!
PLUGIN_STAR_RATINGS.SCORE_TEXTPLUGIN_STAR_RATINGS.VOTES_TEXT

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

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

Добавление кастомного типа записей - Custom Post Type UI

Ребят здесь все просто устанавливаем плагин Custom Post Type UI

Custom Post Type UI

Скачать плагин можно кликнув по изображению выше.

Описание плагина

Плагин предоставляет простой в использовании интерфейс для регистрации и управления настраиваемыми типами сообщений и таксономиями для вашего веб-сайта. Уверен как пользоваться плагином Вам будет понятно воспользовавшись простым переводом страницы (на странице плагина). И интуитивно все ясно будет после установки плагина на борт WordPress’a.

Я добавил кастомный тип My_Posts

Добавление роли пользователей - Capability Manager Enhanced

Многие начинающие администраторы не знают как добавить новую роль пользователей на сайте. Но на самом деле Вам не нужно лезть в дебри кода, функций и в прочие составляющие сайтостроения. Для Вас уже есть готовое решение которое заключается в плагине Capability Manager Enhanced:

https://ru.wordpress.org/plugins/capability-manager-enhanced/

Описание плагина:

Плагин обеспечивает простой способ управления определениями роли WordPress (подписчик, редактор и т. д.). Просмотр или изменение возможностей любой роли, добавление новых ролей, копирование существующих ролей в новые и добавление новых возможностей к существующим ролям. Теперь поддерживает отрицание возможностей и создание ролей.

Возможности:

  • Создание ролей
  • Управление возможностями ролей
  • Поддержка отрицания: установка любой возможности для предоставления, не предоставленной или заблокированной
  • Скопируйте любую роль на все сетевые сайты
  • Отметьте любую роль для автоматической копии на будущих сайтах сети
  • Резервное копирование и восстановление ролей и возможностей для возврата ваших последних изменений.
  • Восстановить роли и возможности до значений WordPress.

Управление ролью также может быть делегировано:

  • Роль администратора не может быть удалена.

После установки данного плагина я перешел в админ панель на страницу настроек плагина:

админ панель страница настроек плагина Capabilites

Далее в правой части экрана страницы добавил новую роль пользователя "My_role" в поле Create New Role (оно указано на скрине ниже), нажал на кнопку “Create” и вуаля новая роль добавлена.**

Create New Role

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

Доступ к кастомному типу записей только для пользователей вошедших на сайт - WordPress Access Areas

Устанавливаем плагин WordPress Access Areas: Страница плагина WordPress Access Areas

Для установки достаточно кликнуть на изображение выше.

Описание плагина:

WP Access Areas позволяет вам точно настроить, кто может читать, редактировать или комментировать ваши записи на блоге. Вы можете либо ограничить доступ только тем кто вошел в систему или же определенному пользователю, WordPress-Роли. Основные возможности:

  • Определите пользовательские области доступа и назначьте их своим блог-пользователям
  • Ограничение прав на чтение, редактирование и комментирование для зарегистрированных пользователей, определенных WordPress-ролей или областей доступа
  • определять глобальные области доступа в сети
  • Поддержка массового редактирования

Для того чтобы кастомный тип My_Posts (в моем случае) был доступен только авторизовавшимся на сайте пользователям необходимо перейти на страницу настроек плагина WordPress Access Areas:

Страница настроек плагина WordPress Access Areas

Здесь в разделе "Default Behaviour" устанавливаем настройку “If not logged in, redirect to login. Otherwise redirect to the fallback page.” которая в случае перехода на страницу кастомного типа не авторизовавшегося пользователя перенаправит его на страницу авторизации (wp-login.php).

Далее напротив кастомного типа в выпадающем меню столбца "Reading" выбираем “Logged in Users” то есть устанавливаем привилегию чтения страниц (кастомного типа) только пользователям вошедшим на наш сайт.

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

права на чтение в ручном режиме в данном блоке редактора страницы

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

Авторизация через социальную сеть но без регистрации - WordPress Social Share, Social Login and Social Comments Plugin — Super Socializer

Да ребят, я так подумал и решил что лучший вариант это не вводить каждый раз логин и пароль, а авторизоваться на прямую через социальные сети. Для реализации данной идеи мне пришелся по душе плагин WordPress Social Share, Social Login and Social Comments Plugin — Super Socializer. Так как горячо мной любимый uLogin все равно регистрировал пользователей даже при наличии снятой галочки Настройки -> Общие -> снять галочку "Любой может зарегистрироваться".

WordPress Social Share, Social Login and Social Comments Plugin — Super Socializer

Для загрузки плагина кликните на изображение выше.

Описание

Интеграция социального входа, социального шаринга и социальных комментариев на ваш сайт.

Примечание.

  1. Плагин не будет работать на локальном сервере. У вас должен быть веб-сайт для правильного функционирования плагина.
  2. Если вы хотите интегрировать только комментарии Facebook, вы должны установить Fancy Facebook Comments
  3. Если вы хотите интегрировать только Social Share, вы должны установить Sassy Social Share

Более подробное описание Вы узнаете перейдя на страницу плагина.

Реализация входа через социальную сеть без наличия регистрации

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

В начале перейдите на страницу "Social Login" плагина

Страница

Здесь необходимо для отключения возможности зарегистрироваться при входе через социальную сеть установить чекбокс в поле "Отключить регистрацию пользователей через социальные сети".

Далее я выбрал только одну социальную сеть для входа, а именно Google Plus. Ну и соответственно для того чтобы реализовать вход через G+ необходимо указать "Google+ ID клиента" и “Google+ Client Secret”. В общем все это я отметил в скрине ниже:

Основные настройки плагина для реализации социального входа

Естественно сразу реализовать вход через G+ мне не удалось, поэтому немного опишу как создать ID и секрет клиента в Google Plus API.

Google Plus - создаем ID и секретный ключ клиента для super socializer

И так у нас есть официальная инструкция по генерации ID и ключа, но к сожалению она уже не совсем актуальна. Её можно глянуть на официальной странице, то есть здесь: http://support.heateor.com/how-to-get-google-plus-client-id/

Если в общем, все делаем так как указано на ней до 11го шага. Вот здесь

Важные моменты которые отсутствуют в оригинальной документации

То есть указываем домен вашего сайта в полях на которые указывают красные стрелки на скрине. Также Важным моментом является ОТСУТСТВИЕ слеша в окончании ссылок на Ваш домен. Иначе получите ошибку redirect_uri_mismatch.

На этом и все, всем огромное спасибо за чтение. И если кто скажет что слишком много плагинов… Он будет абсолютно прав, если появится время и Ваше желание (о котором Вы дадите знать в комментариях) попробую описать идентичное решение но при помощи функций в function.php (кроме реализации социального логина). Еще раз всем спасибо, пока :).