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

- visibility ٣ mode_comment

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

دراین کد با استفاده از کلمه global متغییر wp_version که نسخه فعلی رو در خودش نگهداری میکنه احضار کردیم؛بعدشم با تابع version_compare مقایسه رو انجام دادیم،در پارامتر اول متغییر wp_version و در پارامتر دوم نسخه مورد نظر ما برای چک شدن و در پارامتر سوم هم عملگر مورد نظر برای مقایسه رو قرار میدیم.

در این جا عملگر کوچکتر رو قرار دادیم و گفتیم اگه نسخه فعلی از نسخه 3.6 کوچیکتر بود پیغام خطایی رو به خروجی ببر و نشون بده و هم چنین اجرای کد متوقف بشه.برای پوسته از این کد در فایل functions.php و برای افزونه در فایل اصلی افزونه استفاده کنید.

موفق و پیروز باشید.

comment دیدگاه کاربران
پویابهروش

این کد ، دو تا اشکال خیلی خیلی بزرگ داره که پیشنهاد میکنم از این کدها اصلا استفاده نکنید.
اولا اینکه از global استفاده شده ، که اگر کاری بخواد انجام شه رو کل وردپرستون انجام میشه و خلاصه به هم می ریزه. و همینطور اینکه کاستی های امنیتی هم داره.
مورد دوم هم یه اشتباه کدنویسی یا تجربی هستش! اینکه در این کدها باید به جای استفاده از die برای برگردوندن خطا، از echo یا پیغام قابل بندی شده وردپرس استفاده کنید.
دلیلش هم اینه که توابع وردپرس ، قبل از لود وبلاگ ، قسمت مدیریت و همه جای اون اجرا میشن. و دستور die در PHP باعث توقف باقی عملیات میشه. واسه همین اگر این پیغام بخواد ظاهر شه ، کل سایتتون واسه چند لحظه (یعنی تا زمانی که شما برید از تو هاست کدها رو بردارید) تعطیل میشه.
باور ندارید ، کافیه در کدهای به جای 3.6 مثلا یه ورژن که هنوز نیومده یا وردپرس شما از اون کمتره (مثلا 4.1) رو قرار بدید ، تا پشیمون بشیید 🙂

اصلاحاتی رو که گفتم اگه انجام بدید حله 🙂

کیوان علی محمدی

سلام دوست عزیز،اولا استفاده از global برای اجرای کد در تمام برنامه نیست،بلکه global در php برای دستیابی به متغییری هستش که خارج از میدان فعلی اسکریپت تعریف شده،متغییر wp_version استاندارد در خود وردپرس هتسش،اینکه کد رو die کردیم تماما از اجرای کد جلوگیری میکنه درسته و دلیلش هم اینه که در صورت موجود نبودن وابستگی های دیگه، کد ناقص اجرا میشه و یا اصلا اجرا نمیشه،اینکه کاربر بدونه مشکل از نسخه وردپرس هستش بهتر از اینه که با پیغام های زیادی روبرور بشه که شاید اصلا ازش سر در نیاره،استفاده از echo صرفا پیغام رو نشون میده و مانع از اجرای کد ها نمیشه.شما اگه با ساختار افزونه ها و پوسته ها آشنا باشی باید بدونید که افزونه ها در وردپرس در واقع یه نوع ماژول هستن که به بدنه اصلی وصل میشن،پس اجرای کد در افزونه به معنای اجرای کد در اون میدان تعریف شده هستش (یا محیط کاربری یا محیط مدیریت).موفق و پیروز باشید.

پویابهروش

بله می دونم که اگر افزونه مشکل داشته باشه یا پوسته ، مشکل ساز خواهد بود.
اما پیشنهاد بنده این بود که از قسمت خطای خود وردپرس استفاده کنید بهتره. چون ممکنه کاربر اگر این کد رو استفاده کنه و کل وردپرسش برای یه مدتی رو هوا بمونه ، ممکنه تازه کار باشه و ندونه چی کار کنه و همین باعث شه کلی ضرر بهش وارد شه به خاطر تعطیلی چند ساعته وبلاگش.
افزونه ها اگر سازگاری نداشته باشند ، حداکثر تا 50 درصدشون باعث بالا نیومدن سایت میشن که اگر اون پیغام با همون متن اما به صورت echo و قالب بندی شده نمایش داده بشه ، ممکنه اقدامی بکنه.
اما این کدها ، روی 50% بقیه هم اثر می ذارن که قشنگ می ره رو اعصاب آدم!
هرچند…این کدها برای استفاده ی یه کاربر معمولی نیست و برای کسیه که کد و افزونه و پوسته رو می نویسه و اون فرد قطعا با استفاده از تجربه و دانشش می تونه تشخیص بده که برای اون مورد (بر حسب حساسیت مشکل) ، die بهتره یا echo 🙂

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.