آموزش طراحی سایت و برنامهنویسی وب
ویرایش آیتم های حساب کاربری ووکامرس: حذف، تغییر نام، جابهجایی و افزودن تب جدید
- منوی «حساب کاربری من» ووکامرس یک آرایهٔ PHP است که با فیلتر
woocommerce_account_menu_itemsقابل تغییر است. - با
unsetآیتم حذف میشود، با تغییر مقدار آرایه نامش عوض میشود و با ساختن آرایهٔ جدید ترتیبش. - برای افزودن تب جدید، علاوه بر منو باید اندپوینت ثبت کنید و یکبار پیوندهای یکتا را ذخیره کنید، وگرنه خطای ۴۰۴ میگیرید.
- سازندهٔ کد همین صفحه، کد نهایی را بر اساس انتخاب شما مینویسد.
صفحهٔ «حساب کاربری من» ووکامرس بهطور پیشفرض آیتمهایی مثل پیشخوان، سفارشها، دانلودها و آدرسها را نشان میدهد؛ اما هر فروشگاهی به همهٔ آنها نیاز ندارد. فروشگاه پوشاک به «دانلودها» نیازی ندارد و سایت آموزشی شاید تب «دورههای من» بخواهد. در این مطلب از طاووس وب یاد میگیریم چطور آیتم های حساب کاربری ووکامرس را بدون افزونه حذف، تغییر نام، جابهجا و اضافه کنیم.
سازندهٔ کد منوی حساب کاربری
آیتمها را تیک بزنید، نامشان را عوض کنید یا جابهجا کنید
کد سمت چپ همزمان با تغییرات شما ساخته میشود؛ آن را در functions.php قالب فرزند یا افزونهٔ Code Snippets قرار دهید.
فیلتر woocommerce_account_menu_items چطور کار میکند؟
ووکامرس قبل از نمایش منوی حساب کاربری، آرایهای از آیتمها را از این فیلتر عبور میدهد. کلید هر خانهٔ آرایه، نام اندپوینت (بخشی از آدرس، مثل orders) و مقدارش، متنی است که در منو دیده میشود. هر تغییری در این آرایه، مستقیم در منو اعمال میشود.

حذف آیتم از حساب کاربری ووکامرس
رایجترین تغییر، حذف «دانلودها» برای فروشگاههایی است که محصول دانلودی ندارند:
add_filter( 'woocommerce_account_menu_items', function( $items ) {
unset( $items['downloads'] ); // دانلودها
unset( $items['payment-methods'] ); // روشهای پرداخت ذخیرهشده
return $items;
}, 99 );توجه کنید حذف از منو، خود صفحه را غیرفعال نمیکند؛ آدرس /my-account/downloads/ هنوز باز میشود. اگر میخواهید کاملاً غیرفعال شود، در تنظیمات ووکامرس > پیشرفته، مقدار اندپوینت «دانلودها» را خالی کنید.
تغییر نام و ترتیب آیتمها
برای تغییر نام، کافی است مقدار آرایه را عوض کنید. برای تغییر ترتیب، آرایهٔ جدیدی به ترتیب دلخواه بسازید:
add_filter( 'woocommerce_account_menu_items', function( $items ) {
return [
'orders' => 'خریدهای من',
'dashboard' => 'خلاصهٔ حساب',
'edit-address' => 'آدرسهای ارسال',
'edit-account' => 'اطلاعات کاربری',
'customer-logout' => 'خروج از حساب',
];
}, 99 );عدد 99 اولویت اجراست؛ مقدار بالا باعث میشود کد شما بعد از افزونهها و قالب اجرا شود و تغییراتتان بازنویسی نشود. در قالبهایی مثل وودمارت و استودیار که منوی حساب را بازطراحی کردهاند، این نکته مهم است.
افزودن تب جدید به حساب کاربری ووکامرس
افزودن تب سه بخش دارد: ثبت اندپوینت، افزودن به منو و تعیین محتوای صفحه. در این مثال تب «پشتیبانی» میسازیم:
// ۱. ثبت اندپوینت /my-account/support/
add_action( 'init', function() {
add_rewrite_endpoint( 'support', EP_ROOT | EP_PAGES );
} );
add_filter( 'query_vars', function( $vars ) {
$vars[] = 'support';
return $vars;
} );
// ۲. افزودن به منو، قبل از «خروج»
add_filter( 'woocommerce_account_menu_items', function( $items ) {
$logout = $items['customer-logout'];
unset( $items['customer-logout'] );
$items['support'] = 'پشتیبانی';
$items['customer-logout'] = $logout;
return $items;
}, 99 );
// ۳. محتوای صفحهٔ تب
add_action( 'woocommerce_account_support_endpoint', function() {
echo '<h3>پشتیبانی</h3>';
echo '<p>سؤالی دارید؟ از طریق فرم زیر با ما در تماس باشید.</p>';
echo do_shortcode( 'خطا: فرم تماس پیدا نشد.
' );
} );مهم: بعد از افزودن این کد، یکبار به «تنظیمات > پیوندهای یکتا» بروید و بدون تغییر، «ذخیرهٔ تغییرات» را بزنید. تا این کار را نکنید، وردپرس اندپوینت جدید را نمیشناسد و صفحه خطای ۴۰۴ میدهد.
نکات و خطاهای رایج
- خطای ۴۰۴ در تب جدید: پیوندهای یکتا را یکبار ذخیره کنید؛ این رایجترین مشکل است.
- تغییرات اعمال نمیشود: اولویت فیلتر را بالاتر ببرید (مثلاً ۹۹۹) یا کش افزونههایی مثل WP Rocket را پاک کنید.
- نام اندپوینت فارسی ننویسید: کلید آرایه بخشی از آدرس است؛ از حروف انگلیسی و خط تیره استفاده کنید و فقط متن نمایشی را فارسی بنویسید.
- ویرایش مستقیم قالب ووکامرس نکنید: کپی کردن فایلهای قالب در پوشهٔ قالب فرزند لازم نیست؛ فیلتر امنتر است و با بهروزرسانی ووکامرس خراب نمیشود.
اگر روی شخصیسازی ووکامرس کار میکنید، مطلب نمایش «رایگان» بهجای قیمت صفر را هم ببینید. برای امنیت بیشتر حساب کاربران هم چکلیست امنیتی وردپرس را مرور کنید.
فروشگاه ووکامرسیتان را حرفهای شخصیسازی کنیدطاووس وب فروشگاه اینترنتی را از صفحهٔ محصول تا حساب کاربری، متناسب با نیاز مشتریان شما طراحی و پیادهسازی میکند.
طراحی سایت فروشگاهیسؤالات متداول حساب کاربری ووکامرس
کد را کجا قرار دهم؟
در functions.php قالب فرزند یا افزونهٔ Code Snippets. ویرایش functions.php قالب اصلی توصیه نمیشود، چون با بهروزرسانی قالب پاک میشود.
چرا بعد از افزودن تب جدید خطای ۴۰۴ میگیرم؟
چون قواعد بازنویسی آدرس بهروز نشده است. به تنظیمات > پیوندهای یکتا بروید و فقط دکمهٔ ذخیره را بزنید.
آیا با حذف آیتم از منو، صفحهاش هم حذف میشود؟
خیر؛ فقط لینکش از منو برداشته میشود. برای غیرفعال کردن کامل، اندپوینت آن را در تنظیمات پیشرفتهٔ ووکامرس خالی کنید.
میتوانم برای هر آیتم آیکون بگذارم؟
بله؛ ووکامرس به هر لی منو کلاسی مثل woocommerce-MyAccount-navigation-link–orders میدهد که میتوانید با CSS و ::before برایش آیکون تعریف کنید.
این روش با افزونههای حساب کاربری تداخل دارد؟
اگر افزونهای منوی حساب را کاملاً بازنویسی کرده باشد، ممکن است؛ در این صورت اولویت فیلتر را بالاتر ببرید یا از تنظیمات خود افزونه استفاده کنید.