Nous avons ajouté une règle rewrite_rule personnalisée sur notre site afin de permettre à un joli lien entrant d'être analysé et traité correctement. Les liens sont construits comme domain.com/meetings/faculty/someIDnumber
add_action( "init", "pleasing_permalinks" );
function pleasing_permalinks() {
add_rewrite_tag( '%hash%', '([^&]+)' );
add_rewrite_rule(
'meetings/faculty/([^/]+)/?$',
'index.php?p=1598&hash=$matches[1]',
'top'
);
//flush_rewrite_rules();
}
Rewrite Analyzer approuve ce qui précède, mais lorsque nous testons avec des liens réels dans le navigateur, le numéro d'identification incorporé n'est pas conservé. Que manque-t-il ici?
Si faculty
est une page enfant de meetings
, la règle doit être:
add_rewrite_rule(
'meetings/faculty/([^/]+)/?$',
'index.php?pagename=meetings/faculty&hash=$matches[1]',
'top'
);
pagename=meetings/faculty
au lieu de p=1598
EDIT- ou alternativement:
add_rewrite_rule(
'meetings/faculty/([^/]+)/?$',
'index.php?page_id=1598&hash=$matches[1]',
'top'
);
page_id=1598
au lieu de p=1598
Vient de tester votre code sur une installation propre WP et a pu obtenir la variable avec:
echo $wp_query->query_vars['hash'];
Wordpress Codex - add_rewrite_tag :
Notez que l'utilisation de $ _GET sur une URL réécrite ne fonctionnera pas, même si la réécriture inclut les variables de chaîne de requête. Vous devez utiliser $ wp_query.
Éditer: Comme indiqué dans la réponse correcte, "p" doit être remplacé par "page_id" pour pouvoir conserver les variables lors de la redirection vers un message de type "page".
Avez-vous essayé d'utiliser le premier index plutôt que le second?
'index.php?p=1598&hash=$matches[0]',
Les tableaux dans PHP commencent à 0 pas 1