• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

関数リファレンス/flush rewrite rules

提供: WordPress Codex 日本語版
移動先: 案内検索

説明

既存のリライトルールをフラッシュ(削除し再生成)します。

これは WordPress のリライトルールの自動再生成を可能にするなどのカスタム投稿タイプで使用する際に便利です(通常は新しいカスタム投稿タイプのために手動で実行する必要があります)。しかし、これは非常にコストのかかる操作です。本当に必要である場合のみに実行して下さい。詳細については、使い方のセクションを参照してください。

使い方

重要:

  • リライトルールの再生成はとても高コストな操作です。 'init' フックでこれを実行することを勧めるチュートリアルや例が存在しますが、 バッドプラクティスです
  • リライトルールの再生成は有効化、無効化、または明示的にリライトルールを変更する必要があるときのみにすべきです。 常にトリガされるすべてのフックで実行しないでください。もっと詳細な情報は WP Engineer's post: Custom Post Type and Permalink のコメント欄にあります。
  • 特にプラグインの有効化時には、リライトルールのフラッシュをする前に、カスタム投稿やタクソノミーがちゃんと登録されていることを確かめて下さい。: Activation Checklist for WordPress Plugin Developers
<?php flush_rewrite_rules( $hard ); ?>

パラメーター

$hard
真偽値) (オプション.htaccess も更新するか (ハードフラッシュ) それとも rewrite_rules のみを更新するか (ソフトフラッシュ)。
初期値: true (ハードフラッシュ)

これはプラグインを有効化/無効化するときに、リライトルールをフラッシュする方法です:

register_deactivation_hook( __FILE__, 'flush_rewrite_rules' );
register_activation_hook( __FILE__, 'myplugin_flush_rewrites' );
function myplugin_flush_rewrites() {
	// call your CPT registration function here (it should also be hooked into 'init')
	myplugin_custom_post_types_registration();
	flush_rewrite_rules();
}


これはテーマを有効化するときに、リライトルールをフラッシュする方法です:

/* Flush rewrite rules for custom post types. */
add_action( 'after_switch_theme', 'flush_rewrite_rules' );


もしあなたがテーマを開発しているなら、このコードスニペットを使うことができます。これが記述されたファイルの変更、または48時間毎に、リライトルールをフラッシュします:

// do not use on live/production servers
add_action( 'init','maybe_rewrite_rules' );
function maybe_rewrite_rules() {

	$ver = filemtime( __FILE__ ); // Get the file time for this file as the version number
	$defaults = array( 'version' => 0, 'time' => time() );
	$r = wp_parse_args( get_option( __CLASS__ . '_flush', array() ), $defaults );

	if ( $r['version'] != $ver || $r['time'] + 172800 < time() ) { // Flush if ver changes or if 48hrs has passed.
		flush_rewrite_rules();
		// trace( 'flushed' );
		$args = array( 'version' => $ver, 'time' => time() );
		if ( ! update_option( __CLASS__ . '_flush', $args ) )
			add_option( __CLASS__ . '_flush', $args );
	}

}

更新履歴

新規導入: 3.0

ソースファイル

flush_rewrite_rules()wp-includes/rewrite.php にあります。

関連

http://www.torounit.com/blog/2015/09/02/2077/ - Toro_Unitさん いい加減 flush_rewrite_rules を書くのはやめてください!!


記事

フック

  • フィルター: root_rewrite_rules /en - ブログのルート用に生成されたリライトルールをフィルターする。
  • フィルター: post_rewrite_rules /en - パーマリンク URL 向けに生成されたリライトルールをフィルターする。
  • フィルター: page_rewrite_rules /en - 固定ページ向けに生成されたリライトルールをフィルターする。
  • フィルター: date_rewrite_rules /en - 日付ごとのアーカイブ URL 向けに生成されたリライトルールをフィルターする。
  • フィルター: search_rewrite_rules /en - 検索 URL 向けに生成されたリライトルールをフィルターする。
  • フィルター: comments_rewrite_rules /en - 最新コメントフィード URL 向けに生成されたリライトルールをフィルターする。
  • フィルター: author_rewrite_rules /en - 投稿者アーカイブ URL 向けに生成されたリライトルールをフィルターする。
  • フィルター: rewrite_rules_array /en - すべてのリライトルールを一度にフィルターする。
  • フィルター: {$permastruct}_rewrite_rules /en - タクソノミーやカスタム投稿タイプなどのカスタムパーマストラクト向けのリライトルールを作成・編集するために使える。
  • アクション: generate_rewrite_rules /en - すべてのルールが生成された後に実行される。

関数

  • add_rewrite_tag() / en - WordPress にカスタム変数 (特に、カスタムクエリストリング変数) を認識させるために使える。
  • add_rewrite_rule() / en - 新しいカスタムリライトルールを指定できる。
  • add_rewrite_endpoint() / en - /trackback/ などの新規エンドポイントを追加する。
  • flush_rules() / en - リライトルールを再生成してデータベースに保存する。
  • flush_rewrite_rules() / en - リライトルールを削除して再生成する。
  • generate_rewrite_rules() / en - パーマリンク構造からリライトルールを生成する。
  • add_permastruct() / en - 新規パーマストラクトを追加する。
  • add_feed() / en - /atom1/ のような新規フィードタイプを追加する。


最新英語版: WordPress Codex » Function Reference/flush_rewrite_rules最新版との差分