概要
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/