Como criar rotas de URL personalizadas?
2 respostas
- votos
-
- 2011-08-19
Adicioneisto àsfunções do seutema.php ou Coloqueem umplugin .
add_action ('init','wpse26388_rewrites_init'); função wpse26388_rewrites_init () { add_rewrite_rule ( 'Propriedades/([0-9] +)/? $', 'index.php?pagename=propriedadese amp;propriedade_id=$ correspondentes [1]', 'topo' ); } add_filter ('query_vars','wpse26388_Query_vars'); função wpse26388_query_vars ($ query_vars) { $ query_vars []='propriedade_id'; retornar $ query_vars; }
Isso adiciona uma regra de reescrita que direciona as solicitaçõespara
/Propriedades/
com qualquer combinação denúmeros a seguir aopagenamePropriedades
,com a consulta varpropriedade_id
conjunto. Apenas certifique-se de visitar suapágina de configurações Permalinkse salvarpara lavar regras de reescrita,portanto,essanova regra seráincluída.em suapágina
propriedades depágina.php
modelo,get_query_var ('propriedade_id') retornará o ID dapropriedade seestiver definido,senãofor,mostre aspropriedadespadrãopágina.
Add this to your theme's functions.php, or put it in a plugin.
add_action( 'init', 'wpse26388_rewrites_init' ); function wpse26388_rewrites_init(){ add_rewrite_rule( 'properties/([0-9]+)/?$', 'index.php?pagename=properties&property_id=$matches[1]', 'top' ); } add_filter( 'query_vars', 'wpse26388_query_vars' ); function wpse26388_query_vars( $query_vars ){ $query_vars[] = 'property_id'; return $query_vars; }
This adds a rewrite rule which directs requests to
/properties/
with any combination of numbers following to pagenameproperties
, with the query varproperty_id
set. Just be sure to visit your permalinks settings page and save to flush rewrite rules, so this new rule will be included.In your
page-properties.php
template,get_query_var('property_id')
will return the property id if it was set, if it's not then show the default properties page.-
Issofoiperto detrabalharparamim,maseuprecisava adicionar: add_filter ('init','flushrules'); funçãoflushrules () { Global $ WP_REWRITE; $ wp_rewrite->flush_rules (); }This was CLOSE to working for me but I needed to add: add_filter('init','flushRules'); function flushRules(){ global $wp_rewrite; $wp_rewrite->flush_rules(); }
- 5
- 2012-11-13
- tooshel
-
@Tooshel Você definitivamentenão quer liberar regrasem todos ospedidos,é uma operação carae vai diminuir seu sitepara um rastreamento.Você sóprecisa lavar regras uma vez,na ativação doplugin,ou apenas visitando apágina Configurações do Permalinks.@tooshel you definitely don't want to flush rules on every request, it is an expensive operation and will slow your site to a crawl. you only need to flush rules once, on plugin activation, or just by visiting the permalinks settings page.
- 23
- 2012-11-13
- Milo
-
Sim,euentendoisso...Mas quando vocêestátestando,é legal queestá lá!Yeah, I get that . . . but when you are testing it's nice that it's in there!
- 1
- 2012-11-14
- tooshel
-
Um regex de URL de reescritamaisinteligentepode ser `` ^propriedades/([0-9] +)/? `` `` `Caso contrário,combinaria algo como `` `exemplo/propriedades/1```A smarter rewrite url regexp might be ```^properties/([0-9]+)/?```. Otherwise it would match something like ```example/properties/1```
- 3
- 2014-12-12
- Ryan Taylor
-
@Yantaylortem certeza disso?Não captura "Exemplo/Propriedades/1" quandoeu oteste.@RyanTaylor are you sure about that? it doesn't capture `example/properties/1` when I test it.
- 0
- 2014-12-12
- Milo
-
Qual é a localização do arquivo Página-Propertels.php?Eu coloco dentro do diretórioplugin.Issoestá certo?What is location of page-properties.php file? I put it inside plugin directory. Is that right?
- 0
- 2016-06-30
- Farid Movsumov
-
Os arquivos dotema @feridmovsumov são sempre carregados do diretóriotemático ativo atual,amenos que você [adicione umfiltro] (https://developer.wordpress.org/themes/basics/template-hierchy/#filter-hierarquia)para carregá-los de outro lugar.@FeridMovsumov theme files are always loaded from the current active theme directory, unless you [add a filter](https://developer.wordpress.org/themes/basics/template-hierarchy/#filter-hierarchy) to load them from elsewhere.
- 0
- 2016-06-30
- Milo
-
Olá @Milo,este é umbelopedaço de código.Você sabe comotornarissonão confronto ao usar $ Paged=(get_query_var ('paginado'))?get_query_var ('Paged'): 1;?Afunçãoestá capturando $página (e deixandoem branco)e eunãoposso continuarpaginando.Hello @Milo, this is a beautiful piece of code. Do you know how to make this not clash when using $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ? The function is capturing $page (and leaving it blank) and I'm not able to continue paginating.
- 0
- 2017-08-08
- Jaypee
-
- 2017-05-21
Outramaneira defazê-lo:
add_action('init', function() { add_rewrite_rule( '^properties/([0-9]+)/?', 'index.php?pagename=properties&property_id=$matches[1]', 'top' ); }, 10, 0); add_action('init', function() { add_rewrite_tag( '%property_id%', '([^&]+)' ); }, 10, 0);
Another way to do it:
add_action('init', function() { add_rewrite_rule( '^properties/([0-9]+)/?', 'index.php?pagename=properties&property_id=$matches[1]', 'top' ); }, 10, 0); add_action('init', function() { add_rewrite_tag( '%property_id%', '([^&]+)' ); }, 10, 0);
-
A resposta aceitafunciona com 4.7 (e 4.8),não sabepor que você acha quenão.Seu códigoestáessencialmentefazendo amesma coisa,`add_rewrite_tag` Adiciona o consulta varnamesmamatriz dofiltro` Query_Vars`.The accepted answer works with 4.7 (and 4.8), not sure why you think it doesn't. Your code is essentially doing the same thing, `add_rewrite_tag` adds the query var to the same array as the `query_vars` filter.
- 2
- 2017-07-07
- Milo
-
@Milo Provavelmentenãofuncionouparamim,maseunãotenhomais 4,7 acessível,entãonão consigo checar.Voueditarminha resposta.@Milo it probably didn’t work for me, but I don’t have a 4.7 handy anymore so I can’t check. I will edit my answer.
- 0
- 2017-07-08
- Christian Lescuyer
-
@Milo Emboraeupessoalmenteprefiro reescrevertag,mas aindatestou a resposta aceitae funciona.Apenas algunsgostospessoais,noentanto.@Milo Although I personally prefer rewrite tag, but still tested the accepted answer and it works. Just some personal tastes, though.
- 0
- 2017-07-08
- Jack Johansson
-
Astags de reescrita @jackjohansson sãonecessárias quando vocêestiver usando [em umpermMstruct] (https://codex.wordpress.org/function_reference/add_permastruct).É apenas umpouco de dados que o WordPressnunca usaneste caso.@JackJohansson rewrite tags are necessary when you're using it [in a permastruct](https://codex.wordpress.org/Function_Reference/add_permastruct). It's just an extra bit of data that WordPress never uses in this case.
- 1
- 2017-07-08
- Milo
-
Ambas as regraspodem ser adicionadas aomesmométodo,acabandoem umafunçãomais limpae mais útilpara voltare descobrir sefazertrabalho demanutençãoboth rules can be added to the same method, ending up in a cleaner and more useful function to come back to and figure out if doing maintenance work
- 0
- 2018-07-14
- eballeste
Eutenho um requisitomuitopeculiar,espero,possoexplicar sem sermuito confuso.Eu criei ummodelo depágina onde listei algumaspropriedadeseu recebo de um arquivo XMLexterno,até agora semproblemas,digamos que o URL é assim:
Cadapropriedadetem um link que deve redirecionar o usuáriopara umapágina "Propriedade única" queexibemaisinformações sobreela.Eu queria saber se há umamaneira defazer o link assim:
Onde
123
seria o ID dapropriedade.Então,seeutiver a URL comoPropriedades/Algo_id Eu quero ser capaz de carregar um arquivo de visualização (como o
single.php
oupage.php
Arquivos),masespecíficoparaesta condição de URL.épossível?