← بازگشت به صفحه اصلی

این راهنما برای انتقال فایل‌های template قدیمی به ساختار MVC جدید است.


✅ چک‌لیست Migration


📋 مراحل Migration یک Template

مرحله 1: شناسایی Template

فایل قدیمی:

// help.php (در root قالب)
<?php
/*
Template Name: help
*/
get_header();
?>
<div class="help-page">
    <!-- HTML content -->
</div>
<?php get_footer(); ?>

مرحله 2: ایجاد View

// views/pages/help.php
<?php
defined('ABSPATH') || exit;
get_header();
?>
<div class="help-page">
    <h1><?php echo esc_html($page_title); ?></h1>
    <!-- HTML content -->
</div>
<?php get_footer(); ?>

مرحله 3: اضافه کردن Controller Method

// app/Controllers/PageController.php
public function help()
{
    $data = [
        'page_title' => 'مرکز راهنما',
    ];
    
    View::render('pages.help', $data);
}

مرحله 4: ثبت Route

// routes.php
Template::register('help', PageController::class, 'help', 'pages.help');

مرحله 5: تست

  1. فایل قدیمی را تغییر نام دهید: help.phphelp.php.old
  2. صفحه را در مرورگر باز کنید
  3. اگر کار کرد، فایل قدیمی را حذف کنید

🎯 Templates باقی‌مانده

صفحات (Pages)

آرشیوها (Archives)

پست‌های تکی (Singles)

سایر


🛠️ دستورات مفید

کپی فایل template

# PowerShell
Copy-Item "help.php" "views/pages/help.php"

تغییر نام فایل قدیمی

# PowerShell
Rename-Item "help.php" "help.php.old"

حذف فایل قدیمی

# PowerShell
Remove-Item "help.php.old"

⚠️ نکات مهم

1. فایل template در root باید خالی باشد

// help.php (در root - فقط برای WordPress)
<?php
/*
Template Name: help
*/
// این فایل خالی می‌ماند
// سیستم routing خودکار view را load می‌کند
?>

2. داده‌ها را از Controller بگیرید

در view ننویسید:

$title = get_field('title');

در controller بنویسید:

public function help()
{
    $data = ['title' => get_field('title')];
    View::render('pages.help', $data);
}

3. Escape کردن داده‌ها

<?php echo esc_html($title); ?>
<?php echo esc_url($link); ?>
<?php echo esc_attr($attr); ?>
<?php echo wp_kses_post($content); ?>

🐛 مشکلات متداول

صفحه سفید نشان می‌دهد

  1. خطاها را بررسی کنید: wp-content/debug.log
  2. بررسی کنید view وجود دارد: View::exists('pages.help')
  3. بررسی کنید route ثبت شده: Template::hasRoute('help')

View پیدا نمی‌شود

// مسیر را چک کنید
echo View::path('pages.help');

متغیر در view undefined است

// در view
<?php echo isset($title) ? esc_html($title) : 'Default'; ?>

📞 کمک


نکته: این فرآیند را برای هر template تکرار کنید. بعد از اطمینان از کارکرد صحیح، فایل‌های قدیمی را حذف کنید.