Pour le moment, j'ai le code suivant pour changer le slug de 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');
Comment puis-je ajouter, par exemple, une page "d'édition" supplémentaire à cela, c'est-à-dire,/profile/mon-nom-d'utilisateur/edit ???
Les règles de réécriture d'auteur sont filtrées via author_rewrite_rules
. Vous pouvez y ajouter une règle pour le motif author/([^/]+)/edit/?$
, mais la substitution dépendra de la manière dont vous souhaitez créer la page edit
. Un exemple simple qui va définir une variable de requête personnalisée et charger un modèle spécifique si cette variable est définie:
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;
}
Petit conseil: N'appelez pas flush_rules()
sur chaque init
, c'est une opération coûteuse. Vous ne devez le faire que lorsque les règles de réécriture changent. Vous pouvez vider manuellement les règles en visitant simplement la page de paramètres Permaliens . Et si vous allez jouer avec les règles de réécriture, je vous recommande d’installer mon plugin d’analyseur Rewrite .