add_rewrite_endpoint()


WordPress関数add_rewrite_endpoint()は、リライトルールにエンドポイントを追加するために使用されます。このエンドポイントは、特定のURL構造で追加のクエリ変数を処理するのに役立ちます。

構文

add_rewrite_endpoint( string $name, int $places );

引数の説明

  • $name (string) — エンドポイントの名前。クエリ変数として利用されます。
  • $places (int) — エンドポイントを追加する位置を指定するフラグ。使用可能な値は次の通りです。
    • EP_PERMALINK — パーマリンク構造に追加します。
    • EP_ALL — 全ての場所に追加します。

例 1: カスタムエンドポイントの追加

次のコードは、「my-endpoint」というエンドポイントをパーマリンク構造に追加します。

add_action( 'init', function() {
    add_rewrite_endpoint( 'my-endpoint', EP_PERMALINK );
} );

例 2: エンドポイントデータの取得

以下のコードは、エンドポイント「my-endpoint」に関連するクエリ変数の値を取得します。

add_action( 'template_redirect', function() {
    if ( get_query_var( 'my-endpoint' ) ) {
        echo esc_html( get_query_var( 'my-endpoint' ) );
    }
} );

例 3: 管理画面でエンドポイントのフラッシュ

リライトルールを更新するため、エンドポイントを追加した後に実行するコードです。

add_action( 'after_switch_theme', function() {
    flush_rewrite_rules();
} );

例 4: 特定の条件でエンドポイントの内容を変更

以下のコードは、特定の条件に基づいてエンドポイントの内容を動的に変更します。

add_action( 'template_redirect', function() {
    if ( is_singular( 'post' ) && get_query_var( 'my-endpoint' ) ) {
        echo 'この投稿にはカスタムエンドポイントが存在します。';
    }
} );

例 5: 複数エンドポイントの登録

複数のエンドポイントを一度に追加する場合の例です。

add_action( 'init', function() {
    add_rewrite_endpoint( 'profile', EP_ALL );
    add_rewrite_endpoint( 'settings', EP_ALL );
} );

注意事項

  • 新しいエンドポイントを追加した後は必ずflush_rewrite_rules()を実行してください。
  • クエリ変数にアクセスする際はget_query_var()を使用し、適切なエスケープを行うことをお勧めします。

関連機能: