テーマのアクティブ化または非アクティブ化のみに関するルールをフラッシュするにはどうすればよいですか?
5 回答
- 投票
-
- 2013-10-31
ここで提供されるソリューションは引き続き機能しますが、WordPressはそれ以来進化し、現在(3.3以降)、テーマをアクティブ化するための直接フックを提供しています.
after_switch_theme
は、テーマのアクティブ化時に起動し、switch_theme
.したがって、最新の答えは次のとおりです.
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
このコード( Ozhのコメントはこちら少し追加して)あなたを助けるかもしれません.
function reflush_rules() { if ( is_admin() && isset($_GET['activated'] ) && $pagenow == "themes.php" ) { global $wp_rewrite; $wp_rewrite->flush_rules(); } } add_action('init', 'reflush_rules');
編集:
この関数を
functions.php
に追加します.この関数は、テーマがアクティブ化された場合にのみロードされます($_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
非アクティブ化時のフラッシュについてはよくわかりませんが、アクティブ化は非常に簡単です.
functions.php
ファイルで、次のようなコードを設定します.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');
これは毎回実行されますが、オプションテーブルにフラグを設定して毎回フラッシュされないようにするため、ルールは1回だけフラッシュされます.
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.
-
そのコードはページ全体を殺しました.That code killed the whole page.
- 0
- 2010-10-21
- jnthnclrk
-
自分のサイトでテストしただけです...何も殺しませんでした.Just tested it on my own site ... it didn't kill anything.
- 0
- 2010-10-21
- EAMann
-
おそらく私の側のエラーです.私はOzhソリューションを好みますが.Probably an error on my side. Although I prefer the Ozh solution.
- 0
- 2010-10-21
- jnthnclrk
-
私はOzhのソリューションも好みます...私がこれを投稿した唯一の理由は、あなたの「いいえ、それはうまくいきませんでした」というコメントへの応答でした.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
これを機能させるには、bangbambangの回答を変更する必要がありました.
コードは次のようになります:
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(); } }
-
-
これは機能しますが、非効率的であるため、すべての `init`で呼び出すべきではありません.This works, but it is inefficient, so you should not call it on every `init`.
- 0
- 2010-10-21
- Jan Fabry
-
OK、initフックを優先して削除しました.理由はよくわかりませんが、とにかくアドバイスを受けてください.OK, deleted in favour of an init hook. Don't really understand why, but taking your advice anyway.
- 0
- 2010-10-21
- jnthnclrk
-
フラッシュルールは、カスタム投稿タイプでテーマを作成する上で明らかに重要な部分です.こちらとここ.
Functions.phpからルールをフラッシュする方法のサンプルコードはありますか?
これがコーデックスのカスタム投稿タイプのページでカバーされていないことに少し驚いています.
更新:これをfunctions.phpに追加しようとしましたが、機能しませんでした: