حل مشکل چپ و راستی محیط مدیریت
تیر ۳۱م, ۱۳۸۹
برای راه اندازی سایتی چند زبانه که با وردپرس راه اندازی شده بود از WPML استفاده کردم. باید بگم این افزونه بهترین افزونه برای ساخت سایت چندزبانه بوده که تا حالا در هر سیستمی دیدم. تنها مشکلش اینه که با فعال کردنش محیط مدیریت رو می کنه از چپ به راست. در واقع مانع بارگذاری شیوه نامه راست به چپ می شه که یعنی فونت های محیط مدیریت هم به هم می ریزن.
با نگاه به سورس صفحه متوجه شدم که در محیط مدیریت فایل wp-admin/load-style.php با پارامتر dir=ltr فراخوانی شده. بنابراین باید وردپرس رو وادار کنیم dir=rtl باشه.
راه من خیلی تخمیه. ولی کار می کنه. فایل load-style.php رو که باز می کنیم در حول و حوش خط ۱۲۸ یه همچین چیزی می بینیم:
(من از وردپرس ۳٫۰ استفاده می کنم)
if ( $rtl && isset($style->extra['rtl']) && $style->extra['rtl'] ) {
$rtl_path = is_bool($style->extra['rtl']) ? str_replace( '.css', '-rtl.css', $path ) : ABSPATH . $style->extra['rtl'];
$content .= get_file($rtl_path) . "\n";
}
تنها کاری که من کردم برداشتن شرط بود تا همیشه الحاق فایل rtl انجام بشه.
این ایده خیلی بدیه. پس فردا که آپدیت کردیم این تغییرات می پره. معمولاً در این مواقع از API وردپس برای فیلتر کردن توابع استفاده می کنند تا مجبور به ویرایش مستقیم فایل های وردپرس نشند ولی مشکل این جاست که این تکه کد درون هیچ تابعی نیست!
به هر حال، من آدم تنبلیم، حوصله جستجو برای راه حلو ندارم! همین برداشتن شرط (فعلاً) کار می کنه.
تیر ۳۱م, ۱۳۸۹ در ۳:۳۲ ب.ظ
با سلام. فکر می کنم بعد از ایجاد تغییر در پلاگین برای اینکه Update نشه و تغییرات شما از بین نره بهترین راه اینه که نام پلاگین رو تغییر بدید.
تبریک می گم. وبلاگ خوبی دارید. نوشته های شما رو از طریق فید دنبال می کنم.
مرداد ۱م, ۱۳۸۹ در ۱۲:۳۸ ق.ظ
نمی شد تو فایل توابع پوسته همین شرط رو برعکس گذاشت ؟ فک کنم کار کنه
مرداد ۲م, ۱۳۸۹ در ۱:۱۹ ق.ظ
@منوچهر: در اینجا ما افزونه ننوشتیم و مستقیماً فایلهای خود وردپرس رو دستکاری کردیم.
@حسام: چرا میشه، اگه بدونید که hook مناسب برای اتصال بهش چی هست. یعنی دقیقاً بدونید باید دستورات وردپرس رو کی فیلتر کنید و نتیجه رو تغییر بدید.
مشکل اینه که این قطعه کد تو هیچ تابعی نیست که بشه فیلترش کرد!