به روزرسان خودکار قالب و افزونه های وردپرس

به روزرسان خودکار عبارت مهمی توی سایت‌های فروش اشتراکی قالب و افزونه های وردپرس شده. بعضی ها افزونه به روزرسان خودکار هم ساختن که بهتر بتونن محصولات نرم‌افزاری آزاد رو ببندن و شما رو مجبور کنن برای هر دامنه، پول اضافه‌ای بپردازید. امروز می‌خوام روش ساخت یه سرور به روزرسان ساده و سرراست رو معرفی کنم که بتونین سرور آپدیت خودکار خودتون رو بسازید!

آپدیت خودکار قالب و افزونه وردپرس چیه و به چه دردی میخوره؟

وقتی شما قالبی یا افزونه‌ای رو از مخزن وردپرس نصب می‌کنین، به محض انتشار نسخه جدید، وردپرس به شما اطلاع می‌ده که به روزرسانی اومده و آپدیت کنین. چقدر قشنگ!

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

حالا فرض کنین که به هر دلیل شما از اون آپدیت مستقیم محرومین، طراح سایت یا پشتیبان سایت هستین و یا تعداد سایت‌های زیادی رو مدیریت می کنین و دستی آپدیت کردن قالب ها و افزونه‌های پریمیوم براتون وقت گیره. از طرفی هم قصد ندارین یه عالمه پول توی مارکت‌های زیرزمینی خرج کنین. چاره چیه؟ خب به راحتی یه سرور آپدیت بسازین و از این به بعد فقط یکبار فایل آپدیت رو داخل سرور بذارین تا همه وب‌سایت‌های تحت نظارت شما به روزرسانی رو به صورت خودکار دریافت کنن.

دقت کنین که من این روش رو برای مصارف شخصی پیشنهاد می دم اگر توسعه دهنده یک افزونه هستین احتمالا توی ایران نمی‌خواین GPL کار کنین و سمت کدگذاری و بستن سورس محصولتون میرین. اما اگر یک درصد خواستین مثل Updraft Plus، BBQ، Oxygen و … لایسنس گذاری و آپدیت خودکار برای محصول خودتون داشته باشین از Easy Digital Download استفاده کنید.

قدم اول: آماده سازی سرور

شما با حداقل یک هاست معمولی ساده می‌تونین سرور رو آماده کنین. البته اگر تعداد محصولات یا سایت‌هایی که آپدیت رو دریافت می‌کنن زیاد باشه شاید هاست دانلود یا سرور مجازی انتخاب بهتری باشه. اگر همه وب‌سایت‌ها داخل ایران میزبانی شدن، سرور به روزرسان رو هم داخل قرار بگیرین. پیشنهاد مقرون به صرفه برای اینکار هاست دانلود ایران ماندگار وب هست که ۱۰ گیگ رو ماهی ۲۰ تومن میدن. اگر وردپرس‌ها هم داخل هستن هم خارج، پیشنهادم هاست دانلود دایرکت ادمین های دیتا هستش که خودم استفاده می‌کنم. سرویس ماهانه ۵ هزار تومنی با ده گیگ فضاش کافیه برای این کار.

می‌تونین از یه سابدامنه مثل repo.mysite.com استفاده کنین یا یه دامنه کلا به این سرور اختصاص بدین. تفاوتی نداره به هر حال کارای ابتدایی مثل اتصال هاست به دامنه، ساخت زیردامنه و نصب SSL رو انجام بدین.

اسکریپت WP Update Server رو دانلود کنین و داخل پوشه اصلی هاست بریزید. تمام ! سرور به روزرسان شما آماده‌اس. یک پوشه به اسم packages داخل اسکریپت هست که از این به بعد قالب‌ها و افزونه های وردپرسی رو اونجا آپلود می‌کنین. برای آپلود می‌تونین از ‌Filezilla و FTP استفاده کنین یا از همون فایل منیجر دایرکت ادمین و سیپنل، بستگی به سلیقه و عادت کاری شما داره.

قدم دوم: آماده سازی افزونه ها و قالب ها برای به روزرسانی

خب حالا برای اینکه قالب و افزونه‌هایی که توی سایت‌های وردپرسی خودتون نصب می‌کنین بفهمن که باید از اینجا آپدیت بشن باید یه قطعه کد داخل اون ها قرار بدین. اکثر سایت‌هایی که میبینین آپدیت خودکار ارائه میدن هم همین کارو می کنن. حالا یک عده این بخش رو کدگذاری می‌کنن که کسی نبینه و نتونه تغییرش بده و یه عده نه. ما هم که کلا برای استفاده شخصیمونه بنابراین اهمیتی نداره برامون که این کدها رو پنهان بکنیم.

فایل افزونه و قالب باید با فرمت zip و قابل نصب مستقیم از پیشخوان وردپرس باشه. یعنی RAR نباشه و فقط یک پوشه اصلی افزونه داخلش باشه. اسم فایل zip هم همون اسم رسمی افزونه و پوشه داخل فایل باشه.

کپی پوشه Update Checker

اولین و مهم‌ترین کاری که باید انجام بدین اینه که Plugin Update Checker رو دانلود کنین و پوشه اون رو داخل پوشه اصلی افزونه کپی کنین.

کد به روزرسانی افزونه ها

داخل پوشه هر افزونه وردپرسی یه فایل php هم اسم افزونه وجود داره. این فایل رو باز کنین و در انتهای اون کد زیر رو قرار بدین

//updater
require 'plugin-update-checker/plugin-update-checker.php';
$MyUpdateChecker = Puc_v4_Factory::buildUpdateChecker(
	'https://repo.mysite.com/?action=get_metadata&slug=FOLDERNAME', 
	__FILE__, 
	'FOLDERNAME'
);

ولی قبلش دو تا تغییر باید بدین:

  • به جای FOLDERNAME دقیقا اسم فایل اصلی افزونه یا همون اسم پوشه اصلی افزونه رو قرار بدین
  • به جای repo.mysite.com آدرس دامنه یا زیردامنه خودتون رو وارد کنید. دقت کنید که اگه اسکریپت ها رو داخل یه فولدر دیگه گذاشتین باید آدرس دایرکتوری رو هم بزارید مثلا repo.mysite.com/update و پروتکل https:// اولش رو هم یادتون نره

موقع قرار دادن کد هم دقت کنین که اگه آخر فایل دیدین یه تگ <? وجود داره کد رو قبل از این تگ که مربوط به بسته شدن php هست قرار بدین. البته فقط تعداد کمی از افزونه ها و قالب‌ها هستن که تگ php رو اینجا میبندن اما به هر حال حواستون بهش باشه.

حالا که پوشه چکر و کد مربوط به اون رو به افزونه اضافه کردیم می‌تونیم فایل zip جدید افزونه‌ رو توی هاست و داخل پوشه packages قرار بدیم. از این به بعد این افزونه رو می‌تونین همه جا نصب کنین و برای آپدیت کردنش یکبار مراحل رو برای فایل جدید تکرار می‌کنین و اون رو جایگزین فایل قبلی داخل هاست می‌کنین. بالافاصله آپدیت منتشر میشه.

کد به روزرسانی پوسته ها

برای قالب‌ها هم روند کار دقیقا مشابه افزونه هاست. پوشه آپدیت چکر رو داخل پوشه اصلی قالب قرار میدین. کدی که بالا گذاشتم رو ادیت می‌کنین و اسم اون قالب رو عین اسم پوشه‌اش میذارین و درنهایت کد رو به انتهای فایل functions.php قالب اضافه می‌کنید و فایل زیپ جدید رو توی هاستتون آپلود می‌کنید.

تست فایل ها قبل از آپلود

معمولا دفعات اول آدم ممکنه اشتباهاتی کنه که باعث بشه افرونه بعد از نصب خطا بده یا حتی کل وردپرس رو دچار اختلال کنه. بنابراین چه برای این مورد چه برای موقعیت‌های دیگه پیشنهاد میشه قبلش افزونه یا قالبتون رو چک کنین. می تونین از سرویس TasteWP استفاده کنین که پنلی رو در اختیارتون قرار میده تا به شکل رایگان و سریع وردپرس‌های تستی بسازین. نیازی به هاست و دامنه و دردسرهاشم نداره اما سایتی که ساختین بعد از ۷ روز حذف میشه! فقط برای تست خوبه.

پاسخ‌ها

  1. حسین اسماعیلیان نیم‌رخ
    حسین اسماعیلیان

    مقاله بسیار ارزشمند و غنی شده رو انتشار دادی به جامعه ما برنامه نویسان ایرانی کمک کردی

    سپاس از شما

    1. خاکستری نیم‌رخ
      خاکستری

      ممنون از لطف و توجه شما حسین عزیز

  2. مجتبی نیم‌رخ

    سلام
    مطلب خیلی خوبی بود خیلی دنبالش بودم اما شما بدون هزینه و بی منت به اشتراک گذاشتی

    ممنونتم
    اگه آموزشی هم برای کد کردن و لایسنس گذاری رو قالب های ورد پرس بزاری خیلی میتونه کمک مون کنه

    مرررررررررررررررررررررررررسی

    1. خاکستری نیم‌رخ
      خاکستری

      سلام مجتبی جان، خوشحالم که مطلب مفید بوده براتون. دنبال کد کردن نرفتم هیچوقت ولی برای لایسنس گذاری می‌تونید یه نگاه به Easy Digital Downloads بندازید که افزونه برای لایسنس گذاری داره. افزونه‌های بزرگ و معتبر زیادی از همین برای فروش و لایسنس گذاری استفاده می‌کنن.

  3. محمدحسین نیم‌رخ
    محمدحسین

    واقعا ممنون که انقدر قشنگ توضیح دادین فقط چه طور میتونیم اسکریپت رو به هاست دانلود انتقال بدیم و قالب و افزونه رو هم تو هاست دانلود آپلود کنیم.ممنونم

    1. خاکستری نیم‌رخ
      خاکستری

      مرسی محمدحسین عزیز. کانفیگ خاصی نداره از لینک هایی که توی نوشته گذاشته شده اسکریپت رو دانلود کنید بعد برید از کنترل پنل «هاست دانلود» آپلود کنید و اکسترکش کنید تمومه. (از هر هاستی می تونین استفاده کنین حالا هاستای دانلود یکم ارزون ترن برای همین پیشنهاد دادم فقط حواستون باشه که هاسته php داشته باشه) قالب و افزونه ها رو هم به همین طریق آپلود کنید داخل پوشه Packages که توی اسکریپت تعریف شده.
      به جز کنترل پنل هاست می تونین از پروتکل FTP و نرم افزار Filezilla هم برای انتقال دادن فایل‌ها به هاستتون استفاده کنید.

  4. محمدحسین نیم‌رخ
    محمدحسین

    آقا ما اسکریپت رو داخل public_html کپی کردیم اما آپدیت خودکار کار نکرد.به نظر شما مشکل چیه باید اسکریپت رو جای دیگه ای کپی کنم؟

    1. خاکستری نیم‌رخ
      خاکستری

      خود اسکریپت مشکلی نداره معمولا مشکل از سمت افزونه‌ها و قالب‌هاییه که آماده میشن. چک کنین که کد و آدرس سرور درست وارد شده باشن و اینکه ورژن افزونه ای که نصب می کنید رو دستی بیارید پایین ببینید آپدیت رو تشخیص میده یا نه

  5. محمدمهدی بابازاده نیم‌رخ
    محمدمهدی بابازاده

    با سلام و عرض ادب
    بعد از اضافه کردن کد به فانکشن قالب
    خطای ((یک خطای مهم در این وب سایت رخ داده است.)) رو نمایش میده
    ممنون میشم راهنماییم کنید.

    1. خاکستری نیم‌رخ
      خاکستری

      سلام
      موقع قرار دادن کد دقت کنین که اگه آخر فایل دیدین یه تگ

      1. محمدمهدی بابازاده نیم‌رخ
        محمدمهدی بابازاده

        دقیقا طبق آموزش جلو رفتم و این خطا رو بهم نمایش داد

        تغییرات کد PHP شما، به دلیل یک خطا در خط 26 از فایل wp-content/themes/Megamim/functions.php بازگردانده شد. لطفا اصلاح نمایید و دوباره سعی کنید که ذخیره نمایید.

        Uncaught Error: Class 'Puc_v4_Factory' not found in wp-content/themes/Megamim/functions.php:26
        Stack trace:
        #0 wp-settings.php(585): include()
        #1 wp-config.php(96): require_once('/home/bbzadeh/p...')
        #2 wp-load.php(50): require_once('/home/bbzadeh/p...')
        #3 wp-admin/admin.php(34): require_once('/home/bbzadeh/p...')
        #4 wp-admin/theme-editor.php(10): require_once('/home/bbzadeh/p...')
        #5 {main}
          thrown
        
        1. خاکستری نیم‌رخ
          خاکستری

          پوشه plugin update checker رو داخل پوشه قالب بزارید و کد زیر رو رو داخل فایل فانکشن ها:

          //updater
          require 'plugin-update-checker/plugin-update-checker.php';
          $MyUpdateChecker = Puc_v4_Factory::buildUpdateChecker(
           'https://REPOADRESS.COM/?action=get_metadata&slug=FOLDERNAME',
           __FILE__,
           'FOLDERNAME'
          );
          

          جاهایی که با حروف بزرگ هست تغییر بدید

  6. مهدی حسینی نیم‌رخ
    مهدی حسینی

    با سلام و وقت بخیر خدمت شما، بنده هر کاری کردم خطا دریافت کردم، حالا نمیدونم علتش چیه، چون هاستم php نبود و هاست php گرفتم، هر تغییراتی هم دادم اثر نکرد و خطای “یک خطای مهم در این وب سایت رخ داده است” نشون میده و فقط با پاک کردن کدی که به افزونه اضافه کردم از بین میره. ممنون میشم اگه لطف کنین از طریق ایمیل در ارتباط باشیم و بطور خصوصی راهنماییم کنین با تشکر از زحمات شما

    1. خاکستری نیم‌رخ
      خاکستری

      سلام مهدی عزیز براتون ایمیل فرستادم تا نمونه کدی که نوشتین رو بفرستین

      1. مهدی حسینی نیم‌رخ
        مهدی حسینی

        سلام و درود بر شما، براتون ارسال شده میتونین چک کنین. مرسی

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

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