J'essaie d'écrire un point d'extrémité général qui charge un modèle. Cela fonctionne comme prévu à la petite exception près que l'en-tête renvoyé est 404 - page non trouvée. Est-ce que je manque quelque chose dans mes réécritures? Voici à quoi ressemble la réécriture:
/** Register Query Vars **/
function theme_custom_query_vars( $vars ){
$vars[] = 'map';
return $vars;
}
add_filter( 'query_vars', 'theme_custom_query_vars' );
/** Register Endpoint **/
function theme_register_endpoints() {
add_rewrite_endpoint( 'map', EP_PERMALINK );
}
add_action( 'init', 'theme_register_endpoints' );
/** Give Endpoint a Template **/
function endpoint_map_template( $templates = '' ){
global $wp_query;
if( ! ( isset( $wp_query->query['pagename'] ) && 'map' == $wp_query->query['pagename'] && ! is_singular() ) ) {
return $templates;
}
include locate_template( 'page-templates/template-map.php', false, true );
exit;
}
add_filter( 'template_redirect', 'endpoint_map_template' );
Je cherchais une solution, mais tout indique "Oh, effacez vos réécritures!" mais je l'ai fait plusieurs fois et joué avec le $wp_rewrite
(par opposition à la sauvegarde de permaliens sans résultat. Quelqu'un peut-il indiquer ce que je manque ou ce que je fais de travers?
Je ne suis pas sûr que ce soit la seule raison pour laquelle cela n'a pas fonctionné, mais il me manquait deux choses.
pagename
au lieu de query_vars
.Voici la solution finale:
/** Register Query Vars **/
function theme_custom_query_vars( $vars ){
$vars[] = 'map';
return $vars;
}
add_filter( 'query_vars', 'theme_custom_query_vars' );
/** Register Endpoint **/
function theme_register_endpoints() {
add_rewrite_rule( '^map/?', 'index.php?map=map', 'top' );
add_rewrite_endpoint( 'map', EP_PERMALINK );
}
add_action( 'init', 'theme_register_endpoints' );
/** Give Endpoint a Template **/
function endpoint_map_template( $templates = '' ){
global $wp_query;
$template = $wp_query->query_vars;
if ( array_key_exists( 'map', $template ) && 'map' == $template['map'] ) {
include( get_template_directory().'/page-templates/template-map.php' );
exit;
}
}
add_filter( 'template_redirect', 'endpoint_map_template' );