WooCommerceの会員機能は、ショップ用に作られているだけあって、汎用性も高く、会員登録の流れも管理画面で指定できて便利。ネットショップじゃなくても使えるように、少しカスタマイズすればとても簡単に会員サイトが作れる。
目次
WooCommerceをインストール
プラグインから、WooCommerceを探し、インストール
WooCommerceの設定
WooCommerce → 設定 →上級者向け の「アカウントのエンドポイント」にある、不要な項目を削除
ご注文、注文を表示、ダウンロード、住所、決済方法

追加したいtabを設定
例えば、防災メールサイトで、エリア登録をできるようにする場合、「登録しているエリア」というタブがほしい。
add_filter( 'woocommerce_account_menu_items', function( $menus ) {
// メニューを削除する
unset( $menus['orders'] );
unset( $menus['downloads'] );
// 追加
$new = array(
'my-areas' => '登録しているエリア',
);
// $new = array( 'link1' => 'Link 1', 'link2' => 'Link 2' );
$menus = array_slice( $menus, 0, 1, true )
+ $new
+ array_slice( $menus, 1, NULL, true );
return $menus;
} );
add_action( 'init', 'bm_add_endpoint' );
function bm_add_endpoint() {
add_rewrite_endpoint( 'my-areas', EP_PAGES );
}
add_action( 'woocommerce_account_my-areas_endpoint', 'bm_my_account_endpoint_content' );
function bm_my_account_endpoint_content() {
global $current_user;
echo '<h2>登録しているエリア</h2>';
$my_areas = get_user_meta( $current_user->ID, 'my-areas', true );
if( empty( $my_areas )){
echo 'まだ登録されたエリアがありません';
return;
}
?>
<div class="c-responsive-table">
<table>
<thead>
<tr>
<th>エリア</th>
<th>url</th>
<th>登録解除</th>
</tr>
</thead>
<tbody>
<?php
// get all terms
$areas = get_terms( array(
'taxonomy' => 'area',
'number' => 100,
'include' => $my_areas,
'orderby' => 'include',
'hide_empty' => false,
) );
foreach( $areas as $area ){
echo '<tr><th>' . $area->name . '</th>
<td><a href="' . get_term_link( $area ) .'">' . get_term_link( $area ) . '</a></td>
<td>';
// 解除用
echo '</td>
</tr>';
}
?>
</tbody>
</table>
</div>
<?php
}
使っているfilterについてはこちら:
woocommerce_account_menu_items
woocommerce_account_{key}_endpoint
このページに表示したい内容などは、endpoint content内で編集すればOK。
パーマリンク設定を踏む
追加したtabを有効にするために、WordPress管理画面から、設定→パーマリンク設定 を踏む。
おまけ:SNSを使ったログイン
Gianismプラグインを使うと、簡単にSNSでのログインする機能を追加できる。WordPress5.3.2でも、Facebook(2020年3月20日現在、APIバージョンは v6.0)とTwitterは問題なく使えることを確認済み。
WooCommerceで押さえておきたいポイント
- Shop Manager (‘shop_manager’) roleのcapabilityについて
https://github.com/woocommerce/woocommerce/blob/250fcc96a3ea4b1150eb3e94fa45e968ce4340aa/includes/class-wc-install.php#L942 - my accountページの改修
https://rudrastyh.com/woocommerce/my-account-menu.html




