MENU

add_rewrite_endpoint()

add_rewrite_endpoint() は、WordPress のリライトルールにカスタムエンドポイントを追加するための関数です。

エンドポイントとは、URL の特定のパスに追加情報を付加する仕組みのことで、特定のページで追加のコンテンツを表示したり、特別な処理を実行したりするのに役立ちます。この関数を使用することで、プラグインやテーマの機能を拡張し、動的なページを作成できます。

目次

機能の説明

add_rewrite_endpoint() を使うと、WordPress のパーマリンク構造に新しいパラメータを追加できます。
例えば、example.com/mypage/orders/ のように URL に orders を追加し、それに応じたカスタム処理を実装できます。

主な用途

  • 会員ページにカスタムエンドポイントを追加する
  • WooCommerce の「マイアカウントページ」に独自タブを追加する
  • 投稿や固定ページに追加情報を提供する URL を作成する
  • API やカスタムデータを取得するためのエンドポイントを作成する

シンプルなコード例

function custom_add_endpoint() {
    add_rewrite_endpoint('custom-data', EP_PERMALINK);
}
add_action('init', 'custom_add_endpoint');
  • 'custom-data':新しく追加するエンドポイント名
  • EP_PERMALINK:投稿や固定ページの URL 末尾にエンドポイントを適用

このコードを実行後、https://example.com/sample-post/custom-data/ という URL でエンドポイントにアクセスできます。

使い方の説明

基本的な使い方

エンドポイントを追加したら、クエリ変数を取得して処理を実行できます。

function custom_query_vars($vars) {
    $vars[] = 'custom-data';
    return $vars;
}
add_filter('query_vars', 'custom_query_vars');

このコードで custom-data の値が取得できるようになります。

カスタムエンドポイントを処理する

追加したエンドポイントの内容をフックで処理できます。

function custom_template_redirect() {
    global $wp_query;
    if (isset($wp_query->query_vars['custom-data'])) {
        echo 'カスタムエンドポイントの内容';
        exit;
    }
}
add_action('template_redirect', 'custom_template_redirect');

このコードを追加すると、example.com/sample-post/custom-data/ にアクセスした際、画面に "カスタムエンドポイントの内容" が表示されます。

一緒に使うことが多い関連タグ

add_rewrite_rule()

カスタムリライトルールを追加し、より柔軟な URL を設定できる。

add_rewrite_rule('mypage/orders/([0-9]+)/?', 'index.php?pagename=mypage&order_id=$matches[1]', 'top');

query_vars フィルター

カスタムエンドポイントの値を取得するのに必要。

function add_custom_query_vars($vars) {
    $vars[] = 'order_id';
    return $vars;
}
add_filter('query_vars', 'add_custom_query_vars');

追加情報で取得したい場合

現在の URL のエンドポイントを取得する

get_query_var() を使うとエンドポイントの値を取得できる。

$custom_data = get_query_var('custom-data');
if ($custom_data) {
    echo 'カスタムデータ:' . esc_html($custom_data);
}

想定されるトラブル

エンドポイントが反映されない

解決方法

  • 設定 → パーマリンク設定で「変更を保存」をクリックしてリライトルールを更新する
  • flush_rewrite_rules() を実行する
function flush_rewrite_rules_on_activation() {
    custom_add_endpoint();
    flush_rewrite_rules();
}
register_activation_hook(__FILE__, 'flush_rewrite_rules_on_activation');

Q&A

add_rewrite_endpoint() の変更が反映されないのはなぜですか?

パーマリンクの更新が必要です。「設定」→「パーマリンク設定」から「変更を保存」をクリックしてください。

パラメータの値を取得するにはどうすればいいですか?

get_query_var('custom-data') を使用してください。

WooCommerce の「マイアカウント」ページにカスタムタブを追加できますか?

はい、add_rewrite_endpoint() を使えば、/my-account/custom-tab/ のような URL を作成できます。

まとめ

add_rewrite_endpoint() は、WordPress の URL 構造を拡張し、カスタムデータを取得するのに便利な関数です。

クエリ変数を登録し、適切に処理することで、会員ページや API のような動的なページを作成できます。パーマリンクの更新が必要な点に注意して使用しましょう。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次