wp_rewrite()


WordPressのwp_rewrite()関数は、カスタムURLリライトルールを作成、管理、および適用するために使用されます。この関数は、テーマやプラグインでSEOフレンドリーなURLを実現する際に役立ちます。

構文

wp_rewrite( array $rules );
  • $rules (array) — リライトルールの配列を定義します。

例 1: シンプルなリライトルールを追加する

カスタム投稿タイプのために新しいリライトルールを追加します。

<?php
add_action( 'init', function() {
    global $wp_rewrite;
    $wp_rewrite->add_rule( 'custom-type/([^/]+)/?', 'index.php?custom_type=$matches[1]', 'top' );
    $wp_rewrite->flush_rules();
} );
?>

例 2: クエリ変数の登録

カスタムクエリ変数をリライトルールと組み合わせて使用します。

<?php
add_filter( 'query_vars', function( $vars ) {
    $vars[] = 'custom_var';
    return $vars;
} );
?>

例 3: リライトルールの削除

特定のリライトルールを削除する方法です。

<?php
add_action( 'init', function() {
    global $wp_rewrite;
    $rules = $wp_rewrite->wp_rewrite_rules();
    if ( isset( $rules['custom-type/(.+)/?$'] ) ) {
        unset( $rules['custom-type/(.+)/?$'] );
    }
    $wp_rewrite->rules = $rules;
    $wp_rewrite->flush_rules();
} );
?>

例 4: 固定ページ用のリライトルールを作成

特定の固定ページにユニークなURL構造を割り当てます。

<?php
add_action( 'init', function() {
    add_rewrite_rule( '^special-page/?', 'index.php?page_id=' . get_option( 'page_on_front' ), 'top' );
    flush_rewrite_rules();
} );
?>

例 5: 条件付きでリライトルールを追加

ユーザーの役割に基づいてリライトルールを追加します。

<?php
add_action( 'init', function() {
    if ( current_user_can( 'manage_options' ) ) {
        add_rewrite_rule( 'admin-area/?', 'index.php?is_admin_area=true', 'top' );
    }
    flush_rewrite_rules();
} );
?>

注意事項

  • リライトルールを追加または削除した後は、必ずflush_rewrite_rules()を使用してキャッシュをクリアしてください。
  • 複雑なリライトルールを設定する場合は、正規表現に注意してください。

関連機能: