現時点で私は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を追加するにはどうすればよいですか。
作者の書き換え規則 は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;
}
ちょっと一言:すべてのinit
でflush_rules()
を呼び出さないでください。高価な操作です。書き換え規則が変更されたときにだけそれをする必要があります。 パーマリンク設定ページにアクセスするだけで、手動でルールをフラッシュできます。そして、もしあなたが書き換え規則で遊ぶつもりなら、私はあなたが 私の書き換えアナライザプラグイン をインストールすることを勧めます。