مشکلات پنهان وردپرس
یکی از عمده ترین مشکلات نرم افزارهای بازمتن( Open Source ) اینه که چون مدیریت واحدی روی اونها اعمال نمی شه ، تغییرات عمده روی اونها فقط در قسمت هایی اعمال می شه که پرکاربرد هستند ، یعنی اگر بعضی امکانات یک نرم افزار باز متن کمتر مورد استفاده قرار بگیرند، اون قسمت ها بیشتر در معرض فراموشی از سوی توسعه دهندگان و در نتیجه بیشتر حاوی اشکال هستند.
وردپرس هم که یک نرم افزار بازمتن هست ، از این قاعده مستثنی نیست، من علاقه خاصی به این نرم افزار دارم ولی دلیلی نمی بینم که اشکالاتش رو هم پنهان کنم.
در واقع بزرگترین ضعف وردپرس در کنار تمام حسن هاش ، عجول بودن بیش از حد تیم توسعه دهندگانش و بسته عمل کردن اون هاست. وردپرس از نسخه ۱.۵ به بعد ، سیستم کلاسیک template رو به سیستم پیشرفته تر theme (که قابلیت تعویض با یک کلیک را دارند) ارتقا داد. این سیستم جدید به همراه معماری منحصر به فرد وردپرس در زمینه پلاگ-این ها ، وردپرس رو به جدی ترین رقیب نرم افزارهای مشابه خودش مثل Movable Type تبدیل کرد.
تا جایی که همه با وردپرس سروکار دارند، چون به صورت پیش فرض از سیستم theme استفاده می کنند، به مشکلی برخورد نمی کنن و اگر هم مشکلی پیش بیاد ، سریعا از سوی تیم توسعه دهندگانش رفع می شه . ولی بعضی وقت ها چیزها به خوبی که انتظارش رو داریم نیستند.
برای پروژه یکی از دوستان ، می خواستم وردپرس رو درون یک کار از قبل آماده شده قرار بدم ، از اون جایی که این دوستم زیاد با صفحه های Dynamic کار نکرده بود ، تصمیم گرفتم که به جای درست کردن یک theme از همون روش کلاسیک وردپرس – بدون theme – استفاده کنم
. فایل index.php در شاخه اصلی وردپرس فقط ۲ خط کد php به صورت زیره:
<?php
/* Short and sweet */
define('WP_USE_THEMES', true );
require('./wp-blog-header.php ');
?>
اگر ثابت WP_USE_THEMES مقدار true داشته باشه ، از سیستم theme ها استفاده می شه یعنی وردپرس به سراغ تنظیمات می ره و فایل های template رو از پوشه wp-includes/themes/THEME NAME/ بر می داره . ولی اگر این متغیر رو false کنیم ، انتظار داریم بتونیم تو همین فایل index.php ، تمپلیتمون رو پیاده سازی کنیم ، ولی در عمل چنین کاری بدون اشکال نیست.
مثلا هنگامی که بخوایم پنجره جداگانه ای برای کامنتها باز کنیم ، و هنگامی که از comments_popup_link استفاده می کنیم ، تو این تابع هیچ امکانی برای این موضوع در نظر گرفته نشده و این تابع سعی می کنه فایل های موردنظر خودش رو یه جایی تو wp-includes/themes/ پیدا کنه ، نه تو شاخه اصلی.
یه چنین اشکالاتی چندین جای دیگه هم وجود دارند – البته من فقط ۳ جا که به کارم مربوط بود پیداشون کردم – و من مجبور شدم ، تو اون قسمت ها تغییراتی رو به وجود بیارم.
تصمیم دارم بعد از پایان این کار تغییراتی رو که اعمال کردم ، این جا ثبت کنم تا رسیدگی بشه ، کسی از دوستان راه بهتری سراغ داره ؟



