دوشنبه ۳۰ اردیبهشت ۱۳۹۸

رفع مشکل علامت سوال در وردپرس

خانه / وردپرس / آموزش وردپرس / رفع مشکل علامت سوال در وردپرس

رفع مشکل علامت سوال در وردپرس

ظاهر سایت مهم ترین بخش از نظر کاربران می باشد که باید مورد توجه مدیران سایت قرار گیرند در بسیاری از سایت ها با مشکل تبدیل حروف فارسی به علامت سوال دیده می شود که بسیاری از افراد به دنبال رفع این مشکل می باشند .

اگر کل سایت شما با این مشکل مواجه است به احتمال زیاد از utf-8 نبودن انکود صفحه شما است پس برای رفع این مشکل کد های قالب وردپرس خود را در نرم افزار Notepad++ باز نمایید و از منوی Encodeing آن را به UTF-8 With out BOM تغییر دهید.

یک نکته دیگر برای زمانی است که سایت شما با صفحه مرگ یا صفحه سفید دست و پنجه نرم میکند اگر تمام راه هایی که رفتید به این نتیجه رسیدید که مشکل از قالب شماست یا اینکه با فعال کردن قالبی قسمتی از تنظیمات درست کار نمیکرد یا مواردی این چنین و شما به آن قالب نیاز دارید بررسی کنید که تمامی فایل ها خصوصا فایل توابع قالب شما از رمزنگاری UTF-8 With out BOM استفاده کرده باشد . با این روش مشکل صفحه مرگ رفع خواهد شد اگر این مشکل از قالب یا افزونه وردپرس باشد میتوانید اینکار را انجام دهید توجه کنید که ابتدا تمام روش های معرفی شده برای رفع مشکلات وردپرس را پیگری کنید اگر مطمئن شدید مشکل از قالب است اینکار را انجام دهید

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

رفع مشکل علامت سوال در وردپرس

رفع مشکل علامت سوال در وردپرس با تابع mb_substr

اگر شما با این مشکل تنها در بخش فوتر و یا سایدبار مواجه هستید باید تابع substr را چک نمایید چرا که این تابع برای کوتاه کردن عنوان نوشته ها مورد استفاده است  . کدی که موجب نمایش علامت سوال در وردپرس میشود substr نام دارد از این کد برای کوتاه کردن متن استفاده می شود به طور مثال ممکن است طراح قالب برای بخش های مختلف تعداد کاراکتر را تعیین کرده باشد که تا آن تعداد به کاربران نشان داده شود به طور مثال عدد ۴۰ را برای تعداد کاراکتر ها انتخاب نموده است اگر شما بیشتر از این تعداد را وارد کنید برای زیبایی قالب از علامت سوال استفاده خواهد شد که اصولا این مشکل برای افرادی که فارسی سازی قالب وردپرس انجام میدهند پیش آید چرا که substr برای قالب های خارجی وردپرس مورد استفاده است و در فارسی باید به صورت mb_substr استفاده شود پس در سایت های فارسی باید به جای substr کد mb_substr را وارد کنید تا مشکل برطرف شود .

مطلب پیشنهادی  ایجاد فایل پشتیبان از دیتابیس وردپرس به صورت دستی

اگر کد شما به صورت زیر باشد :

</div><div>&lt;?php $short_title= substr(the_title('','',FALSE),0,40); ?&gt;</div><div>
باید آن را تغییر داده و به صورت زیر بنویسید
</div><div>&lt;?php $short_title= mb_substr(the_title('','',FALSE),0,40); ?&gt;</div><div>

رفع مشکل علامت سوال در وردپرس با تابع shortTitle

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

<?php shorttitle() ?>

حل مشکل تبدیل حروف فارسی به علامت سوال در وردپرس

یکی از مشکلاتی که در طراحی وب فارسی ممکن است پیش آید منطبق نبودن فرمت جداول دیتابیس با زبان فارسی می باشد و مشکلی که بسیاری از کاربران وردپرسی با آن مواجه شوند نمایش حروف فارسی به صورت  علامت سوال (؟؟؟؟؟؟) می باشد چنین مشکلی به چند دلیل ممکن است رخ دهد .

۱- یونیکد دیتابیس

وارد هاست خود شده و سپس به بخش phpmyadmin رفته و دیتابیس مورد نظر خود را پیدا کنید.  در صورتی که UTF-8 برای دیتابیس انتخاب نشده باشد با علامت سوال ؟؟؟؟ به جای عبارات فارسی روبرو خواهیم شد به همین خاطر باید در ابتدا فرمت جداول دیتابیس به حالت UTF-8 تنظیم و سپس آن را ایجاد کنیم . این مشکل در زمان فراموشی تنظیم این مورد و یا در زمان ایجاد تغییرات در این فرمت به وسیله ی اسکریپ ها مواجه هستیم .

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

کد را اینجا بزار

۲- یونیکد فایل PHP

یکی دیگر از دلایلی که این مشکل را به وجود می آورد ذخیره فایل php با یونیکد غیر استاندارد است که برای رفع این مشکل باید فایل php خود را مجدد با ادیتور notepad++ ویرایش کرده و با فرمت utf-8 ذخیره کنید و مجددا در محل مناسب آپلود نمایید .

۳- ارتباط استاندارد با دیتابیس

برای حل این مورد کد زیر را قبل از ارتباط سیستم با دیتابیس وارد کنید .

mysql_query(“SET CHARACTER SET utf8″);

۴- پشتیبانی متا تگ utf-8 از سایت

شما باید این امکان را در هدر سایت meta charset جستجو کنید و اگر متا تگ را پیدا نکردید کد زیر را در هدر قرار دهید .

header(‘Content-Type: text/html; charset=utf-8’);

علامت سوال ؟؟؟؟؟ شدن نوشته های یک سایت

کاراکترهای فارسی در سایت باید بصورت UTF-8 اجرا شوند چه در هنگام ذخیره شدن فایلهای فارسی توسط Editor و چه در ذخیره ی اطلاعات در دیتابیس ، نکته ای که وجود دارد این است که اگر یک سایتی را تازه روی یک سرور نصب کنید ، مشاهده خواهید کرد که نوشته ها بصورت علامت سوال در می آید که چنین مشکلی معمولا از charset دیتابیس است .

مطلب پیشنهادی  قالب وردپرس فروشگاهی aloshop برای ووکامرس

البته چندین راه اشتباه وجود دارد که باید بررسی شوند مثلا ممکن است دیتابیس utf-8 نباشد یا قالب نوشته شده بصورت utf-8 ذخیره نشده باشد یا نوع ut-8 در ادیتورهایی که چند حالت برای utf-8 دارند بر روی utf-8 without BOM قرار نداشته باشد و همه این ها باعث به هم ریختگی نوشته های پیش فرض قالب شده باشد . برای یافتن منبع مشکل باید وارد phpmyadmin  یا دیتابیس خود شده و به دنبال نوشته های فارسی باشید اگر آنجا هم بصورت علامت سوال باشد ، مشکل از دیتابیس است اما اگر در آنجا درست ذخیره شده باشد باید نگاهی به charset قالب بیندازید و در تگ HEAD سورس آن چک کنید .

عبارت زیر باید در قالب شما موجود باشد :

</div>
<div><html xmlns="http://www.w3.org/1999/xhtml" dir="rtl" lang="fa-IR"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"</div>
<div></div>
<div>برای رفع کردن این مشکل ابتدا آن کامپوننت را حذف کنید بصورت کامل و در phpmyadmin دیتابیس را به unicode UTF-8 تغییر دهید . در phpmyadmin وارد دیتابیس شده و دربرگه Operations در قسمت Collation یک لیستی قرار دارد که باید بر روی utf8-unicode-ci قرار داشته باشد که اگر غیر از این گزینه بود باید آن را به این گزینه تغییر داده و Go را بزنید ، تا table هایی که بعد از این در دیتابیس ایجاد می شوند ، دارای charset یونیکد utf8 باشند ، table های قبلی اگر دارای charset های دیگر باشند تغییری در آنها انجام نخواهد شد . حال می توانید هر کامپوننت ای که مشکل داشتید را نصب کنید و تست خود را انجام دهید .</div>
<div>

اگر کل نوشته های دیتابیس موجود این مشکل را دارا می باشند و نمی توانید آن را دوباره با این شرایط تغییر داده شده نصب کنید ، باید در phpmyadmin بطور دستی table های موجود را edit کرده و روی utf-8 قرار بدهید و ذخیره کنید .

البته توجه داشته باشید ممکن است با وجود unicode بودن پیش فرض جداول دیتابیس باز هم چنین مشکلی را مشاهده کنید که شما باید با نصب چند سیستم مدیریت محتوا مثل وردپرس یا جوملا این مورد را تست کنید ، اگر با جوملا و وردپرس مشکل وجود نداشت و فقط یک اسکریپت خاص علامت سوال را نمایش می داد و table های آن هم unicode utf8 بود باید به نوع کانکشن اسکریپت با دیتابیس توجه کنید ، دقیقا در جایی که دستورات اتصال با دیتابیس قرار داده می شوند که بعد از نوشتن عبارت اتصال :
<div class="container">
<div class="line number1 index0 alt2"></div>
<div>$connection= mysql_connect(DB_SERVER,DB_USER,DB_PASS);</div>
<div>
جمله ی زیر هم نوشته شود تا اتصال بصورت utf-8 برقرار شود .
</div>
<div>

mysql_set_charset('utf8',$connection);
نکته مهمی که باید به آن توجه داشت ، این مورد است که اگر سایت فارسی ای را برای هر اسکریپت یا CMS می خواهید راه اندازی کنید قبل از نصب و وارد شدن table ها بطور خودکار در هنگام نصب ، collation دیتابیس را به طور پیش فرض در مسیر گفته شده به unicode utf-8 تغییر دهید .
اصلا خوب نبودمیتونه بهتر باشهقابل قبولهخوب بودعالی بود (شما اولین نفر باشید!)

  • دیدگاهتان فقط و فقط در رابطه با همین مطلب باشد.
  • لطفا از تایپ فینگلیش بپرهیزید. در غیر اینصورت دیدگاه شما بررسی نخواهد شد.
  • هدفتان از ارسال دیدگاه تبلیغ یا بک لینک نباشد. در غیر اینصورت دیدگاه حذف می شود.
  • به دیگر توهین و اهانت نکنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *