Custom WordPress rewrite

Estou tentando rewrite personalizado para seguir a url …

http://www.domain.com/lp/1 

e seria analisado usando

 lp.php?p=1 

Eu tentei seguir …

 add_action( 'init', 'aagt_rewrite_add_rewrites' ); function aagt_rewrite_add_rewrites() { add_rewrite_rule( '^lp/(\d+)/?$', // p followed by a slash, a series of one or more digits and maybe another slash 'lp.php?p=$matches[1]', 'top' ); } 

mas se eu tentar url ( http://www.domain.com/lp/1 ) após o código acima, não funcionou. Estou perdendo alguma coisa, tentei limpar as regras do htaccess. por favor, ajude, obrigado.

Solutions Collecting From Web of "Custom WordPress rewrite"

O WordPress possui dois tipos de regras de reescrita: interna e externa. As regras internas são analisadas pelo WordPress e encaminhadas para index.php . As reescritas externas são escritas para .htaccess e não são direcionadas para o WordPress.

Agora, sua regra é uma mistura entre o interno e externo – você o estruturou como uma regra interna, mas você incorreu apontou incorretamente para um arquivo diferente de index.php .

Se você quiser usar o ambiente WordPress dentro do código que recebe essa regra de reescrita, deve ser uma reescrita interna. Se você quer que esta seja uma regra externa que não seja processada pelo WordPress, então você precisa alterar sua regra para usar $1 vez de $matches[1] .

EDITAR

aqui estão alguns methods, o primeiro é o método rápido e sujo –

Método Um

O Passo 1 para ambos os methods é adicionar uma consulta var lpid à matriz do WordPress de vars de consulta reconhecidos:

 function wpa55759_query_vars( $query_vars ){ $query_vars[] = 'lpid'; return $query_vars; } add_filter( 'query_vars', 'wpa55759_query_vars' ); 

Passo 2, adicione a regra de rewrite para definir somente lpid quando nossa regra é correspondida:

 function wpa55759_rewrites(){ add_rewrite_rule( 'lp/(\d+)/?$', 'index.php?lpid=$matches[1]', 'top' ); } add_action( 'init', 'wpa55759_rewrites' ); 

Passo 3, parse_request e verifique se nossa consulta var está configurada. Se for o caso, carregue lp.php no diretório do modelo e saia:

 function wpa55759_parse_request( $request ){ if( isset( $request->query_vars['lpid'] ) ): include( get_template_directory() . "/lp.php" ); exit(); endif; return $request; } add_action( 'parse_request', 'wpa55759_parse_request' ); 

Para obter o valor de lpid dentro de lp.php :

 global $wp; echo $wp->query_vars['lpid']; 

Basicamente, estamos verificando a nossa consulta var e cortando cedo. O WordPress nunca executa uma consulta de database para carregar posts ou páginas. Não tem certeza de quais efeitos secundários isso pode ter de outra forma.

Método Dois

O segundo método é criar uma página dentro do WordPress, lp e apontar nossa regra para isso, passando também a consulta var:

 function wpa55759_rewrites(){ add_rewrite_rule( 'lp/(\d+)/?$', 'index.php?pagename=lp&lpid=$matches[1]', 'top' ); } add_action( 'init', 'wpa55759_rewrites' ); 

Agora você pode criar um modelo de page-lp.php e acessar o lpid com:

 echo get_query_var( 'lpid' ); 

Uma opção adicional com este segundo método é filtrar template_redirect e atacar a hierarquia do modelo, carregando seu próprio arquivo personalizado:

 function wpa55759_template_redirect(){ global $wp_query; if( $wp_query->get( 'lpid' ) ): include( get_template_directory() . "/lp.php" ); exit(); endif; } add_filter( 'template_redirect', 'wpa55759_template_redirect' ); 

vá para wp-admin / options-permalink.php

nada para fazer, exceto “Salvar alterações”