🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ بهنام مرادی
router پنل کاربری
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۰۲ مرداد ۱۴۰۰

با سلام

ما در این جلسه اومدیم و یک روتر طراحی کردیم برای لود کردن منوها، ولی خب همونطور که اشاره شد روش کاملا استانداری نیست و جای کار داره.

من اومدم با اکشن‌های خود وردپرس یک روتر طوری رو طراحی کردم

مورد زیر رو مشاهده کنید

add_action('init', 'panel_rewrite_rule');
		function panel_rewrite_rule()
		{
			$panel_rewrite = 'dashboard' . '/([a-z0-9-]+)[/]?$';
			add_rewrite_rule($panel_rewrite, 'index.php?dashboardmenu=$matches[1]', 'top');
		}
		add_filter('query_vars', function ($query_vars) {
			$query_vars[] = 'dashboardmenu';
			return $query_vars;
		});
		add_action('template_include', function ($template) {
			if (get_query_var('dashboardmenu') == false || get_query_var('dashboardmenu') == '') {
				return $template;
			}
			$current_menu = get_query_var('dashboardmenu');
			$template = __DIR__ 'tpl/dashboard.php';
			if ( file_exists( $template ) ) {
				include $template;
			}
			return $template;
		});

تو این کد اومدیم گفتیم که یک add_rewrite_rule با Slug کلمه داشبورد تعریف بشه و تا اینجا وقتی ادرس Dashboard صدا زده بشه یک مسیر سفارشی در وردپرس تعریف شده است

بعد اومدم رو همین مسیر سفارشی query_var تعریف کردم به اسم dashboardmenu » این کوئری میاد به جای منوهای داشبورد کار میکنه

یعنی هر منویی با اسم خودش میشینه به جای کوئری dashboardmenu

mysite.com/dashboard/wallet
mysite.com/dashboard/orders

تو این ادرس‌ها wallet و orders منوهای ما هستند و به عنوان یک query_var به ما پاس داده میشن

در بقیه کد هم میگم که اگر کوئری ور‌های من ست شده بودند بیا تمپلیت رو لود کن

این روش جواب میده ولی ایراد داره

مشکلش هم این هست که در این حالت وردپرس ادرس برگه رو یک ادرس دلخواه ست میکنه

اگر من بیام داخل یکی از منوها از get_permalink() استفاده کنم به صورت عجیبی آدرس یکی از پست‌های وردپرس رو میاره؟ درحالی که من درون پنل کاربریم هستم!

از عزیزان میشه راهنمایی کنند که روش درست چی هست ؟

کسی ساختار استفاده شده در ووکامرس رو مسلط هست؟

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

کیوان علی محمدی ۰۶ مرداد ۱۴۰۰، ۰۶:۵۸