Я з подивом виявив, що add_role () модифікує базу даних і не працює, якщо роль вже існує. Тут є два наслідки, один перший більш серйозний, ніж інший: 1) якщо ви розробляєте та оновлюєте свій код add_role, спочатку ви повинні видалити_роле () 2), як тільки ви це зробите правильно, вам ніколи не доведеться запускати цей код знову.
Тому, як правило, я кладу свою add_role () всередину гачка дій wp_loaded. А оскільки я перебуваю в розробці, я також додав remove_role () перед моїм add_role, так що я можу бути впевнений, що якщо я зміню мій список обмежень, він дійсно набуде чинності.
Але очевидно, що це зараз запускається кожного разу, коли доступ до сторінки блогу. Гаразд, я міг би поставити його в дію лише для адміністратора, або я міг би створити сторінку плагіна, можливо, в розділі Користувачі або Інструменти, де цю роль можна створити один раз. Напевно, я сподіваюся, що там є більш просте, елегантне рішення.
Я не уявляю, що існує така операція run_once?
Або найкраща практика просто додати роль, а потім використати add_cap () купу разів? І навіть тоді я думаю, що add_cap отримує доступ до db.
Подумайте з точки зору найкращого способу зменшити доступ до зайвих db. Які ваші найкращі практики?
remove_role()
функції, перш ніжadd_role()
мені допомогло.