فضای خالی (Whitespace) اضافی
وجود فضای خالی، Enter یا خط خالی قبل از تگ <?php یا بعد از تگ ?> در فایلهای PHP وردپرس، باعث ارسال کاراکترهای اضافی قبل از خروجی XML میشود.
یکی از رایجترین خطاهای سایت مپ (Sitemap) در وردپرس، ارور "XML declaration allowed only at the start of the document" است. این خطا در افزونههای Yoast SEO، Google XML Sitemaps، Rank Math و سایر پلاگینها رخ میدهد. در این آموزش، قدمبهقدم این مشکل را حل میکنیم.
💡 نکته: این خطا معمولاً به دلیل وجود فضای خالی (Whitespace) یا کاراکتر BOM قبل از تگ <?xml ایجاد میشود. برای تست سریع سایت مپ خود، از یک سرور مجازی فرانسه پرسرعت استفاده کنید.
This page contains the following errors:
error on line 2 at column 6: XML declaration allowed only at the start of the document
Below is a rendering of the page up to the first error.
قبل از رفع خطا، باید بدانید چرا این مشکل رخ میدهد تا از بروز مجدد آن جلوگیری کنید.
وجود فضای خالی، Enter یا خط خالی قبل از تگ <?php یا بعد از تگ ?> در فایلهای PHP وردپرس، باعث ارسال کاراکترهای اضافی قبل از خروجی XML میشود.
برخی ویرایشگرهای متن، کاراکتر نامرئی BOM (UTF-8 BOM) را در ابتدای فایلها ذخیره میکنند. این کاراکتر قبل از <?xml قرار گرفته و باعث ارور میشود.
برخی افزونهها یا قالبهای وردپرس فضای خالی اضافی در فایلهای PHP خود دارند. فایلهای functions.php، wp-config.php و فایلهای افزونهها مظنون اصلی هستند.
این روش بدون نیاز به شناسایی فایل مشکلدار، تمامی فضاهای خالی اضافی را از خروجی XML حذف میکند.
وارد پنل مدیریت هاست خود شوید و File Manager را باز کنید. به مسیر ریشه وردپرس بروید (معمولاً public_html) — جایی که فایل wp-config.php قرار دارد.
در مسیر ریشه وردپرس (کنار فایل index.php)، یک فایل جدید با نام whitespacefix.php بسازید و کد زیر را در آن قرار دهید:
<?php
function ___wejns_wp_whitespace_fix($input) {
$allowed = false;
$found = false;
foreach (headers_list() as $header) {
if (preg_match(
"/^content-type:\\s+(text\\/|application\\/((xhtml|atom|rss)\\+xml|xml))/i",
$header
)) {
$allowed = true;
}
if (preg_match("/^content-type:\\s+/i", $header)) {
$found = true;
}
}
if ($allowed || !$found) {
return preg_replace("/\\A\\s*/m", "", $input);
} else {
return $input;
}
}
ob_start("___wejns_wp_whitespace_fix");
?>
فایل index.php در ریشه وردپرس را باز کنید و خط زیر را بلافاصله بعد از تگ <?php اضافه کنید:
include('whitespacefix.php');
فایل index.php نهایی شما باید به شکل زیر باشد:
<?php
include('whitespacefix.php');
/**
* Front to the WordPress application. This file doesn't do
* anything, but loads wp-blog-header.php which does and
* tells WordPress to load the theme.
*
* @package WordPress
*/
define( 'WP_USE_THEMES', true );
/** Loads the WordPress Environment and Template */
require __DIR__ . '/wp-blog-header.php';
تغییرات را ذخیره کنید و سپس:
yoursite.com/sitemap_index.xml)yoursite.com/sitemap_index.xmlyoursite.com/sitemap_index.xmlyoursite.com/sitemap.xmlCtrl+Shift+R)اگر روش اصلی مشکل شما را حل نکرد، این روشهای تکمیلی را امتحان کنید.
فایل wp-config.php را باز کنید. مطمئن شوید هیچ فضای خالی، خط خالی یا کاراکتری قبل از <?php و بعد از آخرین ?> (در صورت وجود) نیست. بهتر است تگ بسته ?> را حذف کنید.
فایل functions.php قالب فعال خود را بررسی کنید. فضای خالی بعد از ?> حذف کنید یا کلاً تگ بسته PHP را حذف کنید. این رایجترین منبع فضای خالی اضافی است.
تمامی افزونهها را غیرفعال کنید و سایت مپ را تست کنید. سپس یکییکی فعال کنید تا افزونه مشکلساز را پیدا کنید. افزونههای امنیتی و کش معمولاً مظنون اصلی هستند.
فایلها را با ویرایشگر Notepad++ باز کنید. از منوی Encoding گزینه "Encode in UTF-8" (بدون BOM) را انتخاب کنید و ذخیره کنید. این کار BOM نامرئی را حذف میکند.
برای اجرای بهینه وردپرس و جلوگیری از مشکلات فنی، نیاز به یک سرور قدرتمند دارید. سرور مجازی فرانسه نگارنوین با هارد NVMe فوقسریع، بهترین انتخاب برای وبمسترهای حرفهای است.
هارد NVMe · ترافیک نامحدود · پورت 10G · پشتیبانی ۲۴ ساعته
<?xml version="1.0"?> در خروجی سایت مپ وجود داشته باشد. مرورگر و موتورهای جستجو نمیتوانند فایل XML را پردازش کنند و خطا نمایش میدهند. این مشکل در تمامی افزونههای سایت مپ وردپرس از جمله Yoast SEO، Rank Math و Google XML Sitemaps رخ میدهد.whitespacefix.php معمولاً پاک نمیشود، اما فایل index.php ممکن است با آپدیت وردپرس بازنویسی شود. در این صورت، فقط کافیست خط include('whitespacefix.php'); را مجدداً به index.php اضافه کنید. توصیه میکنیم بعد از هر آپدیت وردپرس، سایت مپ را بررسی کنید.?> را حذف کنید (این یک Best Practice در PHP است). ۴) قبل از نصب هر افزونه یا قالب جدید، سایت مپ را تست کنید.با سرور مجازی فرانسه نگارنوین وردپرس خود را روی بهترین زیرساخت ابری اجرا کنید. هارد NVMe، ترافیک نامحدود، منابع اختصاصی و پشتیبانی ۲۴ ساعته!