プラグインWooCommerceのwoocommerce_get_endpoint_urlフィルタの使用方法・解説

概要

woocommerce_get_endpoint_url フィルタは、WooCommerceでエンドポイントのURLを生成する際に使用されるフィルタです。このフィルタを使用することで、特定のエンドポイントのURLをカスタマイズできます。よく使われるシナリオは以下の通りです。

  1. カスタムエンドポイントの追加
  2. エンドポイントのURL構造の変更
  3. 特定の条件に応じたURLの切り替え
  4. ユーザーのロールに基づくURLの変更
  5. 地域(国)に基づくURLリダイレクト
  6. ソーシャルメディアのリンクに基づく特別なエンドポイントの作成

このフィルタは、WooCommerceのバージョンによって利用可能であり、通常はWordPressのバージョンも兼ね備えています。

構文

add_filter( 'woocommerce_get_endpoint_url', 'your_custom_function', 10, 4 );

パラメータ

  • string $url : 生成されたエンドポイントのURL
  • string $endpoint : 対象のエンドポイント名
  • string $id : ユーザーまたは注文のID
  • WC_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/

この関数について質問する


上の計算式の答えを入力してください