WooCommerce: تغيير علامة التبويب "حسابي الافتراضي"

نشرت: 2022-08-02

كما تعلم ، بمجرد تسجيل الدخول والانتقال إلى "حسابي" ، يعرض WooCommerce محتوى علامة التبويب "لوحة المعلومات" (وتسمى أيضًا "نقطة نهاية" لوحة المعلومات). تتميز علامة التبويب "لوحة المعلومات" بـ " Hello Rodolfo Melogli (وليس Rodolfo Melogli؟ تسجيل الخروج) من لوحة معلومات حسابك ، يمكنك عرض طلباتك الأخيرة ، وإدارة عناوين الشحن والفواتير ، وتعديل كلمة المرور وتفاصيل الحساب. " رسالة.

الآن ، ماذا لو أردنا تعيين علامة تبويب "حسابي" أخرى على أنها علامة التبويب الافتراضية عند تسجيل الدخول ، على سبيل المثال علامة "الطلبات" أو "التنزيلات" الخاصة بأعمال WooCommerce للتنزيل الرقمي؟ حسنًا ، هناك حلان سريعان وغير سريعان ، استمتع!

باستخدام Snippet 2 التي تجدها أدناه ، تمكنت من تعيين علامة التبويب "التنزيلات" على أنها علامة التبويب الافتراضية عند وصول المستخدم إلى صفحة "حسابي". أيضًا ، يتم الاحتفاظ بعلامة التبويب "لوحة التحكم" ، على عكس الحل الذي يقدمه Snippet 1.

مقتطف PHP 1: إعادة توجيه المستخدمين إلى علامة تبويب حسابي أخرى

من خلال إعادة التوجيه إلى علامة تبويب أخرى عندما يزور الأشخاص واحدة "Dashboard" ، فإننا نقول ببساطة إننا نرغب في إخفاء محتوى علامة تبويب Dashboard بالكامل . ستحتاج أيضًا إلى إزالة علامة التبويب لوحة التحكم من قائمة حسابي.

/**
 * @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 My Account أخرى من خلال النظر في هذا المنشور الآخر.

PHP Snippet 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 - علامة التبويب Readd Dashboard

ملاحظة: يجب إعادة حفظ روابط 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;
}