Я был удивлен, обнаружив, что add_role () изменяет базу данных и дает сбой, если роль уже существует. Здесь есть два значения, одно из которых более серьезное, чем другое: 1) если вы разрабатываете и обновляете свой код add_role, вы должны сначала удалить remove_role () 2), как только вы все сделаете правильно, вам никогда не придется запускать этот код опять таки.
Поэтому обычно я помещаю свой add_role () в хук действия wp_loaded. И так как я нахожусь в разработке, я также добавил remove_role () перед моим add_role, так что я могу быть уверен, что если я изменю свой список заглавных букв, он действительно вступит в силу.
Но очевидно, что это теперь выполняется каждый раз, когда к странице блога обращаются. Хорошо, я мог бы поместить это в действие только для администратора, или я мог бы создать страницу плагина, возможно, в разделе «Пользователи» или «Инструменты», где эту роль можно создать один раз. Я надеюсь, что есть более простое и элегантное решение.
Я не думаю, что есть какое-то действие типа run_once?
Или лучше всего добавить роль, а затем несколько раз использовать add_cap ()? И даже тогда я представляю, что add_cap обращается к БД.
Просто думать с точки зрения лучшего способа уменьшить ненужный доступ к БД. Каковы ваши лучшие практики?
remove_role()
функции, прежде чемadd_role()
мне помогли.