Je développe un plugin WP dans lequel j'ai une page WP appelée mon-compte, mais j'ai encore quelques pages enfants de son type account-edit, account-misc, etc. Je voudrais donc appeler ces pages de cette manière mydomain.com/my-account/account-edit et mydomain.com/my-account/account-misc je ne sais pas comment Pour ce faire sans créer WP pages, j’ai essayé quelques add_rewrite_rule
mais cela ne fonctionne pas comme prévu.
Voici mon code mis à jour:
add_filter('query_vars', 'add_account_edit_var', 0, 1);
function add_account_edit_var($vars){
$vars[] = 'account-edit';
return $vars;
}
add_action( 'init', 'add_account_edit_rule' );
function add_account_edit_rule() {
add_rewrite_rule(
'^my-account/account-edit([^/]*)/?',
'index.php?pagename=my-account&account-edit',
'top'
);
}
cela fonctionne parfaitement, j’ai appelé l’url mon-compte/compte-edit/le résultat du modèle de page: Array ([pagename] => mon-compte [account-edit] =>)
Encore une fois, j'ai ajouté une autre réécriture:
add_filter('query_vars', 'add_account_misc_var', 0, 1);
function add_account_misc_var($vars){
$vars[] = 'account-misc';
return $vars;
}
add_action( 'init', 'add_account_misc_rule' );
function add_account_misc_rule() {
add_rewrite_rule(
'^my-account/account-misc([^/]*)/?',
'index.php?pagename=my-account&account-misc',
'top'
);
}
Son ne fonctionne pas dans la page de modèle, j'ai appelé l'URL mon-compte/compte-divers/page chargée, mais le résultat est Array ([pagename] => mon-compte) ne retournant pas "compte-divers"
Je ne peux donc pas vérifier quelle page, etc.
Vous êtes proche, la requête var pour passer le slug de page est pagename
:
add_filter('query_vars', 'add_account_edit_var', 0, 1);
function add_account_edit_var($vars){
$vars[] = 'account-edit';
return $vars;
}
add_action( 'init', 'add_account_edit_rule' );
function add_account_edit_rule() {
add_rewrite_rule(
'^my-account/([^/]*)/?',
'index.php?pagename=my-account&account-edit',
'top'
);
}
Pour capturer la valeur dans votre règle, vous devez transmettre la valeur dans $matches[1]
:
add_rewrite_rule(
'^my-account/([^/]*)/?',
'index.php?pagename=my-account&account-edit=$matches[1]',
'top'
);