web-dev-qa-db-ja.com

著者ページにページを追加する

現時点で私はauthor_baseスラッグを変更するための以下のコードを持っています。

/** ADD REWRITE RULES **/
function change_author_permalinks() {
   global $wp_rewrite;

   $wp_rewrite->author_base = 'profile';
   $wp_rewrite->flush_rules();
}
add_action('init','change_author_permalinks');

例えば、これに追加の「編集」ページ、すなわち/ profile/my-user-name/editを追加するにはどうすればよいですか。

2
EddyR

作者の書き換え規則 author_rewrite_rules でフィルタリングされます。そこにauthor/([^/]+)/edit/?$というパターンのルールを追加することができますが、置換はeditページをどのように作成したいかによって異なります。カスタムクエリ変数を設定し、この変数が設定されている場合は特定のテンプレートを読み込む簡単な例です。

add_action( 'author_rewrite_rules', 'wpse18547_author_rewrite_rules' );
function wpse18547_author_rewrite_rules( $author_rules )
{
    $author_rules['author/([^/]+)/edit/?$'] = 'index.php?author_name=$matches[1]&wpse18547_author_edit=1';
    return $author_rules;
}

add_filter( 'query_vars', 'wpse18547_query_vars' );
function wpse18547_query_vars( $query_vars )
{
    $query_vars[] = 'wpse18547_author_edit';
    return $query_vars;
}

add_filter( 'author_template', 'wpse18547_author_template' );
function wpse18547_author_template( $author_template )
{
    if ( get_query_var( 'wpse18547_author_edit' ) ) {
        return locate_template( array( 'edit-author.php', $author_template ) );
    }
    return $author_template;
}

ちょっと一言:すべてのinitflush_rules()を呼び出さないでください。高価な操作です。書き換え規則が変更されたときにだけそれをする必要があります。 パーマリンク設定ページにアクセスするだけで、手動でルールをフラッシュできます。そして、もしあなたが書き換え規則で遊ぶつもりなら、私はあなたが 私の書き換えアナライザプラグイン をインストールすることを勧めます。

3
Jan Fabry