همانطور که میدانید صفحه تک محصول (single-product.php) دارای تبهای (زبانههای) مختلفی نظیر اطلاعات، اطلاعات تکمیلی و… میباشد. قرار است در این مقاله، ویرایش زبانهها در برگه تک محصول را بررسی و به شما آموزش دهیم. شما پس از این آموزش قادر خواهید بود، زبانه جدید اضافه نمایید یا زبانههای قبلی و موجود را ویرایش کنید.
نکته: شما به منظور استفاده از کدهای هر بخش باید آن را در فایل functions.php پوسته فرزند قرار دهید یا از افزونه Snippets استفاده نمایید. به خاطر داشته باشید کدها را در functions.php پوسته والد قرار ندهید، چون با بهروزرسانی پوسته این کدها از بین خواهند رفت.

آنچه در این آموزش میخوانید
حذف زبانهها
در صورتی که میخواهید یک یا چند زبانه در صفحه تک محصول را حذف نمایید، کافی است از قطعه کد زیر استفاده کنید.
/**
* 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;
}
تغییر نام زبانهها
در صورتی که میخواهید نام یک یا چند زبانه در صفحه تک محصول را تغییر دهید، قطعه کد زیر به شما کمک خواهد کرد تا این کار را به راحتی و بدون مشکل انجام دهید.
/**
* 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;
}
سفارشیسازی یک زبانه
در صورتی که میخواهید یک زبانه را سفارشیسازی کنید. به عنوان مثال تابع فراخوانی زبانه را تغییر داده و تابع مورد نظر خود را اجرا کنید، قطعه کد زیر به شما کمک خواهد کرد تا این کار را به راحتی انجام دهید.
/**
* 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>';
}
افزودن یک زبانه دلخواه
اگر میخواهید یک تب (زبانه) جدید و دلخواه به بخش زبانهها اضافه کنید، کافی است از قطعه کد زیر استفاده کنید. همانطور که در کد زیر مشخص است، یک زبانه از سه بخش اصلی عنوان (title)، اولویت (priority) و تابع اجرا (callback) تعریف میشود. در اینجا تابع woo_new_product_tab_content تابع مربوط به callback زبانه test_tab بوده و محتوای آن در زبانه test_tab نمایش داده خواهد شد.
/**
* 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' => 50,
'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()
/**
* 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
با سلام
جهت مدیریت حمل و نقل در افزونه دکان نیاز به راهنمایی دارم .
میخوام هر فروشنده ای بتونه مبلغ حمل و نقل رو برای خودش شخصی سازی کنه .مثلا فروشندهx بتونه هزینه ۳۰۰۰۰ تومن رو برای حمل کالای خواب ثبت کنه
لطفا کمکم کنید
سلام
مدیریت حمل و نقل در افزونه دکان به راحتی برای هر فروشنده قابل انجام هستش . شما کافیه به بخش پیکربندی ووکامرس و تب حمل و نقل برید و اونجا حمل و نقل دکان را فعال کنین تا فروشندهها بتونن به راحتی حمل و نقل خودشون را براساس شهرها و یا حتی کشورها اضافه کنن.
موفق و پیروز باشید.
سلام نمایش زبانه های برای من به صورت عمودی هست (زیر هم) می خوام مثل شکل مثال شما افقی باشه(کنار هم) چطوری می تونم این کار رو انجام بدم؟
باسلام
تنظیمات افقی یا عمودی کردن زبانه های پیش فرض در ووکامرس در تنظیمات پوسته شما عموماً باید وجود داشته باشد. اگر نباشد شما باید با استفاده از کد این کار را انجام دهید.
موفق و پیروز باشید
با سلام
ممنون از مطلب کاربردی که نوشتین
فقط یه سوال که من اینجا پیدا نکردم رو ممنون میشم پاسخ بدین
در تب مشخصات کالا یا همون توضیحات تکمیلی که وزن حمل و نقل رو هم نشون میده میخوام اونجا مشتری اون وزن رو نبینه و فقط وزنی که تو ویژگی ها به محصول میده رو ببینه
باسلام
یکی از دو قطعه کد زیر رو امتحان کنین، احتمالاً مشکلتون حل میشه.
add_filter( 'wc_product_enable_dimensions_display', '__return_false' );
add_filter( 'woocommerce_product_get_weight' , '__return_false' );
موفق باشید
سلام ممنون از متن بسیار مفیدتون
میخواستم بدونم چطور باید functions.php رو پیدا کنیم ،یا چطور با افزونه تعریف کنیم که کد ماله functions.php هستش؟ممنون
باسلام خدمت کاربر گرامی
کدهای موجود در این مقاله چه در فایل functions.php قرار داشته باشند چه در فایل افزونه، در کل وردپرس اعمال شده و کار میکنند.
فایل functions.php در پوشه پوسته فعال شما قرار دارد.
باتشکر
سلام
چطور می تونم تب اطلاعات فروشنده رو به اولین تب انتقال بدم؟
یعنی اول اطلاعات فروشنده، بعد توضیحات و بعد نظرات
ممنون میشم راهنمایی کنید.
باسلام
شما با استفاده از هوک زیر میتونین ترتیب تب ها را عوض کنین.
add_filter( 'woocommerce_product_tabs', 'reordered_tabs', 98 );
function reordered_tabs( $tabs ) {
$tabs['cherry_wc_video']['priority'] = 5;
$tabs['description']['priority'] = 10;
$tabs['reviews']['priority'] = 15;
return $tabs;
}
با عرض سلام و وقت بخیر
خیلی توضیحات خوبی داده بودین. در خصوص تغییر در صفحه محصول ووکامرس ، چند خط که به صورت پیش فرض در قالب اومده رو چطور می تونم حذف کنم؟
مشکل اینه که نام ویژگی (برند) رو می نویسه ولی چون برندی تعریف نشده، رنگ ها را نشون میده
سلام
چون این کدها در صفحه single محصول هستند، شما باید صفحه single محصول را ویرایش کنید و در قالب فرزند قرار بدین تا در دفعات بعدی بازم با بهروزرسانی قالب مادر ، دچار مشکل نشین .
سلام
من از قالب وودمارت استفاده میکنم
یه قابلیت داره به اسم کاستوم تب
من میخوام اون کاستوم تب رو به جایگاه دومین تب ببرم. از کدهای شما استفاده کردم اما تب مورد نظر فراخوانی نمیشه. چطور میتونم کلید فراخوانی این تب رو پیدا کنم؟
سلام دوست عزیز
به نظر میرسه قالب وودمارت به صورت پویا تبها را ایجاد میکنه ولی برای تغییر ترتیب زبانهها (تبها) باید حتماً اسم تب رو بدونین تا بتونین با استفاده از ویژگی اولویت (priority) ترتیب اونها را تغییر بدین.
موفق و پیروز باشید
سلام
من نیاز دارم تب ویژگی های محصول ، توضیحات و نظرات به طور مجزا در صفحه قرار بدم
چطور میتونم از این سه تب به طور مجزا در ویرایشگر قرار بدم؟
و برای یک قسمت دیگر هم میخوام مقدار یک ویژگی مشخص در صفحه نمایش بده
ممنون میشم بفرمایید به چه صورت هست
برای سفارشی سازی صفحه محصول در قالب فلت سام
سلام دوست عزیز
همه این موارد با استفاده از کدنویسی امکان پذیر است. در صورتی که دانش کدنویسی را ندارید، میتوانید با مجموعه ما تماس بگیرید تا راهنماییتان کنیم و در صورت لزوم کار کدنویسی را انجام دهیم.
موفق و پیروز باشید.
با سلام و احترام
در صفحه محصولاتم، تبی دارم به اسم توضیحات تکمیلی که وزن محصول در آن درج شده است.
چگونه می بایست این تب را حذف کنم؟
با تشکر
سلام دوست عزیز
همونطور که در مقاله توضیح داده شده، شما باید از هوک حذف زبانهها استفاده کنید و فقط کد زیر رو در تابع از حالت کامنت خارج کنید.
unset( $tabs['additional_information'] );
موفق و پیروز باشید
اگر بخوام زبانه
توضیحات تکمیلی(ابعدا و جهت و رنگ نوع قفل و.. و اینارو نشون میده ) تغییر نام بدم چی کار باید بکنم ؟ تو المنتور بستس تو پنل هم دسترسی نداره چه کدی باید بزنم ؟
سلام کاربر عزیز
تمامی مواردی که نیاز هست در مقاله بالا توضیح داده شده است. برای تغییر نام، بخش تغییر نام زبانهها را مطالعه کنید.
موفق و پیروز باشید
سلام وقت بخیر
جهت اضافه کردن توضیح در تب توضیحات تکمیلی چه اری باید انجام بدم
سلام ، وقت شما هم بخیر
توضیحات تکمیلی همان ویژگیهای محصول میباشد. اگر در قسمت ویرایش هر محصول، برای آن ویژگی تعیین کنید، دادهها به صورت جدول در تب توضیحات تکمیلی نمایش داده خواهد شد.
وقت خوش
من با تک محصول صفحه محصولاتمو ساختم حالا یه مشکل دارم :
هر محصولی که میخوام ادیت کنم ، صفحه ویرایش یک محصولم باز میشه. .
مثلا وقتی میخوام زعفران یا هر محصول دیگه رو ادیت کنم از تک محصول ، ویرایش زیتون باز میشه .
سلام دوست عزیز
این کد مشکلی ندارد، احتمالاً تداخلی در سایت شما وجود دارد.
موفق و پیروز باشید
سلام وقت بخیر
سایت من با قالب ایران وودمارت هست ، بعد از آپدیت ، تب توضیحات تکمیلی ذز صفحه تک محصول حذف شد ، از قسمت تنظیمات قالب ، تونستم تب رو مجدد نشون بدم ولی دیگه جدول ویژگی محصول نمایش داده نمیشه داخل تب ، ممنون میشم اگر من رو راهنمایی بفرمایید
سلام خدمت دوست عزیز
پیشنهاد میشه از نسخه اصلی پوسته استفاده کنید نه از نسخههای تغییر داده شده . باتوجه به توضیحاتی که دادین این مورد مربوط به پوسته شماست و باید از طریق پوسته پیگیری بشه.
موفق باشید
با سلام و تشکر از آموزش های خوب شما
من میخوام که تب توضیحات صفحه محصول تکی رو طوری سفاری کنم که مثلا بشه یه بلوک HTML رو بهش اختصاص داد.چط.ر باید این کار رو انجام بدم؟ کدی که شما قرار دادید این کار رو انجام میده یا باید تغییراتی بکنه؟ لطفا راهنمایی کنید. ممنون
سلام دوست عزیز
خوشحالم از اینکه آموزشها میتونه مشکلات شما رو برطرف کنه.
این آموزش فقط برای ایجاد یک تب و قراردادن محتوای اختصاصی هستش . اگر میخواهید محتوای توضیحات را تغییر بدید باید اون رو برنامه نویسی کنین .
باتشکر