Byłem zaskoczony, gdy odkryłem, że add_role () modyfikuje bazę danych i kończy się niepowodzeniem, jeśli rola już istnieje. Są tu dwie implikacje, jedna poważniejsza od drugiej: 1) jeśli jesteś w trakcie opracowywania i zaktualizujesz swój kod add_role, musisz najpierw remove_role () 2), gdy masz rację, nigdy nie powinieneś uruchamiać tego kodu jeszcze raz.
Zazwyczaj więc umieszczam moją metodę add_role () w haku akcji wp_loaded. A ponieważ jestem w fazie rozwoju, dodałem także remove_role () przed moją add_role, więc mogę być pewien, że jeśli zmodyfikuję moją listę kapsli, to faktycznie zacznie obowiązywać.
Ale najwyraźniej jest to teraz uruchamiane przy każdym wejściu na stronę bloga. Ok, mógłbym umieścić to w czynności tylko dla administratora, lub utworzyć stronę wtyczki, może w sekcji Użytkownicy lub Narzędzia, gdzie tę rolę można utworzyć raz. Chyba mam nadzieję, że istnieje prostsze, bardziej eleganckie rozwiązanie.
Nie wyobrażam sobie, że istnieje akcja typu run_once?
A może najlepszą praktyką jest dodanie roli, a następnie użycie add_cap () kilka razy? I nawet wtedy wyobrażam sobie, że add_cap ma dostęp do bazy danych.
Po prostu myślę o najlepszym sposobie ograniczenia niepotrzebnego dostępu do bazy danych. Jakie są twoje najlepsze praktyki?
remove_role()
funkcja dodawania wcześniejadd_role()
mi pomogła.