WooCommerce: Zmień domyślną zakładkę Moje konto

Opublikowany: 2022-08-02

Jak wiesz, po zalogowaniu się i przejściu do Mojego Konta, WooCommerce wyświetla zawartość zakładki „Pulpit nawigacyjny” (nazywany również „Punktem końcowym Pulpitu nawigacyjnego”). Karta Pulpit zawiera domyślną opcję „ Witaj Rodolfo Melogli (nie Rodolfo Melogli? Wyloguj się) Z pulpitu nawigacyjnego konta możesz przeglądać swoje ostatnie zamówienia, zarządzać adresami wysyłki i rozliczeń oraz edytować swoje hasło i dane konta. " wiadomość.

A co, jeśli chcemy ustawić inną zakładkę Moje konto jako domyślną po zalogowaniu, na przykład „Zamówienia” lub „Pobrane” dla firmy WooCommerce z cyfrowym pobieraniem? Cóż, istnieje kilka szybkich i niezbyt szybkich rozwiązań, ciesz się!

Dzięki Snippet 2, który znajdziesz poniżej, udało mi się ustawić zakładkę „Pobrane” jako domyślną, gdy użytkownik trafi na stronę Moje konto. Ponadto zachowana jest zakładka „Pulpit nawigacyjny”, w przeciwieństwie do rozwiązania oferowanego przez Snippet 1.

Fragment kodu PHP 1: Przekieruj użytkowników do innej zakładki Moje konto

Przekierowując do innej zakładki, gdy ludzie odwiedzają zakładkę „Dashboard”, po prostu mówimy, że chcemy ukryć całą zawartość karty „Dashboard” . Będziesz także musiał usunąć kartę Pulpit nawigacyjny z menu Moje konto.

/**
 * @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;
	}
}

W tym przypadku wybraliśmy zakładkę „zamówienia”. Możesz znaleźć inne identyfikatory zakładki Moje konto WooCommerce, patrząc na ten inny post.

Fragment kodu PHP 2: Ustaw inną kartę Moje konto jako domyślną (ale zachowaj pulpit nawigacyjny)

Możesz w ogóle nie chcieć ukrywać karty Pulpit nawigacyjny i po prostu ustawić inną jako domyślną . W takim przypadku nie możemy użyć fragmentu przekierowania, ponieważ w przeciwnym razie panel nigdy się nie pojawi.

Niestety na dzień dzisiejszy nie ma czystego rozwiązania (nawet jeśli zmienisz kolejność zakładek Moje konto, zawartość zakładki Dashboard wyświetli się po załadowaniu) – musimy znaleźć obejście.

To obejście:

  1. zastępuje zawartość zakładki „Pulpit nawigacyjny” na wybraną przez Ciebie zawartość zakładki (np. zawartość zakładki „Pobrane”)
  2. zmienia nazwę karty „Pulpit nawigacyjny” na dowolną (w naszym przykładzie „Pobrane”)
  3. ukrywa oryginalną zakładkę „Pobrane”, tak jak już ją mamy
  4. odczytuje zakładkę „Pulpit nawigacyjny” jako pierwszą zakładkę wraz z jej zawartością

Część 1 – Zastąp zawartość karty Pulpit nawigacyjny zawartością karty Pobrane

Pamiętaj, że woocommerce_account_downloads() to funkcja odpowiedzialna za wyświetlanie karty Pobrane. Zawartość innych kart znajdziesz w tym samouczku.

/**
 * @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;
			}
		}
	}
}

Część 2 – Zmień nazwę zakładki Dashboard na Pobrane

/**
 * @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;
}

Część 3 – Usuń oryginalną kartę Pobrane

/**
 * @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;
}

Część 4 – Zakładka Przeczytany pulpit

Uwaga: musisz ponownie zapisać permalinki WordPress, gdy fragment jest aktywny.

/**
 * @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;
}