概要
woocommerce_get_$PAGE_page_permalink フィルタは、WooCommerceのページのパーマリンクをカスタマイズするために使用されるフックです。このフィルタは、特定のページのパーマリンクが生成される際に介入することで、開発者が動的にURLを変更することを可能にします。主に以下のような機能を実装する際に使用されます:
- パーマリンク構造のカスタマイズ
- SEO向上のためのURL変更
- 特定の条件に基づいたリダイレクト設定
- 地域や言語に応じたローカライズされたURLの生成
- テスト環境と本番環境でのURLの切り替え
- プラグインやテーマに応じた柔軟なURL対応
このフィルタは、WooCommerceのバージョン3.0以降およびWordPressのバージョン4.0以降で使用可能です。
構文
add_filter( 'woocommerce_get_$PAGE_page_permalink', 'your_custom_function', 10, 2 );
パラメータ
string$permalink: 現在のパーマリンクint$page_id: ページのID
戻り値
string: カスタマイズされたパーマリンク
この関数のアクションでの使用可能性
| アクション | 使用可能性 |
|---|---|
| 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_cart_page_permalink', function( $permalink, $page_id ) {
return 'https://example.com/custom-cart';
}, 10, 2 );
このコードは、WooCommerceのカートページのパーマリンクをカスタマイズし、指定されたURLに変更します。著作権フリーのサンプルです。
2. 動的なパーマリンク変更
add_filter( 'woocommerce_get_checkout_page_permalink', function( $permalink, $page_id ) {
if ( is_user_logged_in() ) {
return 'https://example.com/checkout/member';
}
return 'https://example.com/checkout/guest';
}, 10, 2 );
このサンプルでは、ユーザーのログイン状態に応じて異なるチェックアウトページのURLを返します。著作権フリーのサンプルです。
3. リダイレクト用のURL変更
add_filter( 'woocommerce_get_account_page_permalink', function( $permalink, $page_id ) {
return 'https://example.com/my-account?ref=homepage';
}, 10, 2 );
このフィルタでは、マイアカウントページのパーマリンクにクエリパラメータを追加します。著作権フリーのサンプルです。
4. URLに地域情報を追加
add_filter( 'woocommerce_get_product_page_permalink', function( $permalink, $page_id ) {
return $permalink . '?region=JP';
}, 10, 2 );
このコードでは、商品ページのパーマリンクに地域情報を付加します。著作権フリーのサンプルです。
5. 環境に応じたパーマリンク設定
add_filter( 'woocommerce_get_checkout_page_permalink', function( $permalink, $page_id ) {
if ( defined( 'WP_ENV' ) && WP_ENV === 'development' ) {
return 'https://dev.example.com/checkout';
}
return 'https://example.com/checkout';
}, 10, 2 );
このサンプルでは、開発環境と本番環境で異なるチェックアウトページのURLを提供しています。著作権フリーのサンプルです。