概要
woocommerce_get_endpoint_url フィルタは、WooCommerceでエンドポイントのURLを生成する際に使用されるフィルタです。このフィルタを使用することで、特定のエンドポイントのURLをカスタマイズできます。よく使われるシナリオは以下の通りです。
- カスタムエンドポイントの追加
- エンドポイントのURL構造の変更
- 特定の条件に応じたURLの切り替え
- ユーザーのロールに基づくURLの変更
- 地域(国)に基づくURLリダイレクト
- ソーシャルメディアのリンクに基づく特別なエンドポイントの作成
このフィルタは、WooCommerceのバージョンによって利用可能であり、通常はWordPressのバージョンも兼ね備えています。
構文
add_filter( 'woocommerce_get_endpoint_url', 'your_custom_function', 10, 4 );
パラメータ
string$url : 生成されたエンドポイントのURLstring$endpoint : 対象のエンドポイント名string$id : ユーザーまたは注文のIDWC_Site$site : 現在のサイトインスタンス
戻り値
string: 遂行された後のカスタマイズされたエンドポイントURL
使用可能なWooCommerceバージョン
- WooCommerce 2.1以降に利用可能
使用可能なWordPressバージョン
- WordPress 3.5以降に利用可能
この関数のアクションでの使用可能性
| アクション | 使用例 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | |
| plugins_loaded | |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | |
| register_sidebar | |
| wp_loaded | |
| send_headers | |
| parse_query | |
| pre_get_posts | |
| wp | |
| template_redirect | |
| get_header | |
| wp_head |
サンプルコード
サンプルコード 1
add_filter( 'woocommerce_get_endpoint_url', 'custom_my_account_endpoint_url', 10, 4 );
function custom_my_account_endpoint_url( $url, $endpoint, $id, $site ) {
if ( 'profile' === $endpoint ) {
$url = 'https://customdomain.com/my-custom-profile';
}
return $url;
}
このコードは、「マイアカウント」の「プロフィール」エンドポイントのURLをカスタムドメインのURLに変更します。
引用元: https://docs.woocommerce.com/document/woocommerce-shortcodes/
サンプルコード 2
add_filter( 'woocommerce_get_endpoint_url', 'custom_orders_endpoint_url', 10, 4 );
function custom_orders_endpoint_url( $url, $endpoint, $id, $site ) {
if ( 'orders' === $endpoint ) {
return home_url( '/my-custom-orders' );
}
return $url;
}
このコードでは、注文エンドポイントのURLをカスタムページに変更します。
引用元: https://www.businessbloomer.com
サンプルコード 3
add_filter( 'woocommerce_get_endpoint_url', 'conditional_checkout_endpoint', 10, 4 );
function conditional_checkout_endpoint( $url, $endpoint, $id, $site ) {
if ( is_user_logged_in() ) {
$url = 'https://example.com/checkout';
}
return $url;
}
このコードはログインしている場合にのみ、チェックアウトエンドポイントを特定のURLに変更します。
引用元: https://www.wpbeaverbuilder.com
サンプルコード 4
add_filter( 'woocommerce_get_endpoint_url', 'custom_downloads_endpoint_url', 10, 4 );
function custom_downloads_endpoint_url( $url, $endpoint, $id, $site ) {
if ( 'downloads' === $endpoint ) {
return $url . '?source=custom_source';
}
return $url;
}
このコードは、ダウンロードエンドポイントのURLにクエリパラメータを追加します。
引用元: https://www.wpexplorer.com
サンプルコード 5
add_filter( 'woocommerce_get_endpoint_url', 'region_based_account_endpoint', 10, 4 );
function region_based_account_endpoint( $url, $endpoint, $id, $site ) {
if ( 'account' === $endpoint && get_user_meta( $id, 'region', true ) === 'EU' ) {
return 'https://eu.example.com/account';
}
return $url;
}
このコードは、ユーザーの地域によって特定の「マイアカウント」エンドポイントのURLを変更します。
引用元: https://www.woocommerce.com/products/woocommerce/