ویرایش پنل ووکامرس

ویرایش پنل ووکامرس؛ شخصی سازی پنل و منو ووکامرس

زمان انتشار: در تاریخ ۱۴۰۲/۰۷/۲۰ ساعت ۲۱:۰۰ | آموزش وب . بلاگ

ووکامرس به صورت پیش فرض یک پنل برای کاربران ایجاد می کند. در این مطلب قصد شخصی سازی و ویرایش پنل ووکامرس را داریم.

اکثر ما با افزونه جذاب ووکامرس آشنا هستیم. این افزونه قدرتمند امکان ایجاد یک فروشگاه اینترنتی در وردپرس را فراهم می کند. ووکامرس به صورت پیش فرض یک پنل برای کاربران می سازد. در این بخش کاربر امکان ویرایش و مشاهده اطلاعات خود را دارد. برای مثال لیست سفارش ها، آدرس های ذخیره شده، اطلاعات کاربری و … در این صفحه وجود دارند. اما گزینه های منو پنل ووکامرس قابل ویرایش نیستند. برای مثال بیشتر افراد دنبال حذف گزینه دانلود از منوی ووکامرس هستند. در این مطلب قصد آشنایی با روش شخصی سازی و ویرایش پنل ووکامرس را داریم.

ویرایش پنل ووکامرس

به صورت کلی دو روش برای ویرایش و شخصی سازی این منو وجود دارد. روش اول استفاده از افزونه ها برای این کار است. اما طبق معمول، ما در توسی قصد آموزش برنامه نویسی و آشنایی با روش های اصولی تر را داریم.

حذف گزینه از منوی ووکامرس

اولین و ساده‌ترین عملیات، حذف یک گزینه از منوی ووکامرس است. برای این کار باید کد زیر را در فایل functions.php قالب و یا افزونه اختصاصی خود قرار دهیم:

add_filter('woocommerce_account_menu_items', 'tc_edit_wc_menu');
function tc_edit_wc_menu($menu_links)
{
	// unset($menu_links['edit-address']); // Addresses
	// unset($menu_links['dashboard']); // Remove Dashboard
	// unset($menu_links['payment-methods']); // Remove Payment Methods
	// unset($menu_links['orders']); // Remove Orders
	unset($menu_links['downloads']); // Disable Downloads
	// unset($menu_links['edit-account']); // Remove Account details tab
	// unset($menu_links['customer-logout']); // Remove Logout link

	return $menu_links;
}

در کد بالا یک تابع را با نام tc_edit_wc_menu به ووکامرس متصل کرده ایم. سپس در هر خط، یک گزینه از منوی پنل کاربری WooCommerce را با استفاده از نام شناسه آن حذف کردیم. اما در صورت وارد کردن مستقیم آدرس این صفحه، کاربر امکان مشاهده آن را دارد. برای حل مشکل از تنظیمات ووکامرس استفاده می کنیم. برای این کار وارد پیکربندی ووکامرس > پیشرفته > نقطه فرود حساب کاربری می شویم. در این قسمت مقدار گزینه مورد نظر خود را خالی و تنظیمات را بروزرسانی می کنیم.

تغییر عنوان منوی WooCommerce

گاهی برای ویرایش پنل ووکامرس نیاز به تغییر نام یکی از گزینه های منو وجود دارد. برای مثال قصد استفاده از «فایل های من» را به جای «دانلود ها» داریم. برای این کار از کد زیر استفاده می کنیم:

add_filter('woocommerce_account_menu_items', 'tc_edit_wc_menu');
function tc_edit_wc_menu($menu_links)
{
	$menu_links['downloads'] = 'فایل های من';

	return $menu_links;
}

در این کد به سادگی عنوان گزینه downloads را به فایل های من تغییر می دهیم. با این روش امکان ویرایش و تغییر عنوان یکی از گزینه‌های منوی این پنل وجود دارد.

ترتیب نمایش لیست

ووکامرس به صورت پیش فرض از یک ترتیب و اولویت بندی برای نمایش لیست منو ها در پنل خود استفاده می کند. اما به سادگی امکان ویرایش این ترتیب وجود دارد. به صورت کلی ووکامرس از یک آرایه برای نمایش این لیست استفاده می کند. ساده ترین روش ایجاد دوباره این آرایه با ترتیب دلخواه است. برای این کار از کد زیر در فایل توابع قالب خود استفاده می کنیم:

add_filter('woocommerce_account_menu_items', 'tc_edit_wc_menu');
function tc_edit_wc_menu($menu_links)
{
	return array(
		'dashboard' => __('Dashboard', 'woocommerce'),
		'downloads' => __('Downloads', 'woocommerce'),
		'orders' => __('Orders', 'woocommerce'),
		'edit-address' => __('Addresses', 'woocommerce'),
		'edit-account' => __('Account details', 'woocommerce'),
		'customer-logout' => __('Logout', 'woocommerce')
	);
}

در کد بالا به سادگی ترتیب اولویت نمایش گزینه های مختلف موجود در منو پنل ووکامرس تغییر می کند. در صورت حذف هر گزینه در این آرایه، آن گزینه از منو پنل ووکامرس حذف می شود.

افزودن به منو پنل ووکامرس

ویرایش پنل ووکامرس و افزودن گزینه به آن سه مرحله دارد. در مرحله اول به اصطلاح باید یک نقطه فرود ایجاد کنیم. سپس محتوای مورد نظر برای نمایش در این صفحه را تعریف کنیم. به زبان ساده تر در این دو مرحله یک صفحه فرود برای وردپرس تعریف و محتوای آن را مشخص می کنیم. در مرحله آخر این گزینه را به منوی ووکامرس اضافه می کنیم. پس در مرحله اول یک endpoints تعریف می کنیم:

function tc_my_account_endpoints()
{
    add_rewrite_endpoint('tooc', EP_PAGES);
}
add_action('init', 'tc_my_account_endpoints');

در کد بالا یک endpoints با نام tooc تعریف کرده ایم. حال محتوای آن را ایجاد می کنیم. برای این کار یک فایل در قالب خود با نام my-account-tooc.php ایجاد می کنیم. محتوای این فایل در پنل تنظیمات ووکامرس نمایش داده می شود. پس از آن با استفاده از کد زیر، آن را به endpoints خود متصل می کنیم:

function tc_ep_content()
{
    get_template_part('my-account-tooc');
}
add_action('woocommerce_account_tooc_endpoint', 'tc_ep_content');

در این کد نام فایل php ساخته شده را به عنوان مقدار وارد می کنیم. نکته مهم در کد بالا، نام قلاب آن است. این نام باید به شکل woocommerce_account_NAME_endpoint باشد. طبیعتا به جای name از نام نقطه فرود خود استفاده کنید. در مرحله پایانی این گزینه جدید را با استفاده از کد زیر، به منو اضافه می کنیم:

function tc_edit_wc_menu($menu_links)
{
    $menu_links['tooc']  = 'توسی';
    return $menu_links;
}
add_filter('woocommerce_account_menu_items', 'tc_edit_wc_menu');

با استفاده از این کد گزینه مورد نظر خود را به آرایه منو اضافه می کنیم. در نام از عنوان endpoint استفاده کرده ایم. حال محتویات مورد نظر خود را در فایل my-account-tooc.php قرار می دهیم.

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

  1. علی گفت:

    سلام
    برای افزودن منو به پنل چگونه میشه تعریف کرد که ساخت فایل از شورت کد یک قالب استفاده کرد؟

  2. حسین گفت:

    سلام وقت بخیر
    ۱. منویی که ساختیم چطور میشه جایگاهش رو بین منوهای دیگه تعیین کرد؟
    ۲. چطور میشه براش آیکن قرار داد؟
    ۳. برای اینکه نقش کاربری خاصی فقط بتونه ببینه چکار کنیم؟
    ۴. چطور منو و زیر منو تعریف کنیم؟
    ۵. اینکه این منو قراره شورتکد نمایش بده یا لینک باز کنه رو چطور انجام بدیم؟
    با تشکر

    • سلام. یک سری از سوالاتتون داخل ویدیو گفته شده. در مورد موارد دیگه هم اگر مایلید از طریق صفحه مشاوره با بخش برنامه نویسی سایت در ارتباط باشید.

  3. حسین گفت:

    سلام من در قسمت منو می‌خوام یک گزینه اضافه کنم بنام گارانتی و تاریخ ومدت گارانتی رو از یک فرم در گرویتی بخونه به نمایش بزاره چطوری میتونیم انجام بدیم

  4. صابر گفت:

    برای اینکار از پیشخوان وردپرس وارد گزینه “ووکامرس” -> “پیکربندی” بشید و در “تب پیشرفته” در بخش “نقطه فرود حساب کاربری” در فیلد های هر گزینه یک مقدار انگلیسی وجود دارد برای مثال برای گزینه دانلود ها مقدار “downloads” وجود دارد که با پاک کردن متن “downloads” و ذخیره تغییرات بخش دانلود حذف خواهد شد.

  5. علی گفت:

    سلام وقت بخیر. من قسمت پیشخوان رو همانطور که در اسکرینی که خدمتتون ارسال کردم اوکی هست فقط میخواستم بالای منوی پیشخوانم یه باکسی قرار بدم که عکس پروفایل نام کاربر و شماره یوزرش نمایش داده بشه . ممنونم میشم راهنمایی بفرمایین یا قطعه کد بهم بدین استایل شو انجام میدم . تشکر
    راستی سایت تونم عالیه فقط یه پیشنهاد دارم ویدیوهای هر بخش عالی ولی کاش اسکرین افتر بیفور یا حداقل عکس نتیجه نهایی رو هم بذارین خیلی به کاربران کمک میکنه با کاری که میکنن چی به چی تبدیل میشه

  6. عارف گفت:

    با سلام وقت بخیر

    تغییر ترتیب منو سمت راست رو لطف کردین توضیح دادین ولی من میخوام ترتیب نمایش سمت چپ رو تغییر بدم .

    یعنی در سمت چپ اول اطلاعات حساب کاربری نمایش داده بشه

  7. عارف گفت:

    سلام مجدد ممنون از پاسخگوییتون .

    در منو سمت راست بر روی گزینه ای کلیک میکنیم و بعد سمت چپ اون قسمت رو نمایش میده که به طور پیش فرض هم اولین گزینه رو نشون میده .

    حالا من میخوام سمت چپ فقط و به طور پیش فرض اطلاعات کاربری نمایش داده بشه .

    ممنون از شما

    • خوب باید یک صفحه درست کنی که اطلاعات کاربر رو نمایش بدی با اون ظاهری که میخواید و بعد بیای به منو ها اضافه کنی (که توی ویدیو گفتیم روشش رو). بعد ترتیب نمایش رو همونطور که توی ویدیو هم گفتیم تغییر بدی و صفحه خودت رو اول نشون بدی. حالا اگر نمیدونی چطور این صفحه که اطلاعات کاربر رو نشون میده طراحی و برنامه نویسی کنی دیگه باید از یکی که وردپرس بلده بخوای (قاعدتا با پرداخت هزینه) که اون رو برات طراحی و اجرا کنه!

  8. داود محسنی گفت:

    سلام استاد
    چطور میتوان ایمیل ادرس صورتحساب در صفحه حساب کاربری را اختیاری کرد؟

    • سلام. باید از کد زیر استفاده کنید:

      add_filter('woocommerce_billing_fields', 'tc_wc_optional_email', 9999, 2);
      function tc_wc_optional_email($fields)
      {
          if (isset($fields['billing_email'])) {
              $fields['billing_email']['required'] = false;
          }
          return $fields;
      }
  9. داود محسنی گفت:

    خیلی ممنون از راهنمایی سریع شما
    پاینده باشید

ثبت دیدگاه جدید:

جهت رسیدگی به دیدگاه خود از زبان فارسی استفاده کنید!