WooCommerce: デフォルトの [マイ アカウント] タブを変更する

公開: 2022-08-02

ご存知のように、ログインしてマイ アカウントに移動すると、WooCommerce は「ダッシュボード」タブのコンテンツ (ダッシュボードの「エンドポイント」とも呼ばれます) を表示します。 ダッシュボード タブには、デフォルトの「 Hello Rodolfo Melogli (Rodolfo Melogli ではありませんか? ログアウトします) " メッセージ。

では、別の [マイ アカウント] タブをログイン時の既定のタブとして設定したい場合はどうすればよいでしょうか? たとえば、「注文」タブや、デジタル ダウンロード WooCommerce ビジネスの「ダウンロード」タブなどです。 さて、簡単な解決策とそうでない解決策がいくつかありますので、お楽しみください!

以下のスニペット 2 を使用すると、ユーザーが [マイ アカウント] ページにアクセスしたときに、[ダウンロード] タブをデフォルトのタブとして設定できました。 また、スニペット 1 で提供されるソリューションとは異なり、[ダッシュボード] タブは保持されます。

PHP スニペット 1: ユーザーを別の [マイ アカウント] タブにリダイレクトする

人々が「ダッシュボード」タブにアクセスしたときに別のタブにリダイレクトすることで、ダッシュボード タブのコンテンツ全体を非表示にしたいと言っているだけです。 また、[マイ アカウント] メニューから [ダッシュボード] タブを削除する必要があります。

/**
 * @snippet       Redirect to new default tab @ WooCommerce My Account
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 6
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */

add_action( 'template_redirect', 'bbloomer_my_account_redirect_to_downloads' );

function bbloomer_my_account_redirect_to_downloads(){
	if ( is_account_page() && empty( WC()->query->get_current_endpoint() ) ) {
		wp_safe_redirect( wc_get_account_endpoint_url( 'orders' ) );
		exit;
	}
}

この場合、「注文」タブを選択しました。 この他の投稿を見ると、他の WooCommerce マイ アカウント タブ ID を見つけることができます。

PHP スニペット 2: 別の [マイ アカウント] タブをデフォルトとして設定 (ただし、ダッシュボードはそのまま)

[ダッシュボード] タブをまったく非表示にせずに、別のタブをデフォルトのタブとして設定することもできます。 この場合、リダイレクト スニペットは使用できません。そうしないと、ダッシュボードが表示されません。

残念ながら、現時点では完全な解決策はありません ([マイ アカウント] タブを並べ替えても、[ダッシュボード] タブのコンテンツはロード時に表示されます)。回避策を見つける必要があります。

この回避策:

  1. 「ダッシュボード」タブのコンテンツを選択したタブのコンテンツ (「ダウンロード」タブのコンテンツなど) に置き換えます。
  2. 「ダッシュボード」タブのタイトルを任意の名前に変更します (この例では「ダウンロード」)
  3. 元の「ダウンロード」タブが既にあるため、非表示にします
  4. 「ダッシュボード」タブをそのコンテンツとともに最初のタブとして読み込みます

パート 1 – [ダッシュボード] タブのコンテンツを [ダウンロード] タブのコンテンツに置き換える

woocommerce_account_downloads() は、[ダウンロード] タブの出力を担当する関数であることに注意してください。 他のタブのコンテンツは、この他のチュートリアルで見つけることができます。

/**
 * @snippet       Replace tab content @ WooCommerce My Account
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 6
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */

add_action( 'woocommerce_account_content', 'bbloomer_myaccount_replace_dashboard_content', 1 );

function bbloomer_myaccount_replace_dashboard_content() {
	remove_action( 'woocommerce_account_content', 'woocommerce_account_content', 10 );
	add_action( 'woocommerce_account_content', 'bbloomer_account_content' );
}

function bbloomer_account_content() {
	global $wp;
	if ( empty( $query_vars = $wp->query_vars ) || ( ! empty( $query_vars ) && ! empty( $query_vars['pagename'] ) ) ) {
		woocommerce_account_downloads();
	} else {
		foreach ( $wp->query_vars as $key => $value ) {
			if ( 'pagename' === $key ) {
				continue;
			}
			if ( has_action( 'woocommerce_account_' . $key . '_endpoint' ) ) {
				do_action( 'woocommerce_account_' . $key . '_endpoint', $value );
				return;
			}
		}
	}
}

パート 2 – ダッシュボード タブのタイトルをダウンロードに変更

/**
 * @snippet       Rename tab @ WooCommerce My Account
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 6
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */

add_filter( 'woocommerce_account_menu_items', 'bbloomer_myaccount_rename_dashboard_tab_title', 9999 );
 
function bbloomer_myaccount_rename_dashboard_tab_title( $items ) {
   $items['dashboard'] = 'Downloads';
   return $items;
}

パート 3 – 元のダウンロード タブを削除する

/**
 * @snippet       Remove tab @ WooCommerce My Account
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 6
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */

add_filter( 'woocommerce_account_menu_items', 'bbloomer_myaccount_remove_orders_tab', 9999 );
 
function bbloomer_myaccount_remove_orders_tab( $items ) {
   unset( $items['downloads'] );
   return $items;
}

パート 4 – Readd ダッシュボード タブ

注: スニペットがアクティブになったら、WordPress のパーマリンクを再度保存する必要があります。

/**
 * @snippet       Readd Dashboard tab @ WooCommerce My Account
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 6
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */

add_action( 'init', 'bbloomer_myaccount_add_dashboard_endpoint' );
  
function bbloomer_myaccount_add_dashboard_endpoint() {
    add_rewrite_endpoint( 'mydashboard', EP_ROOT | EP_PAGES );
}

add_filter( 'query_vars', 'bbloomer_query_vars', 0 );
  
function bbloomer_query_vars( $vars ) {
    $vars[] = 'mydashboard';
    return $vars;
}
  
add_filter( 'woocommerce_account_menu_items', 'bbloomer_add_new_dashboard_to_my_account' );
  
function bbloomer_add_new_dashboard_to_my_account( $items ) {
	$items = array( 'mydashboard' => 'Dashboard' ) + $items;
    return $items;
}