ممکن است خیلی از خطاهای رایج رو در اینترنت پیدا نکنیم. یا شاید مشکلی که داریم با مسئله‌ای با جستجوی ما در گوگل بسیار متفاوت باشد. در نتیجه در اینجا من به صورت ناگهانی با خطای XML نقشه سایت Yoast مواجه شدم با همچین خطایی که در زیر مشاهده می کنید.

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.

This page contains the following errors:

در صورتی که زمانی ما سایت مپ رو میزنیم باید بر روی صفحه همچین نمونه ای از سایت مپ را مشاهده کنیم.

سایت مپ اصلی در یواست

این خطا در بسیاری از قابلهایی که با ioncube فشرده سازی و کد گذاری اتفاق میافتد. اما برخی قالبهایی که دارای خطای فاصله در در فایل function.php و یا کد به صورت <?php ?> در پایان کد بسته نشده اتفاق میافتد. گاهی هم در بین پلاگین ها نیز ممکن است با دو مشکل٬ فاصله در فایل ها و یا نبستن کد <?  در پایان اتفاق بیافتد.

اما چندین راه حل وجود دارد. که به دو تا آن اشاره کردیم و یکی دیگر از راه حل ها می توان به تست غیرفعال کردن افزونه ها پرداخت.

  • مشکل از افزونه Yoast SEO نیست. از پلاگین یا تم دیگری وارد شده است. علت واقعی کمی عجیب است. این به دلیل فضای اشتباه در بالای (یا احتمالاً پایین) یک فایل php است.
  • تشخیص اینکه کدام فایل مشکل را ایجاد می کند می تواند کمی مشکل باشد.

همچنین بخوانید : 10 راهنمای کامل برای انتشار افزونه در مخزن وردپرس

رفع خطای XML نقشه سایت Yoast

  • کپی کردن فایل های اصلی وردپرس و جایگزین آن با فایل های قبلی
  • همه افزونه ها غیر از Yoast SEO را غیرفعال کنید
  • قالب را به Twenty Twenty تغییر دهید
  • پلاگین ها و تم ها را یکی یکی فعال کنید تا ببینید کدام یک باعث خطا می شود
  • فایل ها را مرور کنید، به دنبال یک خط خالی قبل از بیانیه <?php باشید

البته این موارد میتواند به شما کمک کند و حتی مشکل را بتوانید حل کنید. اما راه حل دیگری نیز وجود دارد و ممکن است به احتما 90درصد مشکل شما را حل کند.

استفاده از یک فایل اضافه برای رفع خطای XML نقشه سایت Yoast

ابتدا توضیحی دهیم در مورد اسکریپتی که قرار است مشکل ما را حل کند:

<?php
/* From: https://wejn.org/stuff/wejnswpwhitespacefix.php.html
 * ----------------------------------------------------------
 * Author: Michal "Wejn" Jirků {box at wejn dot org}
 * License: MIT
 * Version: 2.1
 * Changelog:
 * - Added better mime-type detection
 * - Now works even when C-T header not set
 * - Changed intro text to better target keywords
 * - [2.1] Added tip from Eric Auer
 */
function ___wejns_wp_whitespace_fix($input) {
  /* valid content-type? */
  $allowed = false;

  /* found content-type header? */
  $found = false;

  /* we mangle the output if (and only if) output type is text/* */
  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;
    }
  }

  /* do the actual work */
  if ($allowed || !$found) {
    return preg_replace("/\\A\\s*/m", "", $input);
  } else {
    return $input;
  }
}

/* start output buffering using custom callback */
ob_start("___wejns_wp_whitespace_fix");

 

با تشکر از نوشتن wejnswpwhitespacefix.php به غیر از استفاده از آن به عنوان حل مشکل به روشی که در کد شما توضیح داده شده است، این اصلاح همچنین می تواند به عنوان ابزاری برای رفع خطای XML نقشه سایت Yoast مشکلات فضای خالی استفاده شود. در اینجا به این صورت است:

  • اسکریپت خود را در داخل فایلی در سرور خود وارد کنید .
  • ابتدا فایلی در سرور با نام wejnswpwhitespacefix.php ایجاد نمایید.
  • سپس اسکریپت بالا را در داخل آن را کپی کنید.
  • فایل index.php در وردپرس خود باز کنید

خطای XML نقشه سایت Yoast

  • سپس تکه کد زیر را در فایل index.php وارد در بالای کد های WP_USE_THEMES وارد نمایید.
include("wejnswpwhitespacefix.php");
  • حالا فایل خود را ذخیره نمایید و به نقشه سایت خود مراجعه کنید.

نحوه عملکرد فایل wejnswpwhitespacefix.php

هر زمان که اسکریپت قبل از هر چیزی که فضای خالی اضافی را ارسال کند گنجانده شود، خطای XML نقشه سایت Yoast نیز برطرف می‌شود.

از طریق wp-blog-header.php، wp-load.php، wp-config.php به wp-settings.php رفتم و متوجه شدم که در لحظه ای که TEMPLATEPATH/functions.php بارگذاری شد، خطای مذکور پیدا شد.. معلوم شد که فایل functions.php پس از آخرین تگ ?> فضای خالی دارد. از آنجا که خارج از تگ‌های php، همه چیز محتوای خام است، آن فضای خالی به هر صفحه وب و فید اضافه می‌شود. با حذف فضای خالی یا کل تگ ?>، مشکل برطرف شد.

منبع : wejn.org

 

دسته بندی شده در: