add_role()がデータベースを変更し、ロールが既に存在する場合に失敗することを発見して驚きました。ここには2つの意味があります。1つ目はもう1つより深刻です:1)add_roleコードを開発して更新している場合は、最初にremove_role()を実行する必要があります再び。
そのため、通常はadd_role()をwp_loadedアクションフック内に入れています。また、開発中なので、add_roleの前にremove_role()を追加したため、キャップのリストを変更した場合に実際に有効になることを確認できます。
しかし明らかに、これはブログのページがアクセスされるたびに実行されています。さて、管理者のみのアクションに入れることも、このロールを1回作成できるユーザーまたはツールの下にプラグインページを作成することもできます。もっとシンプルでエレガントなソリューションが出ることを期待していると思います。
run_onceのようなアクションがあるとは思いませんか?
または、ロールを追加してからadd_cap()を何回も使用するだけのベストプラクティスですか?そして、それでもadd_capがdbにアクセスしていると思います。
不要なdbアクセスを減らすための最良の方法について考えてみてください。あなたのベストプラクティスは何ですか?
remove_role()
前に機能を追加しadd_role()
ました。