WooCommerce: Varsayılan Hesabım Sekmesini Değiştir

Yayınlanan: 2022-08-02

Bildiğiniz gibi, oturum açıp Hesabım'a gittiğinizde, WooCommerce “Dashboard” sekme içeriğini görüntüler (Dashboard “endpoint” olarak da adlandırılır). Gösterge Tablosu sekmesi varsayılan olarak “ Merhaba Rodolfo Melogli (Rodolfo Melogli değil mi? Oturumu kapat) Hesap gösterge tablonuzdan son siparişlerinizi görüntüleyebilir, gönderim ve fatura adreslerinizi yönetebilir ve şifrenizi ve hesap ayrıntılarınızı düzenleyebilirsiniz. " İleti.

Şimdi, oturum açarken varsayılan olarak başka bir Hesabım sekmesini, örneğin “Siparişler” sekmesini veya bir dijital indirme WooCommerce işletmesi için “İndirilenler” sekmesini ayarlamak istersek ne olur? Pekala, birkaç hızlı ve çok hızlı olmayan çözüm var, keyfini çıkarın!

Aşağıda bulacağınız Snippet 2 ile, bir kullanıcı Hesabım sayfasına geldiğinde "İndirilenler" sekmesini varsayılan olarak ayarlayabildim. Ayrıca, Snippet 1'in sunduğu çözümün aksine “Kontrol Paneli” sekmesi korunur.

PHP Parçacığı 1: Kullanıcıları Başka Bir Hesabım Sekmesine Yönlendirin

İnsanlar “Gösterge Tablosu”nu ziyaret ettiğinde başka bir sekmeye yönlendirme yaparak, sadece tüm Gösterge Tablosu sekme içeriğini gizlemek istediğimizi söylüyoruz. Ayrıca Hesabım menüsünden Gösterge Tablosu sekmesini kaldırmanız gerekecektir.

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

Bu durumda “siparişler” sekmesini seçtik. Diğer WooCommerce Hesabım sekme kimliklerini bu diğer gönderiye bakarak bulabilirsiniz.

PHP Snippet 2: Başka Bir Hesabım Sekmesini Varsayılan Olarak Ayarlayın (Ancak Gösterge Tablosunu Saklayın)

Gösterge Tablosu sekmesini hiç gizlemek istemeyebilirsiniz ve yalnızca varsayılan sekme olarak başka bir sekme ayarlayın . Bu durumda, yönlendirme snippet'ini kullanamayız, aksi takdirde Gösterge Tablosu hiçbir zaman gösterilmeyecektir.

Maalesef bugün itibariyle temiz bir çözüm yok (Hesabım sekmelerini yeniden sıralasanız bile Pano sekmesi içeriği yüklendiğinde görünecektir) - bir geçici çözüm bulmamız gerekiyor.

Bu geçici çözüm:

  1. “Kontrol Paneli” sekme içeriğini seçtiğiniz sekme içeriğiyle değiştirir (örn. “İndirilenler” sekme içeriği)
  2. "Kontrol Paneli" sekme başlığını istediğiniz şekilde yeniden adlandırır (örneğimizde "İndirilenler")
  3. orijinal "İndirilenler" sekmesini şu anda elimizde olduğu gibi gizler
  4. İçeriğiyle birlikte “Dashboard” sekmesini ilk sekme olarak okur

Bölüm 1 – Pano sekmesi içeriğini İndirilenler sekmesi içeriğiyle değiştirin

Lütfen woocommerce_account_downloads() işlevinin İndirilenler sekmesinin çıktısını almaktan sorumlu olduğunu unutmayın. Diğer sekmelerin içeriğini bu diğer öğreticide bulabilirsiniz.

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

Bölüm 2 – Pano sekme başlığını İndirilenler olarak yeniden adlandırın

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

Bölüm 3 – Orijinal İndirilenler sekmesini kaldırın

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

Bölüm 4 – Okunan Kontrol Paneli sekmesi

Not: Snippet etkin olduğunda WordPress kalıcı bağlantılarını yeniden kaydetmelisiniz.

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