web-dev-qa-db-fra.com

Charger un modèle de page spécifique basé sur l'URI

J'ai un modèle de page que je veux charger, chaque fois que mon $_SERVER['REQUEST_URI'] est comme ceci, www.site.com/link/147 où le nombre 147 sera variable.

c’est-à-dire que je voudrais appeler un modèle de page chaque fois que mon $_SERVER['REQUEST_URI'] contient /link/.

1
hkchakladar

Si vous pouvez compter sur l'URI en suivant toujours le même modèle, par exemple, /link/###, vous pouvez alors charger de manière sélective un modèle différent à l’aide d’une variable de requête et d’une réécriture (vous devrez vider les réécritures pour tester):

/**
 * Register a query variable to check against for loading a template. 
 *
 * @param array $vars Registered query variables.
 * @return array (Maybe) filtered list of query variables.
 */
function wpdocs_add_query_var( $vars ) {
    $vars[] = 'my-template';
    return $vars;
}
add_filter( 'query_vars', 'wpdocs_add_query_var' );

/**
 * Register an endpoint using the new query variable.
 */
function wpdocs_add_rewrite_rule() {
    add_rewrite_rule( 'link/([0-9]+)?$', 'index.php?my-template=1', 'top' );
}
add_action( 'init', 'wpodcs_add_rewrite_rule' );

/**
 * Load a template based on the presence of a query variable in the request.
 *
 * @param string $template Template file.
 * @return string (Maybe) filtered template file path.
 */
function wpdocs_load_page_template( $template ) { 
    if ( ! is_admin() ) {
        if ( get_query_var( 'my-template' ) ) {
            $template = get_template_directory() . '/my-template.php';
        }
    }
    return $template;
}
add_filter( 'template_include', 'wpdocs_load_page_template' );
1
DrewAPicture