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()
は、WordPress の URL 構造を拡張し、カスタムデータを取得するのに便利な関数です。
クエリ変数を登録し、適切に処理することで、会員ページや API のような動的なページを作成できます。パーマリンクの更新が必要な点に注意して使用しましょう。
コメント