概要
woocommerce_account_navigation
フィルタは、WooCommerceの「マイアカウント」ページにおけるナビゲーションメニューをカスタマイズするために使用されます。このフィルタを使うことで、既存のメニュー項目を変更したり、新しい項目を追加したり、特定の項目を削除することが可能です。
このフィルタは、以下のような機能を実装する際によく使われます:
1. メニュー項目の追加
2. メニュー項目の削除
3. メニューの順序変更
4. ユーザー権限に基づくメニューの表示制御
5. 特定の条件に基づくメニューの表示/非表示
6. 外部リンクやカスタムリンクをメニューに追加
フィルタの概要
- 構文:
add_filter( 'woocommerce_account_navigation', 'callback_function' );
- パラメータ:
$items
(配列) – メニュー項目の配列。 - 戻り値: 変更されたメニュー項目の配列。
- 使用可能なプラグインWooCommerceのバージョン: 2.6 以降
- WordPressのバージョン: 4.0 以降
サンプルコード
サンプルコード1: メニュー項目の追加
add_filter( 'woocommerce_account_navigation', 'add_custom_menu_item' );
function add_custom_menu_item( $items ) {
$items['custom'] = 'カスタムページ';
return $items;
}
このサンプルコードは、WooCommerceの「マイアカウント」ページに「カスタムページ」という新しいメニュー項目を追加します。
サンプルコード2: メニュー項目の削除
add_filter( 'woocommerce_account_navigation', 'remove_menu_item' );
function remove_menu_item( $items ) {
unset( $items['downloads'] );
return $items;
}
このサンプルコードは、ダウンロード項目を「マイアカウント」ナビゲーションメニューから削除します。
サンプルコード3: メニューの順序変更
add_filter( 'woocommerce_account_navigation', 'reorder_menu_items' );
function reorder_menu_items( $items ) {
$items = array(
'dashboard' => 'ダッシュボード',
'orders' => '注文履歴',
'custom' => 'カスタムページ',
'downloads' => 'ダウンロード'
);
return $items;
}
このサンプルコードは、メニュー項目の順序を変更して、カスタムページを特定の位置に移動します。
サンプルコード4: 権限に基づくメニュー表示制御
add_filter( 'woocommerce_account_navigation', 'conditionally_display_menu_item' );
function conditionally_display_menu_item( $items ) {
if ( current_user_can( 'administrator' ) ) {
$items['admin'] = '管理者専用';
}
return $items;
}
このサンプルコードは、ユーザーが管理者の場合のみ「管理者専用」というメニュー項目を表示します。
サンプルコード5: 外部リンクの追加
add_filter( 'woocommerce_account_navigation', 'add_external_link' );
function add_external_link( $items ) {
$items['external'] = '<a href="https://example.com">外部リンク</a>';
return $items;
}
このサンプルコードは、「マイアカウント」ページに外部リンクを持つ新しいメニュー項目を追加します。
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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 |
このフィルタは、主に「wp_loaded」や「init」などのタイミングで使用されることが多いですが、詳細は個々の実装次第です。