در پانزده سال کار با وردپرس، فهرستی از اشتباهات را دیده‌ام که در پروژه‌های مختلف تکرار می‌شوند. جالب اینکه بیشتر این اشتباهات، از بی‌توجهی نمی‌آیند؛ از تصمیم‌های ظاهراً منطقی که در بلندمدت هزینهٔ پنهانی دارند. تجربه‌ام: اگر این ده اشتباه را بشناسید و از آن‌ها دوری کنید، کیفیت پروژه‌های شما از متوسط به حرفه‌ای می‌رسد. این مقاله، همان ده اشتباه را با نشانه‌ها و راه‌حل مرور می‌کند. اگر با مفاهیم پایه آشنا نیستید، توسعهٔ وردپرس چیست، شروع اصولی کدنویسی، و استانداردهای کدنویسی را پیش از ادامه ببینید.

اشتباه اول: ویرایش هسته یا والد

ویرایش مستقیم فایل‌های هستهٔ وردپرس یا قالب والد، بزرگ‌ترین اشتباه است. دلیلش واضح: هر آپدیت، تغییرات شما را می‌شوید. ولی جالب اینکه همین اشتباه، هم در تازه‌واردان و هم در توسعه‌دهندگان باتجربه دیده می‌شود. راه‌حل: تمام سفارشی‌سازی‌ها در چایلد تم یا افزونه. راهنمای دقیق در توسعه با چایلد تم.

اشتباه دوم: نبود پیشوند در توابع

در PHP، فضای نام سراسری است. تابعی با نام get_data() یا process()، احتمال تعارض با افزونه یا قالب دیگر را بالا می‌برد. راه‌حل: همیشه پیشوند اختصاصی برای تمام توابع و کلاس‌ها. الگو در استانداردهای کدنویسی و پیاده‌سازی استانداردها. تجربه‌ام: در پروژه‌ای که افزونه‌اش تابع get_user() تعریف کرده بود، با افزونهٔ دیگری تعارض جدی داشت.

اشتباه سوم: نبود امنیت ورودی و خروجی

هر داده‌ای از کاربر، پاک‌سازی شود؛ هر داده‌ای که نمایش داده می‌شود، escape شود. بدون این دو، خطر XSS جدی است. راه‌حل در PHP امن در وردپرس، پاک‌سازی داده‌ها، و اعتبارسنجی داده‌ها.

در امنیت وردپرس، حفره‌های بزرگ از اشتباهات کوچک می‌آیند — نه از حفره‌های ناشناخته.

اشتباه چهارم: کوئری‌های خام بدون prepare

کوئری خام با $wpdb->query( $sql ) و مقادیر ورودی، خطر SQL Injection دارد. راه‌حل: همیشه $wpdb->prepare:

$sql = $wpdb->prepare(
    "SELECT * FROM {$wpdb->posts} WHERE post_author = %d AND post_status = %s",
    $author_id,
    'publish'
);
$results = $wpdb->get_results( $sql );

راهنمای کامل در توابع کوئری سفارشی و بهینه‌سازی کوئری‌ها.

اشتباه پنجم: نبود nonce و check_user_can

هر فرم و درخواست AJAX، نیاز به nonce دارد. هر عملیات حساس، نیاز به current_user_can. بدون این‌ها، خطر CSRF و دسترسی غیرمجاز. راه‌حل در نانس وردپرس و پیاده‌سازی nonce در فرم‌ها.

اشتباه ششم: بارگذاری asset در همهٔ صفحات

لود CSS و JS در همهٔ صفحات، حتی صفحه‌های بی‌ربط، سرعت سایت را به‌شدت کاهش می‌دهد. راه‌حل: بارگذاری انتخابی:

function my_enqueue() {
    if ( ! is_singular( 'portfolio' ) ) return;
    wp_enqueue_style( ... );
}

راهنمای دقیق در تأثیر افزونه‌ها بر سرعت و بهینه‌سازی کد.

اشتباه هفتم: نبود کش در محاسبات سنگین

محاسباتی که در هر بازدید تکرار می‌شوند، باید کش شوند. راه‌حل با transients:

$data = get_transient( 'my_key' );
if ( $data === false ) {
    $data = /* محاسبه */;
    set_transient( 'my_key', $data, HOUR_IN_SECONDS );
}

راهنمای کامل در ترنزینت‌ها در وردپرس و بهینه‌سازی کد.

اشتباه هشتم: منطق در قالب به‌جای افزونه

اگر منطق کسب‌وکار در قالب نوشته شود، روز تغییر قالب، همه از دست می‌رود. راه‌حل: منطق در افزونه، ظاهر در قالب. تفصیل در افزودن قابلیت به وردپرس و توسعه با چایلد تم.

اشتباه نهم: نبود Git و تست

پروژه‌ای که Git و تست ندارد، در بحران آسیب‌پذیر است. راه‌حل: از روز اول Git، و از اولین فیچر جدی، تست. راهنمای Git در گیت در وردپرس و راهنمای تست در تست و دیباگ پروژه.

اشتباه دهم: نبود مستندسازی

پروژه‌ای که مستند نیست، در انتقال به تیم بعدی، به بدهی تبدیل می‌شود. راه‌حل: سه سطح مستندسازی (README، docs/، کامنت در کد). راهنما در ساختاربندی پروژه و استانداردهای کدنویسی.

سه اشتباه دیگر که در فهرست اصلی نگنجیدند ولی در تجربه‌ام دیده‌ام: نادیده‌گرفتن staging (تست روی Production)، نصب چند افزونهٔ هم‌دسته (دو کش، دو سئو)، و نبود بکاپ تست‌شده (بکاپی که بازیابی‌اش تست نشده). هر سه در پروژه‌های واقعی، حادثه‌ساز بوده‌اند. راهنماهای مربوطه در تست قالب، چند افزونه نصب کنیم، و افزونه‌های بکاپ.

جمع‌بندی

ده اشتباه در توسعهٔ وردپرس، همه از یک ریشه می‌آیند: تصمیم‌های ظاهراً راحت که در بلندمدت هزینه دارند. اگر امروز فقط یک کار می‌کنید: فهرست اشتباهات بالا را برای پروژهٔ فعلی خود چک کنید و ببینید کدام‌یک را دارید. هر یک که دارید، برنامهٔ اصلاح در هفتهٔ بعد داشته باشید. تجربهٔ خودتان از یک اشتباه گران‌قیمت، در دیدگاه‌ها ارزشمند است. ⚠️