WooCommerce: Modificați fila Contul meu implicit

Publicat: 2022-08-02

După cum știți, odată ce vă conectați și accesați Contul meu, WooCommerce afișează conținutul filei „Tablou de bord” (numit și „punct final”). Fila Tablou de bord conține opțiunea implicită „ Bună ziua, Rodolfo Melogli (nu Rodolfo Melogli? Deconectați-vă) Din tabloul de bord contului dvs. puteți vizualiza comenzile recente, vă puteți gestiona adresele de expediere și de facturare și puteți edita parola și detaliile contului. ” mesaj.

Acum, ce se întâmplă dacă vrem să setăm o altă filă Contul meu ca cea implicită la conectare, de exemplu cea „Comenzi” sau cea „Descărcări” pentru o afacere WooCommerce cu descărcări digitale? Ei bine, există câteva soluții rapide și nu atât de rapide, bucurați-vă!

Cu Fragmentul 2 pe care îl găsiți mai jos, am putut seta fila „Descărcări” ca cea implicită atunci când un utilizator ajunge pe pagina Contul meu. De asemenea, fila „Dashboard” este păstrată, spre deosebire de soluția oferită de Snippet 1.

Fragment PHP 1: Redirecționați utilizatorii către o altă filă Contul meu

Prin redirecționarea către o altă filă atunci când utilizatorii o vizitează pe cea „Tabloul de bord”, spunem pur și simplu că dorim să ascundem întregul conținut al filei Tabloul de bord . De asemenea, va trebui să eliminați fila Tablou de bord din meniul Contul meu.

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

În acest caz, am ales fila „comenzi”. Puteți găsi alte ID-uri ale filei Contul meu WooCommerce uitându-vă la această altă postare.

Fragment PHP 2: setați o altă filă Contul meu ca implicită (dar păstrați tabloul de bord)

Este posibil să nu doriți să ascundeți deloc fila Tablou de bord și pur și simplu să setați o alta ca filă implicită . În acest caz, nu putem folosi fragmentul de redirecționare, deoarece în caz contrar tabloul de bord nu se va afișa niciodată.

Din păcate, de astăzi, nu există o soluție curată (chiar dacă reordonați filele Contul meu, conținutul filei Dashboard se va afișa la încărcare) - trebuie să găsim o soluție.

Această soluție:

  1. înlocuiește conținutul filei „Tablou de bord” cu conținutul filei la alegere (de exemplu, conținutul filei „Descărcări”)
  2. redenumește titlul filei „Tablou de bord” în ceea ce doriți („Descărcări” în exemplul nostru)
  3. ascunde fila originală „Descărcări”, așa cum o avem deja acum
  4. citește fila „Tablou de bord” ca primă filă împreună cu conținutul acesteia

Partea 1 – Înlocuiți conținutul filei Dashboard cu conținutul filei Descărcări

Vă rugăm să rețineți că woocommerce_account_downloads() este funcția responsabilă pentru a afișa fila Descărcări. Puteți găsi conținutul celorlalte file în acest alt tutorial.

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

Partea 2 – Redenumiți titlul filei Dashboard în Descărcări

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

Partea 3 – Eliminați fila Descărcări originale

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

Partea 4 – Fila Tabloul de bord citit

Notă: trebuie să resalvați permalinkurile WordPress odată ce fragmentul este activ.

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