Title: عیب‌یابی در وردپرس
Author: Morteza Geransayeh
Published: 3 آگوست 2025

---

 جستجو برای:

## آخرین دیدگاه‌ها

 * [Saeed Fard](https://profiles.wordpress.org/saeedfard/) در [موضوع: 🍰 راهنمای کامل خرید یخچال قنادی](https://fa.wordpress.org/support/reported_topics/%d9%85%d9%88%d8%b6%d9%88%d8%b9-%f0%9f%8d%b0-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%da%a9%d8%a7%d9%85%d9%84-%d8%ae%d8%b1%db%8c%d8%af-%db%8c%d8%ae%da%86%d8%a7%d9%84-%d9%82%d9%86%d8%a7%d8%af%db%8c/#comment-4)
 * [Saeed Piri](https://profiles.wordpress.org/isaeedam/) در [موضوع: ووکامرس](https://fa.wordpress.org/support/reported_topics/%d9%85%d9%88%d8%b6%d9%88%d8%b9-%d9%88%d9%88%da%a9%d8%a7%d9%85%d8%b1%d8%b3/#comment-3)

# عیب‌یابی در وردپرس

## در این مقاله

 * [نمونه wp-config.php برای عیب‌یابی](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#%d9%86%d9%85%d9%88%d9%86%d9%87-wp-config-php-%d8%a8%d8%b1%d8%a7%db%8c-%d8%b9%db%8c%d8%a8%db%8c%d8%a7%d8%a8%db%8c)
 * [WP_DEBUG](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#wp_debug)
 * [خطاها، هشدارها و اخطارهای PHP](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#%d8%ae%d8%b7%d8%a7%d9%87%d8%a7%d8%8c-%d9%87%d8%b4%d8%af%d8%a7%d8%b1%d9%87%d8%a7-%d9%88-%d8%a7%d8%ae%d8%b7%d8%a7%d8%b1%d9%87%d8%a7%db%8c-php)
 * [عیب‌یابی سفارشی PHP](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#%d8%b9%db%8c%d8%a8%db%8c%d8%a7%d8%a8%db%8c-%d8%b3%d9%81%d8%a7%d8%b1%d8%b4%db%8c-php)
    - [توابع و آرگومان‌های منسوخ‌شده](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#%d8%aa%d9%88%d8%a7%d8%a8%d8%b9-%d9%88-%d8%a2%d8%b1%da%af%d9%88%d9%85%d8%a7%d9%86%d9%87%d8%a7%db%8c-%d9%85%d9%86%d8%b3%d9%88%d8%ae%d8%b4%d8%af%d9%87)
 * [WP_DEBUG_LOG](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#wp_debug_log)
 * [WP_DEBUG_DISPLAY](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#wp_debug_display)
 * [SCRIPT_DEBUG](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#script_debug)
 * [SAVEQUERIES](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#savequeries)

عیب‌یابی کد PHP بخشی از هر پروژه‌ای‌ست، با این وجود وردپرس دارای سیستم‌های عیب‌یابی
خاصی است که برای ساده‌سازی فرآیند و استانداردسازی کد در هسته، افزونه‌ها و پوسته‌ها
طراحی شده‌اند. این برگه ابزارهای مختلف عیب‌یابی موجود در وردپرس و چگونگی افزایش 
بهره‌وری در کدنویسی شما، و همچنین افزایش کیفیت کلی و تعامل‌پذیری کدتان را تشریح 
می‌کند.

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

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

## 󠀁[نمونه wp-config.php برای عیب‌یابی](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#%d9%86%d9%85%d9%88%d9%86%d9%87-wp-config-php-%d8%a8%d8%b1%d8%a7%db%8c-%d8%b9%db%8c%d8%a8%db%8c%d8%a7%d8%a8%db%8c)󠁿

کد زیر، با قرار گرفتن در پروندۀ [wp-config.php](https://wordpress.org/documentation/article/editing-wp-config-php/)
شما، تمامی خطاها، هشدارها و اخطارها را در پرونده‌ای به نام debug.log در پوشۀ wp-
content ثبت (یا اصطلاحاً لاگ) خواهد کرد؛ همچنین خطاها را مخفی نموده تا در ساخت برگه
اختلالی ایجاد نکنند.

    ```notranslate
    // Enable WP_DEBUG mode
    define( 'WP_DEBUG', true );
    ```

    ```notranslate
    // Enable Debug logging to the /wp-content/debug.log file
    define( 'WP_DEBUG_LOG', true );
    ```

    ```notranslate
    // Disable display of errors and warnings
    define( 'WP_DEBUG_DISPLAY', false );
    @ini_set( 'display_errors', 0 );
    ```

    ```notranslate
    // Use dev versions of core JS and CSS files (only needed if you are modifying these core files)
    define( 'SCRIPT_DEBUG', true );
    ```

**توجه**: شما بایستی این کد را **قبل از **/* That’s all, stop editing! Happy blogging.*/
در پروندۀ [wp-config.php](https://developer.wordpress.org/advanced-administration/wordpress/wp-config/)
درج نمایید.

## 󠀁[WP_DEBUG](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#wp_debug)󠁿

**WP_DEBUG **یک ثابت PHP (متغیر سراسری دائمی) می‌باشد که می‌تواند برای فعال‌سازی
حالت “عیب‌یابی” در سراسر وردپرس استفاده شود. به‌طور پیش‌فرض، مقدار آن false (غیرفعال)
در نظر گرفته می‌شود و معمولاً در نسخه‌های توسعه وردپرس، درون پروندۀ [wp-config.php](https://developer.wordpress.org/advanced-administration/wordpress/wp-config/)
روی true (فعال) تنظیم می‌گردد.

    ```notranslate
    // This enables debugging.
    define( 'WP_DEBUG', true );
    ```

    ```notranslate
    // This disables debugging.  
    define( 'WP_DEBUG', false );
    ```

**توجه**: مقادیر **true **و **false **در مثال با آپاستروف (‘) احاطه نشده‌اند، زیرا
آن‌ها مقادیر گزاره (درست/نادرست) هستند. اگر ثابت‌ها را روی ‘false’ تنظیم کنید، آن‌ها
به‌عنوان **true **تفسیر خواهند شد، چراکه گیومه‌ها آن را به یک رشته تبدیل می‌کنند
نه به یک مقدار گزاره (دادۀ منطقی).

استفاده از **WP_DEBUG **یا سایر ابزارهای عیب‌یابی در سایت‌های فعال توصیه نمی‌شود؛
آن‌ها برای آزمایش محلی و نصب‌های نمایشی در نظر گرفته شده‌اند.

## 󠀁[خطاها، هشدارها و اخطارهای PHP](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#%d8%ae%d8%b7%d8%a7%d9%87%d8%a7%d8%8c-%d9%87%d8%b4%d8%af%d8%a7%d8%b1%d9%87%d8%a7-%d9%88-%d8%a7%d8%ae%d8%b7%d8%a7%d8%b1%d9%87%d8%a7%db%8c-php)󠁿

فعال‌سازی WP_DEBUG موجب نمایش تمامی خطاها، اخطارها و هشدارهای PHP خواهد شد. این 
کار به احتمال زیاد رفتار پیش‌فرض PHP را که تنها خطاهای فاجعه‌بار را نمایش می‌دهد
یا در صورت بروز خطا، صفحۀ سفید مرگ را نشان داده، تغییر خواهد داد.

نمایش همۀ اخطارها و هشدارهای PHP اغلب منجر به پیام‌های خطا برای مواردی می‌شوند که
به‌نظر خراب نمی‌آیند، اما از استانداردهای اعتبارسنجی دادۀ صحیح در PHP پیروی نمی‌کنند.
این هشدارها به‌محض شناسایی کد مربوطه، به‌راحتی قابل رفع هستند و کد حاصل تقریباً 
همیشه مقاوم‌تر در برابر مشکلات و نگهداری آن آسان‌تر خواهد بود.

## 󠀁[عیب‌یابی سفارشی PHP](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#%d8%b9%db%8c%d8%a8%db%8c%d8%a7%d8%a8%db%8c-%d8%b3%d9%81%d8%a7%d8%b1%d8%b4%db%8c-php)󠁿

چنانچه نیاز است که اطلاعات غیرخطا جهت اهداف عیب‌یابی ثبت شوند، PHP تابع error_log
را برای این منظور ارائه می‌دهد. با این حال، این روش به‌طور پیش‌فرض خروجی با ساختار
مناسبی ارائه نمی‌دهد.

برای رفع این مشکل، می‌توانید تابع دیگری را در سایت خود جهت رسیدگی به ساختاربندی 
اضافه نمایید، این کار را قادر هستید با ایجاد یک [افزونۀ سفارشی](https://developer.wordpress.org/plugins/plugin-basics/)
یا استفاده از قطعه کدی با یک افزونۀ [code snippets](https://wordpress.org/plugins/search/code+snippets/)
انجام دهید. این تابع به‌عنوان یک پوشش‌دهنده (wrapper) برای error_log عمل خواهد کرد
و از print_r جهت ساختاربندی صحیح آرایه‌ها و شیء‌ها قبل از ثبت آن‌ها استفاده خواهد
کرد.

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

    ```notranslate
    function write_log( $data ) {
        if ( true === WP_DEBUG ) {
            if ( is_array( $data ) || is_object( $data ) ) {
                error_log( print_r( $data, true ) );
            } else {
                error_log( $data );
            }
        }
    }
    ```

نمونه‌های استفاده:

    ```notranslate
    write_log( 'DEBUG TEXT' );
    write_log( $variable );
    ```

**توجه**: توصیه نمی‌شود کدهای سفارشی مطابق نمونه بالا را در functions.php اضافه 
نمایید تا از مشکلات مربوط به نگهداری، امنیت، عملکرد، سازگاری و سازمان‌دهی کد جلوگیری
شود.

### 󠀁[توابع و آرگومان‌های منسوخ‌شده](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#%d8%aa%d9%88%d8%a7%d8%a8%d8%b9-%d9%88-%d8%a2%d8%b1%da%af%d9%88%d9%85%d8%a7%d9%86%d9%87%d8%a7%db%8c-%d9%85%d9%86%d8%b3%d9%88%d8%ae%d8%b4%d8%af%d9%87)󠁿

فعال‌سازی WP_DEBUG همچنین موجب نمایش اخطارهایی دربارۀ توابع و آرگومان‌های منسوخ‌شده
در وردپرس می‌شود که در سایت شما در حال استفاده هستند. این‌ها توابع یا آرگومان‌های
تابعی هستند که هنوز از کد اصلی حذف نشده‌اند، اما در آیندۀ نزدیک برای حذف برنامه‌ریزی
شده‌اند. اخطارهای منسوخ شدن، معمولاً تابع تازه‌ای که باید به‌جای آن‌ها استفاده شود
را نشان می‌دهد.

## 󠀁[WP_DEBUG_LOG](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#wp_debug_log)󠁿

WP_DEBUG_LOG مکملی برای WP_DEBUG به حساب می‌آید که باعث می‌شود تا سایر خطاها در 
یک پروندۀ گزارش (لاگ) به نام debug.log نیز ذخیره شوند. این قابلیتی مفید است اگر 
که می‌خواهید تمامی اخطارها را بعداً بررسی نمایید یا نیاز دارید اخطارهایی که خارج
از صفحۀ نمایش (مثلاً در طول درخواست ایجکس یا اجرای wp-cron) تولید شده‌اند را مشاهده
نمایید.

توجه داشته باشید که این امکان به شما اجازه می‌دهد تا با استفاده از تابع داخلی error_log()
در PHP، در یک پروندۀ لاگ بنویسید، که برای مثال هنگام عیب‌یابی رویدادهای ایجکس می‌تواند
مفید باشد.

هنگامی که روی true تنظیم شود، لاگ در debug.log داخل پوشۀ محتوا (معمولاً wp-content/
debug.log) در سیستم پروندۀ سایت شما ذخیره می‌شود. به‌عنوان جایگزین، می‌توانید آن
را روی یک مسیر پروندۀ معتبر تنظیم کنید تا پرونده در جای دیگری ذخیره گردد.

    ```notranslate
    define( 'WP_DEBUG_LOG', true );
    ```

-یا-

    ```notranslate
    define( 'WP_DEBUG_LOG', '/tmp/wp-errors.log' );
    ```

**توجه**: برای اینکه WP_DEBUG_LOG کار خود را انجام دهد، WP_DEBUG بایستی فعال (true)
باشد. به‌خاطر داشته باشید که می‌توانید WP_DEBUG_DISPLAY را به‌طور مستقل غیرفعال 
نمایید.

## 󠀁[WP_DEBUG_DISPLAY](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#wp_debug_display)󠁿

WP_DEBUG_DISPLAY یکی دیگر از مکمل‌های WP_DEBUG است که کنترل می‌کند آیا پیام‌های 
عیب‌یابی در داخل HTML برگه‌ها نمایش داده شوند یا خیر. مقدار پیش‌فرض آن true است 
که خطاها و هشدارها را به‌محض تولید شدن نمایش می‌دهد. تنظیم این گزینه روی false همۀ
خطاها را مخفی خواهد کرد. این مورد باید همراه با WP_DEBUG_LOG استفاده شود تا خطاها
بتوانند بعداً قابل بررسی باشند.

    ```notranslate
    define( 'WP_DEBUG_DISPLAY', false );
    ```

توجه: طبق معمول برای اینکه WP_DEBUG_DISPLAY کار خود را انجام دهد، WP_DEBUG باید 
فعال (true) باشد. به‌خاطر داشته باشید که می‌توانید WP_DEBUG_LOG را به طور مستقل 
کنترل نمایید.

## 󠀁[SCRIPT_DEBUG](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#script_debug)󠁿

SCRIPT_DEBUG یک ثابت مرتبط است که وردپرس را مجبور می‌کند از نسخه‌های “dev” (توسعه)
پرونده‌های CSS و جاوااسکریپت هسته به‌جای نگارش‌های فشرده‌شده (minified) که به طور
معمول بارگذاری می‌شوند، استفاده نماید. این برای زمانی مفید است که در حال آزمایش 
تغییرات در هر یک از پرونده‌های .js یا .css داخلی هستید. مقدار پیش‌فرض آن false است.

    ```notranslate
    define( 'SCRIPT_DEBUG', true );
    ```

## 󠀁[SAVEQUERIES](https://fa.wordpress.org/support/debug-wordpress/?output_format=md#savequeries)󠁿

تعریف SAVEQUERIES، کوئری‌های پایگاه‌داده را در یک آرایه ذخیره می‌کند که سپس می‌توانند
برای کمک به تحلیل آن کوئری‌ها، نمایش داده شوند. هنگامی که این ثابت روی true تنظیم
باشد، باعث می‌شود هر کوئری به‌همراه زمان اجرای آن و تابعی که آن را فراخوانی کرده
است، ذخیره شود.

    ```notranslate
    define( 'SAVEQUERIES', true );
    ```

آرایه در متغیر سراسری $wpdb->queries ذخیره خواهد شد.

توجه: این قابلیت بر عملکرد سایت شما تأثیر خواهد گذاشت، بنابراین مطمئن شوید زمانی
که در حال عیب‌یابی نیستید، آن را غیرفعال کنید.

عیب‌یابی افزونه‌ها

[افزونه‌های عیب‌یابی](https://wordpress.org/plugins/search/debug/) زیادی برای وردپرس
وجود دارند که اطلاعات بیشتری دربارۀ جزئیات داخلی، چه برای یک مؤلفه خاص و چه به‌طور
کلی، نمایش می‌دهند.

برای مثال، [نوار عیب‌یابی](https://wordpress.org/plugins/debug-bar/) یک فهرست عیب‌یابی
به نوار مدیریت اضافه می‌کند که اطلاعات مفید عیب‌یابی مربوط به کوئری، حافطۀ پنهان(
کش) و موارد دیگر را نمایش می‌دهد. هنگامی که WP_DEBUG فعال باشد، این افزونه هشدارهای
PHP و اخطارها را نیز ردیابی می‌کند تا یافتن آن‌ها آسان‌تر شود.