Você pode criar um Custom Post Type para “docentes” e utilizá-lo para mostrar os dados do docente. É a maneira mais fácil porque ele já vai resolver o problema dos permalinks e das query vars e de quebra pode dar algumas opções de indexação e anexos.
Se você quiser ser mais direto, pode usar a Rewrite API do WordPress e criar uma nova tag e uma nova estrutura de permalinks, acrescentando o template que criou. Escrevi esse código por alto, baseado em como o bbPress e o buddypress cria as urls de usuários, ainda não testei:
/**
* 1 - Setup the new rewrite tags, rules, and permalink structure
* using Rewrite API. Based on bbPress/BuddyPress code.
*/
function brg_rewrite() {
// Setup some variables
$rewrite_tag = 'docentes'; //like %post_name% or %category% in permalinks menu
$root_slug = 'docentes'; //like 'category' or 'tags' in permalinks menu
// Add the custom query variable
add_rewrite_tag( '%' . $rewrite_tag . '%', '([^/]+)' );
// Add the custom rewrite rule
add_rewrite_rule( $root_slug . '/([^/]+)/?$', 'index.php?' . $rewrite_tag . '=$matches[1]', 'top' );
// Add the custom permalink structure
add_permastruct( $rewrite_tag, $root_slug . '/%' . $rewrite_tag . '%', array(
'with_front' => false,
'ep_mask' => EP_NONE,
'paged' => false,
'feed' => false,
'forcomments' => false,
'walk_dirs' => true,
'endpoints' => false
) );
}
add_action( 'init', 'brg_rewrite' );
/**
* 2 - Parse the query for your specific rules
*/
function brg_query( $posts_query ) {
// Bail if $posts_query is not the main loop
if ( ! $posts_query->is_main_query() )
return;
// Bail if filters are suppressed on this query
if ( true === $posts_query->get( 'suppress_filters' ) )
return;
// Bail if in admin
if ( is_admin() )
return;
// Look for the user query variable match
$our_user = $posts_query->get( 'docentes' );//the user role
// User match?
if ( !empty( $our_user ) ) }
// check
var_dump( $our_user );
// Set a variable to use later
$posts_query->our_user = $our_user;
}
}
add_action( 'parse_query', 'brg_query' );
/**
* 3 - Filter template_include, and pull in docentes.php template.
*/
function brg_template_include( $template = '' ) {
global $wp_query;
if ( !empty( $wp_query->our_user ) ) {
$template = get_query_template( 'docentes' );
}
return $template;
}
add_filter( 'template_include', 'brg_template_include' );