Cela fait des heures que je suis coincé là-dessus et j'ai essayé toutes ces méthodes, mais aucune ne semble fonctionner. J'ai vu d'autres discussions avec un problème similaire mais les solutions ne fonctionnent pas pour moi. J'espère que quelqu'un peut aider.
J'ai une page avec un modèle personnalisé utilisant le permalien
example.com/central
Cette page accepte les variables de requête, par exemple:
example.com/central/?information=people
J'essaie de faire fonctionner une règle de réécriture personnalisée afin que, lorsque les gens tapent
example.com/central/information/people
il affichera quoi
example.com/central/?information=people
est-ce que.
actuellement dans mon modèle functions.php j'ai
function add_query_vars_filter( $vars ){
$vars[] = "information";
return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );
function custom_rewrite_tag() {
add_rewrite_tag('%information%', '([^&]+)');
}
add_action('init', 'custom_rewrite_tag', 10, 0);
function custom_rewrite()
{
add_rewrite_rule('^(.+)/information/(.+)/?$','index.php?p=64476&information=$matches[2]','top');
}
add_action('init', 'custom_rewrite');
Quand je visite
example.com/central/information/people
Je suis seulement pris à
example.com/central/
Mon deuxième problème est que p = 64476 est codé en dur, comment puis-je obtenir l'id de $ matches [1]?
Essayez ceci, j'ai fait un test rapide et cela a fonctionné pour moi. J'ai créé une page appelée central
.
N'oubliez pas de vider les règles de réécriture après avoir inséré ce code.
add_filter( 'query_vars', 'query_vars' );
function query_vars( $vars )
{
array_Push($vars, 'information');
return $vars;
}
add_action( 'rewrite_rules_array', 'rewrite_rules' );
function rewrite_rules( $rules )
{
$newrules = array();
$newrules[ 'central/information/people/?$' ] = 'index.php?pagename=central&information=people';
return $newrules + $rules;
}
Ajouter un point de terminaison de réécriture au lieu d'une règle de réécriture et d'une requête var. Cette fonction API fera ces deux choses pour vous.
function wpd_add_my_endpoint(){
add_rewrite_endpoint( 'information', EP_PAGES );
}
add_action( 'init', 'wpd_add_my_endpoint' );
Toute page peut maintenant avoir information
ajouté à la fin, et la valeur sera disponible via get_query_var('information')
.