WooCommerceのマイページのメニューをカスタマイズ

対象の関数:wc_get_account_menu_items

 参考サイト

カスタマイズする

<?php
//マイページのダッシュボードメニューの設定
function custom_account_menu_items() {
	$myorder = array(
		'edit-account'       => __( 'アカウント編集', 'woocommerce' ),
		'dashboard'          => __( 'ダッシュボード', 'woocommerce' ),
		'orders'             => __( '注文履歴', 'woocommerce' ),
		'downloads'          => __( 'ダウンロード', 'woocommerce' ),
		'edit-address'       => __( '住所変更', 'woocommerce' ),
		'payment-methods'    => __( '決済方法', 'woocommerce' ),
		'customer-logout'    => __( 'ログアウトする', 'woocommerce' ),
	);
	return $myorder;
}
add_filter ( 'woocommerce_account_menu_items', 'custom_account_menu_items' );

結果

Snow Monkey のカスタマイズを子テーマではなく、プラグインで行った場合での、WooCommerceのテンプレートファイルをプラグインでオーバーライドする方法

前提条件

Snow Monkeyの v5.0 以上

手順

1.Snow Monkeyのカスタマイズ用プラグインを用意する
プラグインの有効化や初期設定はこちら
(https://snow-monkey.2inc.org/2019/02/04/my-snow-monkey-plugin/)

2.my-snow-monkey.phpを開き下記のコードを記入してください

〜/wp-content/plugins/my-snow-monkey/my-snow-monkey.php

//my-snow-monkeyでwoocommerceのテンプレートをオーバーライド
add_filter( 'woocommerce_locate_template', 'hogehoge_woocommerce_plugin_template', 1, 3 ); //hogehoge_woocommerce_plugin_templateはユニーク
function hogehoge_woocommerce_plugin_template( $template, $template_name, $template_path ) { //hogehoge_woocommerce_plugin_templateはユニーク
    global $woocommerce;
    $_template = $template;
    if ( ! $template_path )
        $template_path = $woocommerce->template_url;

    $plugin_path  = untrailingslashit( plugin_dir_path( __FILE__ ) )  . '/template/woocommerce/';

    // Loo within passed path within the theme - this is priority
    $template = locate_template(
        array(
            $template_path . $template_name,
            $template_name
        )
    );

    if( ! $template && file_exists( $plugin_path . $template_name ) )
        $template = $plugin_path . $template_name;

    if ( ! $template )
        $template = $_template;

    return $template;
}

3. 〜/wp-content/plugins/my-snow-monkey/template/woocommerce/ 配下で
〜/wp-content/plugins/woocommerce/templates/配下のテンプレートを使えるようになりました
ので、
自由でにWooCommerceテンプレートを小テーマで使う感じでオーバーライドできます。

例:送信完了メールをオーバーライドする
WooCommerceのデフォルトは 〜/wp-content/plugins/woocommerce/templates/emails/customer-completed-order.php
my-snow-monkeyプラグインでカスタマイズは 〜/wp-content/plugins/my-snow-monkey/template/woocommerce/emails/customer-completed-order.php

※通常の子テーマでオーバーライドする時は、〜/wp-content/themes/子テーマ名/woocommerce/emails/customer-completed-order.php

Woocommerceのマイページの住所内容を変更した時に走るhook

woocommerce_after_save_address_validation

例:

// define the woocommerce_after_save_address_validation callback 
function action_woocommerce_after_save_address_validation( $user_id, $load_address, $address ) { 
    // make action magic happen here... 
}; 
         
// add the action 
add_action( 'woocommerce_after_save_address_validation', 'action_woocommerce_after_save_address_validation', 10, 3 );

参照元:http://hookr.io/actions/woocommerce_after_save_address_validation/

Woocommerceのcheckout process時のhook

woocommerce_checkout_process

例:

// define the woocommerce_checkout_process callback 
function action_woocommerce_checkout_process( $wccs_custom_checkout_field_pro_process ) { 
    // make action magic happen here... 
}; 
         
// add the action 
add_action( 'woocommerce_checkout_process', 'action_woocommerce_checkout_process', 10, 1 ); 

参照元:http://hookr.io/actions/woocommerce_checkout_process

CloudFrontをWordPressで利用する場合にWhitelist Cookiesに設定しておいたほうが良い内容

CDNとして高速にWebページを表示してくれるCloudFrontですが、Cookieが基本的に受け渡されないため、WordPressにログイン後、作業するプレビューや、MW WP Formの送信、WooCommerceの利用などがうまくいかないです。のでそれらのCookieを普通に扱えるようにするための設定です。

"wordpress_*",
"wp-postpass_*",
"wp-resetpass-*",
"comment_author_*",
"mw-wp-form_*",
"woocommerce_*",
"wp_woocommerce_session_*"