あなたの例では、作成者はパターンをから/author/[authorname]/に書き換えます/[author_level]/[author_name]/。私たち[author_level]が何かになることを許可した場合/[anything]/[anything]/、著者のアーカイブまたは通常のサブページになる可能性があるため、ページのルールに抵触することになります。
このため、私のソリューションでは、作成者レベルの数が限られていることを前提としているため、それらを明示的に書き換えルールに含めることができます。したがって/ninja/[anything]/、著者アーカイブに/not-ninja/[anything]/なりますが、通常のページになります。
URL構造の変更は常に2つの部分で構成されます。WordPressが受け入れるURLを変更することと、WordPressが生成するURLを変更することです。最初に、新しいrewriteタグを導入し、作成者ベースをそのタグに設定することにより、WordPressが受け入れるURLを変更します。
// I assume you define these somewhere, this is just to make the example work
$wpse17106_author_levels = array( 'trainee', 'ninja' );
add_action( 'init', 'wpse17106_init' );
function wpse17106_init()
{
    global $wp_rewrite;
    $author_levels = $GLOBALS['wpse17106_author_levels'];
    // Define the tag and use it in the rewrite rule
    add_rewrite_tag( '%author_level%', '(' . implode( '|', $author_levels ) . ')' );
    $wp_rewrite->author_base = '%author_level%';
}
結果の書き換えルールを私の書き換えアナライザーで確認すると、プレーン/[author-level]/ページの追加のルールが含まれていることがわかります。これは、WordPressがのような書き換えタグを含む各ディレクトリ部分のルールを生成するために発生します%author_level%。これらは必要ないので、を含まないすべての作成者書き換えルールを除外しますauthor_name。
add_filter( 'author_rewrite_rules', 'wpse17106_author_rewrite_rules' );
function wpse17106_author_rewrite_rules( $author_rewrite_rules )
{
    foreach ( $author_rewrite_rules as $pattern => $substitution ) {
        if ( FALSE === strpos( $substitution, 'author_name' ) ) {
            unset( $author_rewrite_rules[$pattern] );
        }
    }
    return $author_rewrite_rules;
}
これで、WordPressはこの新しいパターンを使用してURLを受け入れるはずです。あとは、作成者アーカイブへのリンクを作成するときに生成するURLを変更するだけです。そのために、次のauthor_link非常に基本的な例のように、フィルターにフックできます。
add_filter( 'author_link', 'wpse17106_author_link', 10, 2 );
function wpse17106_author_link( $link, $author_id )
{
    if ( 1 == $author_id ) {
        $author_level = 'ninja';
    } else {
        $author_level = 'trainee';
    }
    $link = str_replace( '%author_level%', $author_levels, $link );
    return $link;
}