Hai bisogno di aiuto con URL amichevoli in Wordpress
-
-
@Steven: è untipo dipostpersonalizzato con un'impostazione di "riscrittura"?(Perfavore,aggiungiil codice `register_post_type` se lo è.) Se crei unnormalepost sulblog,qual èil suoindirizzo?@Steven: Is this a custom post type with a `rewrite` setting? (Please add the `register_post_type` code if it is.) If you create a regular blog post, what is its address?
- 0
- 2010-11-02
- Jan Fabry
-
@ Steve - Ah,vedo che l'hai chiesto qui.Grande!@Steve - Ah, I see you did ask over here. Great!
- 0
- 2010-11-02
- MikeSchinkel
-
Questonon è untipo dipostpersonalizzato.È solo unmodello che recuperai dati da un DBin base alleinformazionipassate da $ _GET ().This is not a custom post type. It's just a template that retrieves data from a DB based on info passed by $_GET().
- 0
- 2010-11-02
- Steven
-
@Steven: OK,quindi vuoi sapere come ottenere URL come `/designer/designer_A`,`/designer/designer_B`,...gestiti dallo stessomodello,chepuò quindi accederefacilmente alnome del designer dall'URL?Questa è quindi una domanda sull '[aggiunta dellatua regola di riscrittura] (http://wordpress.stackexchange.com/questions/3206/custom-post-type-rewrite-rule-for-author-paging/3218#3218)?@Steven: OK, so you want to know how to get URL's like `/designer/designer_A`, `/designer/designer_B`, ... handled by the same template, that can then access the designer name from the URL easily? This is then a question about [adding your own rewrite rule](http://wordpress.stackexchange.com/questions/3206/custom-post-type-rewrite-rule-for-author-paging/3218#3218)?
- 0
- 2010-11-02
- Jan Fabry
-
È corretto.Manon sto usandoiltipo di articolopersonalizzato.Vedi leinformazioni aggiunte sopra.That's correct. But I'm not using Custom Post Type. See added info above.
- 0
- 2010-11-02
- Steven
-
@Steven: Mailtuo URL `/designer/` è solo unanormalepagina di WordPress collegata a unmodello chefafunzionareil PHPpersonalizzato?(E se aggiungi @Jan allatua risposta,ricevo unanotifica.)@Steven: But your `/designer/` URL, is that just a regular WordPress page linked to a template that does the custom PHP work? (And if you add @Jan to your reply, I get a notification.)
- 0
- 2010-11-02
- Jan Fabry
-
@ Jan: Ah,quindi @ haeffettivamente unafunzione.Bello sapere!:) Sì, "/designer/" è unapaginain wordress che utilizza unmodellopersonalizzato.@Jan: Ah, so @ actually has a function. Nice to know! :) Yes, `/designer/` is a page in wordress using a custom template.
- 0
- 2010-11-02
- Steven
-
@Steve - Ti consiglio vivamente di riconsiderarei tipi dipostpersonalizzati.Stai cercando di reinventare la ruotae in WordPressesistegià un set di ruote davvero ottenuto.Dici chenonpuoi usarei CPT;prenderestiin considerazione diporre un'altra domanda qui su WordPress Answers che chiede come aggirareilblocco stradale chepercepisci coni CPT?Scommetto che sarai sorpreso di quanto saràfacile la soluzione.Crea *entrambi * un * "Brand" * CPTe una * "Galleria" * CPT quindi collegaliinsieme (ci sono diversimodiperfarlo ...)@Steve - I strongly recommend you reconsider Custom Post Types. You are trying to reinvent the wheel and a really got set of wheels already exist in WordPress. You say you can't use CPTs; will you consider maybe asking another question here on WordPress Answers that asks how to get around the roadblock you perceive with CPTs? I'll bet you'll be surprised how easy the solution will be. Create *both* a *"Brand"* CPT and a *"Gallery"* CPT then link them together (there are several ways to do that...)
- 1
- 2010-11-03
- MikeSchinkel
-
2 risposta
- voti
-
- 2010-11-02
Io stessonon so (onon sapevo)molto sulle regole di riscrittura (ma sembra nessuno lofa ),ma sullabase di alcune altre risposte qui,ho ottenuto chefunzioni. Aggiungiamo unanuova regola di riscrittura che corrisponde a
designers/designer_name/
. "Svuotiamo" le regole di riscritturain modo che vengano salvatenel database,ma assicurati difarlo solo una volta,poiché è un'operazione costosa. Ora,impostiamo unpattern che corrisponderà allanostrapaginae salveremo laparteextranella variabile di querydesigner_name
. Poiché WordPressnon sa di doverguardare questa variabile,ci colleghiamo alfiltroquery_vars
e gli diciamo diguardare anche quella.Ora,nelfile deltema
page-designers.php
,possiamofareget_query_var ('designer_name')
e ti daràilnome del designer. Se vuoi coseextra come lapaginazione (designer/designer_name/page/2
),devi aggiungere una regola di riscritturaextraper quella (operi feed,o qualunque cosa cheinizi condesigner/designer_name ). Ma le cose dibase dovrebberofunzionare.
& lt;?php /* Nomeplugin: WPA 3537 URI delplugin: http://wordpress.stackexchange.com/questions/3537/need-help-with-friendly-urls-in-wordpress Descrizione: haibisogno di aiuto con URL amichevoliin Wordpress Versione: 1.0.0 Autore: Jan Fabry */ register_activation_hook (__ FILE__,'wpa3537_flush_rules'); funzione wpa3537_flush_rules () { add_rewrite_rule ('designers/([^/] +)','index.php?pagename=designers & amp; designer_name=$ corrisponde a [1]','top'); flush_rewrite_rules (false); } add_filter ('query_vars','wpa3537_query_vars'); funzione wpa3537_query_vars ($ query_vars) { $ query_vars []='designer_name'; restituire $ query_vars; }
I don't know (or didn't know) much about the rewrite rules myself (but it seems nobody does), but based on some other answers here, I got this to work. We add a new rewrite rule that matches
designers/designer_name/
. We "flush" the rewrite rules so they get saved to the database, but make sure to do this only once, since it is an expensive operation. Now, we set up a pattern that will match our page and save the extra part in thedesigner_name
query variable. Since WordPress does not know it must look at this variable, we hook into thequery_vars
filter and tell it to look at that too.Now, in the
page-designers.php
theme file, we can doget_query_var('designer_name')
and it will give you the designer name. If you want extra stuff like paging (designer/designer_name/page/2
), you need to add an extra rewrite rule for that (or feeds, or whatever that starts withdesigner/designer_name
). But the basic stuff should work.<?php /* Plugin Name: WPA 3537 Plugin URI: http://wordpress.stackexchange.com/questions/3537/need-help-with-friendly-urls-in-wordpress Description: Need help with friendly URL's in Wordpress Version: 1.0 Author: Jan Fabry */ register_activation_hook(__FILE__, 'wpa3537_flush_rules'); function wpa3537_flush_rules() { add_rewrite_rule('designers/([^/]+)', 'index.php?pagename=designers&designer_name=$matches[1]', 'top'); flush_rewrite_rules(false); } add_filter('query_vars', 'wpa3537_query_vars'); function wpa3537_query_vars($query_vars) { $query_vars[] = 'designer_name'; return $query_vars; }
-
Sì,la riscrittura degli URL di WordPress è un'artenera.Bisogna stare attenti quando sipraticaperevitare dipassare al lato oscuroe diessere resiirreversibilmentepazzi.Yes, WordPress' URL rewriting is a black art. One must be careful when practicing lest one cross over to the dark side and be driven irreversibly insane.
- 4
- 2010-11-03
- MikeSchinkel
-
@ Mike:mi haincuriosito (dev'essere l'ora di Halloween)e ho scritto [un analizzatore di regole di riscrittura] (http://wordpress.stackexchange.com/questions/3606/a-tool-to-analyze-rewrite-rules/3608 # 3608) cometraccia dellemie scopertein rewrite-land.@Mike: I got intrigued by it (must be the Halloween time), and wrote [a rewrite rule analyzer](http://wordpress.stackexchange.com/questions/3606/a-tool-to-analyze-rewrite-rules/3608#3608) as a trace of my discoveries in rewrite-land.
- 1
- 2010-11-03
- Jan Fabry
-
Per la risposta completa,vedere questothread: http://wordpress.stackexchange.com/questions/5413/need-help-with-add-rewrite-ruleFor full answer, se this thread: http://wordpress.stackexchange.com/questions/5413/need-help-with-add-rewrite-rule
- 0
- 2010-12-16
- Steven
-
- 2012-03-14
Ho scrittotutto quello che ha scritto Jan Fabry,ma quando chiamo:
http://www.mysite.com/customPostTypeSlug/page/id
Wordpressmi reindirizza (301) a:
http://www.mysite.com/customPostTypeSlug/page
Lamia regola è (chiamata da un'azione "init"):
add_rewrite_rule( 'customPostTypeSlug/page/([^/]+)/?' , 'index.php?customPostTypeSlug=page&id=$matches[1]', 'top' );
Poi lo svuoto.
Cambiopermalink da
%category%/%postname%
a%postname%
e sembrafunzionare.I did all Jan Fabry wrote, but when I call:
http://www.mysite.com/customPostTypeSlug/page/id
Wordpress redirect (301) me to:
http://www.mysite.com/customPostTypeSlug/page
My rule is (called by an "init" action):
add_rewrite_rule( 'customPostTypeSlug/page/([^/]+)/?' , 'index.php?customPostTypeSlug=page&id=$matches[1]', 'top' );
Then I flush it.
I change permalink from
%category%/%postname%
to%postname%
and seems to work.
Sto creando alcunimodellipersonalizzatiin Wordpresse stopassando alcuni datinegli URL.
Attualmenteilmio URL ha questo aspetto: http://www.mysite.com/designers/?id=43& ;nome=designer +nome
L'URL contiene l'ID del designere ilnome del designer.
Mipiacerebbe davvero usare questo: http://www.mysite.com/designers/designer+name/
La struttura delmiopermalink èimpostata su
/%category%/%postname%/
Ilmiofile .htaccess ha questo aspetto:
Hoesaminato http://codex.wordpress.org/Using_Permalinks ,manon sono diventato qualsiasipiù saggio.
Ho due domande:
AGGIORNAMENTO
Aggiungo altreinformazioniper chiarimenti.
Ilmio URL è attualmentein fase di creazionein questomodo:
Url = get_permalink().'?bid='.$brand->id.'&name='.$brand->name;
Ho utilizzato unmetodo simile qui:
http://storelocator.no/search/?brandID=4673 & amp; storeID=0 & amp;brand=Moods + of + Norvegia
L'utilizzo di Custom Post Typeera un'opzione che avevopresoin considerazione,ma avevobisogno dellamia struttura ditabellaperchéi designer/i marchi sono collegati allegallerie (epiù collegamenti ad altretabelle a venire). Quindiil salvataggio dei dati deimarchinellatabella WP POSTnon avrebbefunzionato.
Quindi hobisogno di sapere questo: