Come creare percorsi URL personalizzati?
2 risposta
- voti
-
- 2011-08-19
Aggiungilo afunctions.php deltuotema o inserisciloin unplugin .
add_action ('init','wpse26388_rewrites_init'); funzione wpse26388_rewrites_init () { add_rewrite_rule ( 'proprietà/([0-9] +)/? $', 'index.php?pagename=properties & amp;property_id=$ corrisponde a [1]', 'superiore' ); } add_filter ('query_vars','wpse26388_query_vars'); funzione wpse26388_query_vars ($ query_vars) { $ query_vars []='property_id'; restituire $ query_vars; }
Questo aggiunge una regola di riscrittura cheindirizza le richieste a
/properties/
con qualsiasi combinazione dinumeri che segue apagenameproperties
,con la query varproperty_id
impostare. Assicurati solo di visitare lapagina delleimpostazioni deipermalinke di salvarepereliminare le regole di riscrittura,quindi questanuova regola verràinclusa.Neltuomodello
page-properties.php
,get_query_var ('property_id')
restituirà l'id dellaproprietà seeraimpostato,in caso contrariomostrerà leproprietàpredefinitepagina.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.-
Questoera VICINO a lavorareperme,ma dovevo aggiungere: add_filter ('init','flushRules'); functionflushRules () { 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
-
@tooshelnon vuoi assolutamente svuotare le regole su ogni richiesta,è un'operazione costosae rallenteràiltuo sito a una scansione.devi solo svuotare le regole una volta,all'attivazione delplug-in o semplicemente visitando lapagina delleimpostazioni deipermalink.@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
-
Sì,ho capito...ma quando staiprovando èbello che sia lì!Yeah, I get that . . . but when you are testing it's nice that it's in there!
- 1
- 2012-11-14
- tooshel
-
Una regex URL di riscritturapiùintelligentepotrebbeessere `` `^properties/([0-9] +)/?` ``.Altrimenti corrisponderebbe a qualcosa come `` `example/properties/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
-
@ RyanTaylorne sei sicuro?non cattura "esempio/proprietà/1" quando loprovo.@RyanTaylor are you sure about that? it doesn't capture `example/properties/1` when I test it.
- 0
- 2014-12-12
- Milo
-
Qual è laposizione delfilepage-properties.php?L'hoinseritonella directory deiplugin.Ègiusto?What is location of page-properties.php file? I put it inside plugin directory. Is that right?
- 0
- 2016-06-30
- Farid Movsumov
-
Ifile deitemi @FeridMovsumov vengono sempre caricati dalla directory deltema attiva corrente,ameno chetunon [aggiungi unfiltro] (https://developer.wordpress.org/themes/basics/template-hierarchy/#filter-hierarchy)per caricarli da qualche altraparte.@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
-
Ciao @Milo,questo è unbellissimopezzo di codice.Sai comefarein modo chenon si scontrino quando usi $paged=(get_query_var ('paged'))?get_query_var ('paged'): 1;?Lafunzione sta catturando $page (e lasciandola vuota)e non sonoin grado di continuare aimpaginare.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
Un altromodoperfarlo:
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);
-
La risposta accettatafunziona con 4.7 (e 4.8),non soperchépensi chenon lo sia.Iltuo codiceessenzialmente stafacendo la stessa cosa,`add_rewrite_tag` aggiunge la query var allo stesso array delfiltro` 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
-
@Miloprobabilmentenon hafunzionatoperme,manon hopiù un 4.7 aportata dimano,quindinonposso controllare.Modificherò lamia risposta.@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 Anche sepersonalmentepreferisco riscrivereiltag,ma ho comunqueprovato la risposta accettatae funziona.Solo alcunigustipersonali,però.@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
-
Itag di riscrittura @JackJohansson sononecessari quando lo si utilizza [in unpermastruct] (https://codex.wordpress.org/Function_Reference/add_permastruct).È solo unpo 'di datiin più che WordPressnon utilizzamaiin questo 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
-
entrambe le regolepossonoessere aggiunte allo stessometodo,finendoin unafunzionepiùpulitae più utile a cuitornaree capire sefare lavori dimanutenzioneboth 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
Ho un requisitomoltoparticolare,spero dipoterlo spiegare senza creare confusione.Ho creato unmodello dipaginain cuielenco alcuneproprietà ottenute da unfile XMLesterno,finoranessunproblema,diciamo che l'URL è così:
Ogniproprietà ha un collegamento che dovrebbe reindirizzare l'utente a unapagina "Proprietà singola" chemostrapiùinformazioni su diessa.Mi chiedevo seesiste unmodoper creareil collegamentoin questomodo:
Dove
123
sarebbe l'id dellaproprietà.Quindi,se ho l'URL comeproperties/some_id
voglioesserein grado di caricare unfile di visualizzazione (comesingle.php
opage.php
file)ma specificoper questa condizione dell'URL.Èpossibile?