router پنل کاربری

پرسیده شده
فعالیت 1013 روز پیش
دیده شده 596 بار
0

با سلام

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

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

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

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() استفاده کنم به صورت عجیبی آدرس یکی از پست های وردپرس رو میاره؟ درحالی که من درون پنل کاربریم هستم!

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

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

فایل پیوست

Behnam Moradi
Behnam Moradi

2 مرداد 00

0
حذف شده

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

فایل پیوست

کیوان علی محمدی

توسط

کیوان علی محمدی

6 مرداد 00