تغییر زبانه‌های محصول در ووکامرس-شخصی سزی زبانه های محصول در ووکامرس

افزودن،حذف کردن و شخصی سازی زبانه یا تب‌ها در صفحه محصول ووکامرس

گاهی اوقات در تم‌های ووکامرس لازمه که نام تب‌ها موجود در صفحه محصول را تغییر بدیم. مثلا اگر شما برای یک کسب و کاری در حوزه‌ی فروش ماشین فعالیت می‌کنه وب سایت طراحی می‌کنید شاید مشتری شما دوست داشته باشه به جای استفاده از اطلاعات بیشتر برای اطلاعات و جزئیات ماشین از آپشن‌ها یا حزئیات ماشین استفاده کنه و یا حتی یکی از تب‌ها را حذف کنه. برای این کار می‌تونید یک تابع با یک پارامتر تعریف کنید و در آن تابع تغییرات مورد نظر خود را روی آرایه‌ی ورودی که همان تب‌های مورد نظر است را اعمال و تابع مورد نظر را در فیلتر woocommerce_product_tabs فراخوانی نمائید.

شما باید این کدها را در فایل functions.php تم خود قرار دهید اگر تم شما را شرکت دیگری طراحی کرده است برای جلوگیری از حذف کدهای اضافه شده به تابع functions.php بهتر است یک تم فرزند از قالب یا تم اصلی ایجاد نمائید و یا کدها را با استفاده از افزونه‌ی Code Snippets به قالب خود اضافه نمائید.

حذف تب‌های محصول در قالب ووکامرس

برای حذف تب مورد نظر را در تابعی که تعریف کردید با استفاده از تابع unset حذف نمائید.

/**
 * Remove product data tabs
 */
add_filter( 'woocommerce_product_tabs', 'woo_remove_product_tabs', 98 );

function woo_remove_product_tabs( $tabs ) {

    unset( $tabs['description'] );      	// Remove the description tab
    unset( $tabs['reviews'] ); 			// Remove the reviews tab
    unset( $tabs['additional_information'] );  	// Remove the additional information tab

    return $tabs;
}

تغییر نام تب های محصول در قالب ووکامرس

برای تغییر نام title آرایه‌ی تب‌ها را در تابعی که تعریف کردید تغییر دهید.

/**
 * Rename product data tabs
 */
add_filter( 'woocommerce_product_tabs', 'woo_rename_tabs', 98 );
function woo_rename_tabs( $tabs ) {

	$tabs['description']['title'] = __( 'More Information' );		// Rename the description tab
	$tabs['reviews']['title'] = __( 'Ratings' );				// Rename the reviews tab
	$tabs['additional_information']['title'] = __( 'Product Data' );	// Rename the additional information tab

	return $tabs;

}

تغییر چیدمان تب‌ها در محصول در ووکامرس

جهت ایجاد تغییر چیدمان تب‌ها اولویت تب‌ها را در آرایه‌ی ورودی تابع تغییر دهید.

/**
 * Reorder product data tabs
 */
add_filter( 'woocommerce_product_tabs', 'woo_reorder_tabs', 98 );
function woo_reorder_tabs( $tabs ) {

	$tabs['reviews']['priority'] = 5;			// Reviews first
	$tabs['description']['priority'] = 10;			// Description second
	$tabs['additional_information']['priority'] = 15;	// Additional information third

	return $tabs;
}

شخصی سازی تب‌های ووکامرس در صفحه‌ی محصول

برای شخصی سازی تب‌های ووکامرس در صفحه‌ی محصول یک تابع تعریف کنید و در تابع تعریف شده تابع دیگری را به callback تب مورد نطر تخصیص دهید و سپس تابع دوم را تعریف کنید و محتوای مورد نظر خود را در این تابع چاپ کنید.

/**
 * Customize product data tabs
 */
add_filter( 'woocommerce_product_tabs', 'woo_custom_description_tab', 98 );
function woo_custom_description_tab( $tabs ) {

	$tabs['description']['callback'] = 'woo_custom_description_tab_content';	// Custom description callback

	return $tabs;
}

function woo_custom_description_tab_content() {
	echo '<h2>Custom Description</h2>';
	echo '<p>Here\'s a custom description</p>';
}

افزودن تب جدید در صفحه‌ی محصولات ووکامرس

برای این که یک تب به تبهای محصول ووکامرس اضافه کنید یک تابع تعریف کنید و در این تابع یک عضو دیگر به آرایه‌ی tabs اضافه نمائید. عضو اضافه شده باید یک آرایه باشد که شامل سه عضو است که عبارتند ار title که عنوان تب مورد نظر است، priority تعیین کننده‌ی نحوه‌ی چیدمان تب مورد نظر و callback تابعی که محتوی تب مورد نظر را تولید و چاپ می‌کند. سپس تابع مشخص شده در عضو callback را تعریف کرده و محتوای مورد نظر خود را در آن چاپ نمائید.

تکه کد زیر این کارها را انجام می‌دهد:

/**
 * Add a custom product data tab
 */
add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' );
function woo_new_product_tab( $tabs ) {
	
	// Adds the new tab
	
	$tabs['test_tab'] = array(
		'title' 	=> __( 'New Product Tab', 'woocommerce' ),
		'priority' 	=> ۵۰,
		'callback' 	=> 'woo_new_product_tab_content'
	);

	return $tabs;

}
function woo_new_product_tab_content() {

	// The new tab content

	echo '<h2>New Product Tab</h2>';
	echo '<p>Here\'s your new product tab.</p>';
	
}

تب اطلاعات اضافی

این تب در محصولات ووکامرس زمانی نمایش داده می‌شود که محصول مورد نظر شامل اطلاعات وزن، اندازه و یا شامل ویژگی‌های دیگری باشد که این ویژگی‌ها در صفحه‌ی محصول قابل نمایش است. در صورتی که محصول مورد نظر شامل هیچ یک از موارد مذکور نباشد موقع شخصی سازی این تب خطای زیر را دریافت می کنید.

Warning: call_user_func() expects parameter 1 to be a valid callback, no array or string given in /mysite/wp-content/plugins/woocommerce/templates/single-product/tabs/tabs.php on line ۳۵

برای جلوگیری از دریافت این خطا می‌توانید وجود و عدم وجود ویژگی‌های محصول را با استفاده از توابع زیر چک نمائید.

  • has_attributes()
  • has_dimensions()
  • has_weight()

اولین تابع چک ویژگی‌هایی که توسط کاربر به محصول اضافه شده را چک می‌کند، دومین تابع وجود اندازه‌های را ببرسی می‌کند و سومین تابع وجود وزن محصول را بررسی کرده و اگر ویژگی‌ها موجود باشد true و در غیر این صورت false بر می‌گرداند.

به پیاده سازی این روش در کد زیر دقت نمائید.

/**
 * Check if product has attributes, dimensions or weight to override the call_user_func() expects parameter 1 to be a valid callback error when changing the additional tab
 */
add_filter( 'woocommerce_product_tabs', 'woo_rename_tabs', 98 );

function woo_rename_tabs( $tabs ) {

	global $product;
	
	if( $product->has_attributes() || $product->has_dimensions() || $product->has_weight() ) { // Check if product has attributes, dimensions or weight
		$tabs['additional_information']['title'] = __( 'Product Data' );	// Rename the additional information tab
	}
 
	return $tabs;
 
} 

منبع: woocommerce.com

دیدگاه خود را بنویسید