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