Wie regelt man nur die Aktivierung oder Deaktivierung von Themen?
5 Antworten
- Stimmen
-
- 2013-10-31
Während die hierbereitgestellten Lösungennochfunktionieren,hat sich WordPress seitdem weiterentwickelt undbietet jetzt (seit 3.3,glaubeich) direkte Hooksfür die Themenaktivierung.
after_switch_theme
wirdbei Aktivierung des Themas ausgelöst undswitch_theme
vor dem Deaktiviereneines alten Themas.Daher lautet die aktuelle Antwort:
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
dieser Code (entnommen aus Ozhs Kommentar hier mit kleinem Zusatz) kann Ihnen helfen.
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:
Fügen Sie diese Funktion Ihrer
functions.php
hinzu.Diese Funktion wirdnurgeladen,wenn das Thema aktiviertist (daseinzige Mal,wenn$_GET['activated']
eingestelltist).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
Ichbin mirnicht sicher,obichbei Deaktivierung spülen soll,aber die Aktivierungist ziemlicheinfach.
Richten Siein Ihrer Datei
functions.php
einen Code wie denfolgendenein: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');
Dies wirdjedes Mal ausgeführt,aber die Regeln werdennureinmalgelöscht,da Siein Ihrer Optionstabelleein Flag setzen,um zu verhindern,dass siejedes Malgelöscht werden.
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.
-
Dieser Code hat dieganze Seitegetötet.That code killed the whole page.
- 0
- 2010-10-21
- jnthnclrk
-
Habeesgerade aufmeinereigenen Seitegetestet ...es hatnichtsgetötet.Just tested it on my own site ... it didn't kill anything.
- 0
- 2010-10-21
- EAMann
-
Wahrscheinlichein Fehler aufmeiner Seite.Obwohlich die Ozh-Lösungbevorzuge.Probably an error on my side. Although I prefer the Ozh solution.
- 0
- 2010-10-21
- jnthnclrk
-
Ichbevorzuge auch Ozhs Lösung ... dereinzige Grund,warumich diesgepostet habe,war die Antwort auf Ihren Kommentar "Nein,das hatnichtfunktioniert".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
Ichmusste die Antwort von Bangbambang ändern,damit diesfunktioniert.
Der Code sollte lauten:
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(); } }
-
-
Diesfunktioniert,ist aberineffizient,daher sollten Sieesnichtbei jedem "init" aufrufen.This works, but it is inefficient, so you should not call it on every `init`.
- 0
- 2010-10-21
- Jan Fabry
-
OK,zugunsteneines Init-Hooksgelöscht.Ich verstehenicht wirklich warum,aberbefolge deinen Rattrotzdem.OK, deleted in favour of an init hook. Don't really understand why, but taking your advice anyway.
- 0
- 2010-10-21
- jnthnclrk
-
Das Löschen von Regelnisteindeutigein wichtiger Bestandteilbeim Erstellen von Themenmit benutzerdefinierten Beitragstypen.Siehe hier und hier .
Hatjemandeinen Beispielcode zum Löschen von Regeln ausfunctions.php?
Ichbin ein wenig überrascht,dass diesnicht auf denbenutzerdefinierten Postseiten des Codexbehandelt wird.
Update: Ich habe versucht,dies zufunctions.php hinzuzufügen,aberes hatnichtfunktioniert: