scott
  • 0
Гуру

Разрешить участнику доступ только к настраиваемым типам сообщений. Разрешение редактировать только свои сообщения

  • 0

Хорошо, я ищу лучший способ атаковать это.

Я очень хорошо разбираюсь в PHP и создаю пользовательские типы записей с помощью настраиваемых мета-полей в WordPress.

Вот что я собираюсь сделать:

  1. Пользователь регистрируется и устанавливается на подписчика по умолчанию.
  2. Пользователь запрашивает у администратора разрешение на произвольный тип записи.
  3. Администратор назначает пользователю другое имя разрешения, например «Владелец магазина».
  4. Теперь пользователь может видеть пользовательский тип сообщения и может вносить записи в этот тип сообщения.
  5. Пользователь может видеть и редактировать только свой собственный пост.

Мне нужна помощь в следующем:

  1. Как создать новую «Роль» под названием «Владелец магазина»,
  2. Как дать правильное разрешение указанной роли, чтобы видеть и иметь доступ только к пользовательскому типу сообщений.
  3. Разрешить пользователю просматривать и редактировать свои собственные сообщения только в этом пользовательском типе сообщений.

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

Любой вклад приветствуется.

С уважением

Share
  1. Используйте плагин Justin Tadlock « Members ». Это дает вам возможность создавать новые роли и редактировать существующие роли, а также добавлять пользовательские возможности. Всю ту работу, которую вам нужно будет сделать, можно сократить до нескольких кликов.

    Я знаю, что вы сказали в своем комментарии к ответу ZaMoose, что «хочете написать функциональность самостоятельно, чтобы у меня был полный контроль над всем». Это упускает из виду весь смысл программного обеспечения с открытым исходным кодом. Джастин Тэдлок выпустил свой плагин, чтобы вы могли использовать его именно так, чтобы у вас был полный контроль над всем.

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

    Если у вас есть плагин, который делает то, что вы хотите, вам нужно будет изменить 'map_meta_cap' флаг на true и 'capability_type' флаг в вашей функции регистрации типа сообщения, чтобы он говорил что-то другое, кроме «сообщение», «страница» или любое другое «зарезервировано». тип. Затем продублируйте все возможности, связанные с сообщениями (например edit_posts, edit_others_posts, publish_posts, и т. д.), используя ваш тип возможностей вместо сообщений. Обязательно назначьте все эти разрешения администраторам (вы не сможете увидеть тип сообщения, пока не сделаете это), затем создайте свою роль, имитируя возможности роли «участника» для вашего типа сообщения.

    Например, предположим, что ваш тип возможностей был foobars, вы хотели бы предоставить «владельцам магазинов» возможности edit_foobars, delete_foobars и read . Таким образом, они могут создавать свои собственные черновики foobars и удалять эти черновики, но, поскольку у них нет publish_foobars возможностей, они должны отправить их на утверждение. Поскольку у них нет edit_published_foobars, все модификации утвержденного foobar должны быть одобрены.

    • 0
  2. Тип сообщения регистрации имеет параметр под названием «возможности», поэтому вы можете, например,

    'capability' => 'organize_shop',
    

    http://codex.wordpress.org/Function_Reference/register_post_type

    Чтобы создать нового пользователя/роль/возможность, вы можете использовать add_role, add_cap в качестве простого примера для начала работы:

    // Add the role to WordPress list of roles
    // Then add the capability 'organize_shop' to the 'shop_owner' role
    $role = add_role( 'shop_owner', 'Shop Owner', ['edit_posts' => true]));
    $role->add_cap( 'organize_shop' );
    
    
    // If 'shop_owner' already exists make `$wp_roles` visible then 
    // add the capability 'organize_shop' to the 'Show Owner' role
    public $wp_roles;
    $wp_roles->add_cap( 'shop_owner', 'organize_shop' );
    
    
    • 0
  3. Рассматривали ли вы возможность использования Gravity Forms или TDO Mini Forms для фактической отправки контента? У каждого из них есть функциональные возможности, которые помогут вам разумно обрабатывать пользовательский контент.

    • 0
  4. Этого можно добиться более простым и эффективным способом, установив плагин под названием «Advance Access Manager». Вам не нужно будет писать функциональность, но вы все равно будете иметь приличный уровень контроля над пользователями, ролями и тем, что они могут делать. Большинство вещей, которые вы хотите, могут быть достигнуты с помощью этого плагина.

    • 0
  5. Я знаю, что это довольно угловой случай, но мне потребовался час, чтобы понять это.

    У меня был включен плагин: WP Custom Admin Interface, где вы можете настроить меню администратора для конкретных пользователей. Если вы регистрируете пользовательский тип сообщения после включения и настройки меню, то в «Пользовательском интерфейсе администратора» >> «Меню администратора» есть кнопка, которая называется «Добавить недавно добавленные элементы меню». Затем нажмите «Сохранить», и если пункт меню доступен для этого типа пользователя, то после этого он будет работать.

    • 0

Оставить ответ

You must login to add an answer.