In che modo uno flush regola solo l'attivazione o la disattivazione del tema?
5 risposta
- voti
-
- 2013-10-31
Anche se le soluzionifornite quifunzionano ancora,WordPress si èevoluto da allorae ora (credo dalla 3.3)fornisce hook direttiper l'attivazione deltema.
after_switch_theme
si attiverà all'attivazione deltemaeswitch_theme
prima di disattivare un vecchiotema.Quindi la risposta aggiornata è:
function reflush_rules() { global $wp_rewrite; $wp_rewrite->flush_rules(); } add_action( 'after_switch_theme', 'reflush_rules' );
While the solutions provided here do still work, WordPress has evolved since and does now (since 3.3, I believe) provide direct hooks for theme activation.
after_switch_theme
will fire on theme activation andswitch_theme
before deactivating an old theme.Hence the up-to-date answer is:
function reflush_rules() { global $wp_rewrite; $wp_rewrite->flush_rules(); } add_action( 'after_switch_theme', 'reflush_rules' );
-
- 2010-10-21
questo codice (tratto dal commento di Ozh qui con unapiccola aggiunta)può aiutarti.
function reflush_rules() { if ( is_admin() && isset($_GET['activated'] ) && $pagenow == "themes.php" ) { global $wp_rewrite; $wp_rewrite->flush_rules(); } } add_action('init', 'reflush_rules');
<"modifica:"
aggiungi questafunzioneneltuo
functions.php
.Questafunzione verrà caricata solo quandoiltema è attivato (l'unica volta che èimpostato$_GET['activated']
).this code (taken from Ozh's comment here with small addition) may help you.
function reflush_rules() { if ( is_admin() && isset($_GET['activated'] ) && $pagenow == "themes.php" ) { global $wp_rewrite; $wp_rewrite->flush_rules(); } } add_action('init', 'reflush_rules');
edit:
add this function on your
functions.php
. This function will only loaded when theme activated (the only time$_GET['activated']
is set). -
- 2010-10-21
Non sono sicuro dello svuotamento alla disattivazione,ma l'attivazione èpiuttosto semplice.
Neltuofile
functions.php
,imposta un codice comeil seguente:function flush_rules_on_activation() { global $wp_rewrite; $is_installed = get_option('theme_installed'); if(!$is_installed) { $wp_rewrite->flush_rules(); add_option('theme_installed', true); } } add_action('init', 'flush_rules_on_activation');
Questo verràeseguito ogni volta,ma le regole verranno cancellate solo una voltaperchéimposti unflagnellatabella delle opzioniperevitare di cancellarle ogni volta.
Not sure about flushing on deactivation, but activation is pretty easy.
In your
functions.php
file, set up some code like the following:function flush_rules_on_activation() { global $wp_rewrite; $is_installed = get_option('theme_installed'); if(!$is_installed) { $wp_rewrite->flush_rules(); add_option('theme_installed', true); } } add_action('init', 'flush_rules_on_activation');
This will run every time, but the rules will only be flushed once because you set a flag in your options table to prevent flushing them every time.
-
Quel codice ha ucciso l'interapagina.That code killed the whole page.
- 0
- 2010-10-21
- jnthnclrk
-
L'ho appenatestato sulmio sito ...non ha uccisonulla.Just tested it on my own site ... it didn't kill anything.
- 0
- 2010-10-21
- EAMann
-
Probabilmente unerrore dapartemia.Anche sepreferisco la soluzione Ozh.Probably an error on my side. Although I prefer the Ozh solution.
- 0
- 2010-10-21
- jnthnclrk
-
Preferisco anche la soluzione di Ozh ... l'unicomotivoper cui hopostato questo è statoin risposta altuo commento "No,non hafunzionato".I prefer Ozh's solution as well ... the only reason I posted this was in response to your "Nope, that didn't work" comment.
- 0
- 2010-10-21
- EAMann
-
- 2010-10-22
Ho dovutomodificare la risposta dibangbambangperfarlofunzionare.
Il codice dovrebbeessere:
add_action('init', 'reflush_rules'); function reflush_rules() { $pagenow = $_SERVER['SCRIPT_NAME']; if ( is_admin() && isset($_GET['activated'] ) && $pagenow == "/wp-admin/themes.php" ) { global $wp_rewrite; $wp_rewrite->flush_rules(); } }
I had to modify bangbambang's answer to get this to work.
The code should be:
add_action('init', 'reflush_rules'); function reflush_rules() { $pagenow = $_SERVER['SCRIPT_NAME']; if ( is_admin() && isset($_GET['activated'] ) && $pagenow == "/wp-admin/themes.php" ) { global $wp_rewrite; $wp_rewrite->flush_rules(); } }
-
-
Funziona,ma èinefficiente,quindinon dovresti chiamarlo a ogni "init".This works, but it is inefficient, so you should not call it on every `init`.
- 0
- 2010-10-21
- Jan Fabry
-
OK,cancellato afavore di uninit hook.Non capisco davveroperché,ma seguo comunqueiltuo consiglio.OK, deleted in favour of an init hook. Don't really understand why, but taking your advice anyway.
- 0
- 2010-10-21
- jnthnclrk
-
Ilflush delle regole è chiaramente unaparteimportante della creazione ditemi contipi dipostpersonalizzati.Consulta qui e qui .
Qualcuno ha un codice diesempio su come scaricare le regole dafunctions.php?
Sono unpo 'sorpreso che questonon siatrattatonellepagine deitipi dipostpersonalizzati del Codex.
Aggiornamento: hoprovato ad aggiungerlo afunctions.php,manon hafunzionato: