Suporte » Desenvolvendo com WordPress » Templae de Página para slug

  • Pessoal, boa noite.

    Criei uma nova ROLE de usuários chamada docente e cadastrei alguns docentes nela.

    Via wordpress criei uma página chamada docentes e deixei em branco.

    Criei então um arquivo php chamado docentes.php e coloquei na pasta de meu tema. Este arquivo faz uma busca nos users que são docente e apresenta-os em forma de lista, com seus dados.

    Quando acesso http://meusite.com.br/docentes esta página é aberta e está correta.

    Agora , gostaria de ao digitar http://meusite.com.br/docentes/nice_name abrisse uma outra página com os dados de um único user. Infelizmente quando faço isso retorna um 404 Not Found!

    O que devo fazer? Ajudem-me, por favor.

Visualizando 1 resposta (de um total de 1)
  • 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' );
Visualizando 1 resposta (de um total de 1)
  • O tópico ‘Templae de Página para slug’ está fechado para novas respostas.