WooCommerce: изменить вкладку «Моя учетная запись» по умолчанию

Опубликовано: 2022-08-02

Как вы знаете, после того, как вы войдете в систему и перейдете в «Моя учетная запись», WooCommerce отобразит содержимое вкладки «Панель инструментов» (также называемую «конечной точкой» панели инструментов). На вкладке «Панель инструментов» по ​​умолчанию отображается « Здравствуйте, Родольфо Мелогли (не Родольфо Мелогли? Выйти). На панели управления учетной записи вы можете просматривать свои последние заказы, управлять адресами доставки и выставления счетов, а также редактировать свой пароль и данные учетной записи. " сообщение.

Теперь, что если мы хотим установить другую вкладку «Моя учетная запись» в качестве вкладки по умолчанию при входе в систему, например, «Заказы» или «Загрузки» для бизнеса цифровых загрузок 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, посмотрев этот другой пост.

Фрагмент PHP 2: установить другую вкладку «Моя учетная запись» по умолчанию (но сохранить панель инструментов)

Вы можете вообще не скрывать вкладку Dashboard и просто установить другую вкладку по умолчанию . В этом случае мы не можем использовать фрагмент перенаправления, так как в противном случае панель инструментов никогда не будет отображаться.

К сожалению, на сегодняшний день нет чистого решения (даже если вы измените порядок вкладок «Моя учетная запись», содержимое вкладки «Панель мониторинга» будет отображаться при загрузке) — нам нужно найти обходной путь.

Этот обходной путь:

  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. Вкладка «Чтение панели управления»

Примечание: вы должны повторно сохранить постоянные ссылки 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;
}