web-dev-qa-db-ja.com

ロールと機能を追加するときにどのようなアクションを取り入れるべきですか

Add_role()と$ role-> add_cap()を使って新しいカスタムロールを設定し、既存のロールに新しい機能を追加します。

これを行うのに最適な場所はどこにあるのだろうか。明らかに私はfunctions.phpの中でまっすぐそれをすることができ、それを使って行うことができます。しかし、これがベストプラクティスですか? admin_initでこれを実行するだけでいいですか?それともinitでやるべきですか?

直接の関数呼び出しをfunctions.phpの中に落とすのではなく、initアクションフックを使用することがベストプラクティスであることが完全にはわからない.

あなたの入力をありがとう!

9
Tom Auger

add_roleまたは->add_cap関数を使用するときにロールと機能がデータベースに保存されるため、ロールと機能を追加するときにコードを1回実行するだけでよいので、Andyがこの種のアクションにafter_setup_themeを使用できるが、何らかのチェックを追加できる register_activation_hook のように、またはオプションを使用して、一度だけ実行されます。

add_action('after_setup_theme','my_add_role_function');

function my_add_role_function(){
    $roles_set = get_option('my_roles_are_set');
    if(!$roles_set){
        add_role('my_role', 'my_roleUser', array(
            'read' => true, // True allows that capability, False specifically removes it.
            'edit_posts' => true,
            'delete_posts' => true,
            'upload_files' => true 
        ));
        update_option('my_roles_are_set',true);
    }
}
10
Bainternet

プラグインの場合、これにplugins_loadedを使用することに成功しました。テーマにはafter_setup_themeを使います。

5
Andy