I tipi di post personalizzati di WordPress interrompono il permalink durante la reinstallazione del tema
-
-
Questonon è unproblema.Quello che hai descritto ènormale.E salutare.This is a non-issue. What you described is normal. And healthy.
- 0
- 2010-10-21
- John P Bloch
-
Inoltre,probabilmenteera solo unerrore dibattitura,ma,datoil codice che haiincollato,l'URL sopra dovrebbe dire "/product/"non "/products/".Also, it was probably just a typo, but, given the code you've pasted, the url above should say `/product/` not `/products/`.
- 0
- 2010-10-21
- John P Bloch
-
Ehi John,sì,è unerrore dibattitura.L'URL diesempio dovrebbeessere http://www.mywebsite.com/product/product-name.Hey John, yes that is a typo. The example url should be http://www.mywebsite.com/product/product-name.
- 0
- 2010-10-21
- jnthnclrk
-
Non capiscoperché WP dimentichiilpermalinkperil CPT.Sicuramente,quando reinstalloilmiotema,functions.php dovrebbe compilareil cpte farfunzionarei permalink comeprevisto?I don't understand why WP forgets the permalink for the CPT. Surely, when I re-install my theme, functions.php should build the cpt and make the permalinks work as expected?
- 0
- 2010-10-21
- jnthnclrk
-
Non apprezzo ricevere un votonegativoper unerrore dibattitura.Ilproblema è ancora unproblemaperme emi piace unpo 'di aiutoper capire come risolverlo.I don't appreciate getting a negative vote for a typo. The issue is still a problem for me, and I love some help figuring out how to fix it.
- 0
- 2010-10-21
- jnthnclrk
-
Il votonegativononeroio.Negative vote wasn't me.
- 0
- 2010-10-21
- John P Bloch
-
I CPT registrano la struttura delpermalink,manonfannonullaper aggiungereilpermastruct al database (che è ciò che WP usaper verificareil contenuto).Per aggiungere queste regole al database ènecessario svuotare le regole di riscrittura.Ciò comportamolte risorse delprocessore chenon dovrebberoessere utilizzate ad ogni caricamento dellapagina.CPT's register the permalink structure, but don't do anything to add the permastruct to the database (which is what WP uses to check for content). To add those rules to the database you need to flush the rewrite rules. This involves lots of processor resources that shouldn't be used every page load.
- 0
- 2010-10-21
- John P Bloch
-
1 risposta
- voti
-
- 2010-10-21
Lanuova struttura delpermalink viene salvata solo quando
WP_Rewrite::flush_rules()
viene chiamato.Poiché questa è un'operazione costosa (calcolare lenuove regolee salvarlenel database),non dovrestieseguirla a ogni chiamata ainit
,ma solo quando cambi la struttura.Iltipo di articolopersonalizzatotuttavia deveessere registrato ad ogni chiamata ainit
,poiché viene salvatoin un array PHPin memoria,nonnel database (motivoper cui ha dimenticatoilmessaggiopersonalizzato quando hai cambiatotema:illa struttura delpermalinkesisteva ancorama si riferiva a untipo dipostpersonalizzato chenonera stato caricato,dando unerrore).The new permalink structure is only saved when
WP_Rewrite::flush_rules()
is called. Because this is an expensive operation (calculating the new rules and saving them to the database), you should not do it on everyinit
call, but only when you change the structure. The custom post type however must be registered at everyinit
call, since it is saved in a PHP array in memory, not in the database (which is why it forgot the custom post when you switched themes: the permalink structure still existed but referred to a custom post type that was not loaded, giving an error).-
Grazie!Questo spiegaperché lanavigazionein Impostazioni -> Permalink lo risolve quando viene chiamatoflush_rules (). Puoi dirmi come devo configurareilmiotemae CPTin modo chegli utentipossano disinstallaree reinstallare senza riscontrare questoproblema?Immagino cheinserire WP_Rewrite ::flush_rules ()in functions.php sia una cattivaidea?Thank you! That explains why browsing to Settings -> Permalinks fixes it as flush_rules() gets called. Can you tell me how I should configure my Theme and CPT so users can uninstall and reinstall without getting this problem? I guess putting WP_Rewrite::flush_rules() in functions.php is a bad idea?
- 0
- 2010-10-21
- jnthnclrk
-
O dovrei chiederlo come domanda separata?Or should I ask that as a separate question?
- 0
- 2010-10-21
- jnthnclrk
-
@trnsfrmr: lamaggiorparte dellepersoneinserisce questotipo di codicein unplugine poi si aggancia all'attivazione di quelplugintramite [`register_activation_hook ()`] (http://codex.wordpress.org/Function_Reference/register_activation_hook).Questo "sopravviverà" ai cambiamenti deltema.Se lo vuoi davveroneltuotema,potrestiprovare ad agganciarti all'azione [`switch_theme`] (http://codex.wordpress.org/Function_Reference/switch_theme).@trnsfrmr: Most people put this kind of code in a plugin, and then hook into the activation of that plugin via [`register_activation_hook()`](http://codex.wordpress.org/Function_Reference/register_activation_hook). This will "survive" theme changes. If you really want it in your theme, you could try hooking into the [`switch_theme`](http://codex.wordpress.org/Function_Reference/switch_theme) action.
- 0
- 2010-10-21
- Jan Fabry
-
Non c'èbisogno,ho risoltoilproblema utilizzando la seguente riga dopo lamia chiamata register_post_type:flush_rewrite_rules (false);No need, I've fixed the problem by using the following line after my register_post_type call: flush_rewrite_rules( false );
- 0
- 2010-10-21
- jnthnclrk
-
@trnsfrmr:funziona,manon è consigliato,perché ci vuole deltempoper cancellareil database,ricalcolare le regolee quindi salvarle dinuovo.Anche senonesegui unflush "forte" (scrivendoliin `.htaccess`),questo richiede operazioni sul database.Quindi vale davvero lapena usarei "giusti" hook di attivazione.@trnsfrmr: This works, but it is not recommended, because it takes some time to clear the database, re-calculate the rules and then save them again. Even if you don't do a "hard" flush (writing them to `.htaccess`), this requires database operations. So it really pays off to use the "proper" activation hooks.
- 0
- 2010-10-21
- Jan Fabry
Questo è unproblemapiuttosto strano. Sto creando untipo di articolopersonalizzato WordPressnelmiofilefunctions.php deitemi utilizzandoil seguenteformato:
Questomi fornisce la seguente struttura dell'URLperi mieiprodotti: http://www.mywebsite.com/prodotti/nome-prodotto .
Tuttavia,sepasso a un altrotema (TwentyTen)e poi ritorni WordPress dimenticailpermalink,ora quandopasso all'URL sopra ottengo lamiapagina 404.
La cosa davvero strana che honotato è cheposso risolvere questoproblema accedendo a Impostazioni -> Permalinkin admin. Questo risolvetemporaneamenteilproblemafino alla successiva disinstallazione/reinstallazione deltema.
Qualcun altro ha riscontrato unproblema simile?