كيفية تثبيت WordPress باستخدام Composer: دليل التثبيت خطوة بخطوة

نشرت: 2023-02-28

مقدمة: لماذا Composer base WordPress؟

مثل أي تطبيق آخر ، يكون موقع WordPress الخاص بك أكثر أمانًا عندما يمكنك ضمان إنشاءات قابلة للتكرار وتحديثات قابلة للالتزام لكودك وتبعياته. يتم الالتزام ببنيتك الأساسية من خلال مجموعة من ملفات التكوين التي تحدد إصدار PHP و MariaDB الذي تريد استخدامه. هذه هي أفضل طريقة لضمان بقاء مشروعك قابلاً للتكرار عند تطوير ميزات جديدة.

يجب أن تعمل نواة WordPress ، بالإضافة إلى السمات والمكونات الإضافية ، بشكل مثالي بنفس الطريقة ، ولكن في كثير من الأحيان ليس هذا هو الحال. توفر لوحة إدارة WordPress أزرارًا بنقرة واحدة لتحديث جميع هذه المكونات عندما تكون قديمة أو تتوقع بطريقة أخرى كتابة الوصول إلى نظام الملفات لإجراء تغييرات التكوين في وقت التشغيل. ومع ذلك ، فإن التطوير بهذه الطريقة له عواقبه.

أولاً ، لن يكون لديك دائمًا حق الوصول للكتابة إلى نظام الملفات في وقت التشغيل. لذلك ، اعتمادًا على هذه الآلية ، يتم تقييد تغييرات التكوين والتحديثات تمامًا للعديد من حلول الاستضافة. من ناحية أخرى ، إذا كان لديك حق الوصول للكتابة في وقت التشغيل حيث تستضيف حاليًا ، فإن تثبيت وحدة نمطية أو سمة جديدة يمثل مخاطرة أمنية غير بديهية (عندما يكون المصدر غير معروف).

ولكن ، ربما الأهم من ذلك ، أن تحديث WordPress في وقت التشغيل يفصل حالة موقعك عن الكود الموجود في المستودع الخاص بك. زميل يعمل على ميزة جديدة على نسخته المحلية من المشروع يمكن أن يكون نسخة كاملة من الموقع المباشر. كنتيجة لسير العمل هذا ، يمكنك إدخال أخطاء ذات عواقب غير معروفة (وغير مختبرة).

مزايا استخدام الملحن

بالنظر إلى الحقائق المذكورة أعلاه ، فإن إدارة موقع WordPress الخاص بك باستخدام Composer لها مزايا واضحة. أولاً ، يسمح لك بتحديد التبعيات الخاصة بك بشكل صريح في ملف ملتزم (composer.lock). يتم إنشاء ملف القفل هذا من قائمة وصفية لقيود التبعية (composer.json) عندما يتم تثبيت تبعياتك ، ويصبح جزءًا من محفوظات الالتزام الخاصة بمشروعك. من ذلك الحين فصاعدًا ، سيعمل أي فرع جديد بدءًا من نفس مجموعة التبعيات وصولاً إلى تجزئة الالتزام الدقيقة. في هذه المرحلة ، لا يهم من يساهم في المشروع أو حتى مكان نشره - إنه نفس الرمز للجميع في كل مكان.

يزيل Composer أيضًا الحاجة إلى تخصيص الكثير من التعليمات البرمجية الخارجية إلى مستودعك. في حالة WordPress ، يتطلب منك عدم استخدام Composer عادةً أن تلتزم بكل التعليمات البرمجية للقالب ، وحتى في WordPress الأساسية والإضافات نفسها ، بمشروعك الخاص. إلى جانب جعل المستودع كبيرًا بشكل غير ضروري وبطيء الاستنساخ ، يصبح تحديث هذه النسخ عملاً شعوذة لا يحتاج أي شخص للتعامل معه.

باستخدام Composer ، يمكنك إضافة التبعيات وتحديثها إلى مشروعك ثم قفل إصداراتها الدقيقة بحيث يحصل كل فرع جديد على نفس التحديث. إذا تم إجراء التحديث على الموقع الذي تم نشره في وقت التشغيل ، فسيتعين عليك تذكر أن تقوم بالسحب أولاً.

تثبيت نواة ووردبريس مع Composer

بالطريقة نفسها ، فإن استخدام Composer يجعل من غير الضروري بالنسبة لك ربط كل WordPress في مستودعك حيث يمكنك إضافته كعنصر تابع. هناك عدة طرق للقيام بذلك (مثل Bedrock) ، اعتمادًا على عدد الافتراضات التي تريد إجراؤها للتكوين وهيكل المشروع. يستخدم أبسطها شوكة John Bloch Composer لإضافة مُثبِّت إلى تصميماتك لـ WordPress:

 يتطلب الملحن $ johnpbloch / wordpress-core-installer
يتطلب الملحن $ johnpbloch / wordpress-core

سيقوم الأمر أعلاه بإنشاء ملف composer.json وتثبيت WordPress core في دليل WordPress. سيبدو الملحن json هكذا

 {
    "يتطلب": {
        "johnpbloch / wordpress-core-installer": "^ 2.0"،
        "johnpbloch / wordpress-core": "^ 6.1"
    } ،
    "التكوين": {
        "allow-plugins": {
            "johnpbloch / wordpress-core-installer": صحيح
        }
    }
}

لدينا نواة WordPress في مجلد WordPress. لكننا نحتاج إلى نسخ index.php خارج دليل WordPress حتى نتمكن من توجيه خادم الويب إلى الدليل الجذر.

لإدارة WordPress باستخدام Composer بشكل كامل ، نحتاج إلى استخدام دليل مختلف لـ wp-content بدلاً من الدليل الافتراضي ، WordPress / wp-content.

لنقم بإنشاء دليل جديد في جذر المشروع يسمى wp-content.

بمجرد نسخ ملف index.php من مجلد WordPress. نحتاج إلى تغيير موقع ملف wp-blog-header.php حيث يوجد دليل WordPress الخاص بنا.

بعد التغيير ، سيبدو ملف index.php على هذا النحو

 <؟ php 
تعريف ('WP_USE_THEMES' ، صحيح) ؛
يتطلب (dirname (__FILE__). '/wordpress/wp-blog-header.php') ؛

نحتاج إلى إنشاء ملف htaccess في الدليل الجذر بالمحتويات التالية:

 # ابدأ وورد
<IfModule mod_rewrite.c>
أعد كتابة المحرك
إعادة كتابة القاعدة /
RewriteRule ^ index.php $ - [L]
RewriteCond٪ {REQUEST_FILENAME}! -f
RewriteCond٪ {REQUEST_FILENAME}! -d
أعد كتابة القاعدة. /index.php [L]
</IfModule>
# END WordPress

دعنا نمضي قدمًا وننسخ نموذج ملف wp-config.php ثم نضيف الكود التالي:

 $ domain = 'mydomain.com؛
تعريف ('WP_SITEURL'، "https: // {$ domain} / wordpress") ؛
تعريف ('WP_HOME'، "https: // {$ domain}") ؛
$ httpHost = مجموعة الإصدار ($ _ SERVER ['HTTPS_HOST'])؟ $ _SERVER ['HTTPS_HOST']: $ domain؛
حدد ('WP_CONTENT_DIR'، dirname (__FILE__). '/ wp-content') ؛
حدد ('WP_CONTENT_URL'، 'https: //'. $ httpHost. '/ wp-content') ؛
/ ** المسار المطلق إلى دليل WordPress. * /
إذا (! المعرفة ("أبسبات")) {
    عرّف ("ABSPATH"، dirname (__ FILE__). "/ wordpress") ؛
}

لقد أضفنا WordPress في ABSPATH نظرًا لأن جوهر WordPress موجود في / WordPress
بما أن ملف wp-config.php يحتوي على بيانات حساسة ؛ لن نلزمه بمستودعنا عن طريق إنشاء ملف .gitignore:

 /wp-config.php
/ وورد /
/ wp-content /
/بائع/

يجب أيضًا تجاهل أدلة WordPress و wp-content والمورد حتى نضيفها إلى ملف .gitignore أيضًا.

ملاحظة: أنت بحاجة إلى تغيير دليل wp-content في حالة رغبتك في إضافة اصطلاح تسمية مختلف لمحتوى wp الخاص بك.

يجب أن يكون دليل جذر مشروعنا بهذا الشكل

 .شخص سخيف
.gitignore
الملحن
الملحن json
بائع
ملف wp-config.php
index.php
ووردبريس

تحتاج إلى إنشاء قاعدة بيانات وتغيير التفاصيل في ملف wp-config.php. سيتم استدعاء موقع WordPress الخاص بك على "mydomain.com" وسيتم الوصول إلى الواجهة الخلفية لـ WordPress من خلال mydomain.com/wordpress/wp-admin

إضافة المكونات الإضافية والسمات من مستودع WordPress

بشكل افتراضي ، سينظر Composer إلى مستودع packagist.org فقط. لكنها لا تحتوي على مكونات و سمات WordPress الإضافية.

لتتمكن من سحب المكونات الإضافية والسمات في WordPress ، تحتاج إلى توجيه Composer إلى مستودع wpackagist.org. يمكنك القيام بذلك عن طريق إضافة جزء التكوين هذا إلى ملف composer.json الخاص بك:

 "مستودعات": [
  {
    "type": "composer"،
    "url": "https://wpackagist.org"،
    "فقط": [
      "wpackagist-plugin / *" ،
      "wpackagist-theme / *"
    ]
  }
] ،

نحتاج أيضًا إلى إخبار Composer بمكان وضع المكونات الإضافية والسمات. يتضمن ذلك إضافة المزيد من التهيئة إلى composer.json:

 "إضافي": {
        "مسارات المثبت": {
            "wp-content / mu-plugins / {$ name} /": [
                "type: wordpress-muplugin"
            ] ،
           "wp-content / plugins / {$ name} /": [
                "type: wordpress-plugin"
            ] ،
           "wp-content / themes / {$ name} /": [
                "type: wordpress-theme"
            ]
        }
    }

مع وجود ذلك في مكانه ، يمكنك الآن تثبيت أي مكون إضافي أو سمة من المستودعات الرسمية باستخدام أمر يتطلب الملحن ، كما فعلنا لتثبيت WordPress.

# لتثبيت مكون إضافي ، استخدم هذا التنسيق:

 يتطلب الملحن "wpackagist-plugin /:"

# لتثبيت سمة ، استخدم هذا التنسيق:

 يتطلب الملحن "wpackagist-theme /:"

تعد قيود الإصدار معقدة ، ولكن ربما يكون أبسط شكل يجب تذكره هو استخدام حرف البدل *. لتثبيت الإصدار المجاني من المكون الإضافي WP Migrate الخاص بنا ، باستخدام الإصدار 2.x ، يمكنك تشغيل:

composer require "wpackagist-plugin/wp-migrate-db:2.*"

إذا كنت تريد دائمًا أن تحصل تحديثاتك على أحدث إصدار ، فيمكنك استخدام * كقيد الإصدار:

composer require "wpackagist-plugin/wp-migrate-db:*"

في المرة الأولى التي تقوم فيها بتشغيل أمر مثل هذا ، قد يتم سؤالك عما إذا كنت تريد "الوثوق بـ" الملحن / المثبتون "لتنفيذ التعليمات البرمجية." يمكن القيام بذلك بأمان ، ولكن اعلم أن هذا يسمح لـ Composer بتشغيل التعليمات البرمجية على جهاز الكمبيوتر الخاص بك.

إذا كان كل شيء على ما يرام ، يجب أن يتم تثبيت المكون الإضافي (ولكن لم يتم تنشيطه). أوصي أيضًا بإجراء تغييراتك على Git في هذه المرحلة.

إضافة المكونات الإضافية والسمات المخصصة أو الخاصة بطرف ثالث

كل هذا جيد إذا كنت تريد المكونات الإضافية والسمات من المستودع. ولكن ماذا لو كنت تريد إضافة مكونات إضافية لجهات خارجية غير موجودة في مستودع wordpress.org ، أو رمزك المخصص؟ دليل WordPress ليس موجودًا في Git ، فكيف تتحكم الإصدار في الأشياء الخاصة بك؟

يدعم بعض مؤلفي القوالب والإضافات المستودعات المخصصة لإضافاتهم.

ولا يُسمح لبعض السمات والمكونات الإضافية باستخدام أي مستودع لملحقاتها ، على سبيل المثال ، المكونات الإضافية المدفوعة.

ولكن إذا لم يتم تطبيق ذلك ، فإن الحيلة هنا هي إلغاء تجاهل أدلة معينة بشكل انتقائي باستخدام ملف .gitignore وإضافة تلك المكونات الإضافية والسمات المخصصة في composer.json.

يمكننا أيضًا وضع هذه المكونات الإضافية في دليل آخر لتثبيتها من composer.json.

نظرًا لأننا نتجاهل مجلد الإضافات في .gitignore ، نحتاج إلى إنشاء مجلد آخر يسمى dist ،

في التوزيع ، يمكننا الحصول على مكونات إضافية مدفوعة ومخصصة ويمكننا تثبيتها من Composer.

  • توزيع /
    • الإضافات /
    • الموضوعات /
    • مو-الإضافات /

نحتاج إلى نسخ المكونات الإضافية والسمات المخصصة الخاصة بنا في المجلد المناسب.

ونحتاج إلى إنشاء composer.json لكل مكون إضافي مضاف في dist / plugins.

حاليًا ، لدينا الحقول المخصصة المتقدمة ، والتي يتم دفعها. نريد أيضًا إضافة هذا المكون الإضافي عبر الملحن للتثبيت بنقرة واحدة وأتمتة عمليات النشر.

يتعين علينا تنزيل هذا المكون الإضافي من بوابة موقع المؤلف واستخراج هذا المكون الإضافي في مجلد dist / plugins / Advanced-custom -field-pro. وأنشئ composer.json في نفس المجلد بالمحتوى التالي ،

 {
   "الاسم": "custom-plugins / acf-pro"،

   "الوصف": "Advanced Custom Fields PRO"،

   "الإصدار": "5.12.2"،

   "type": "wordpress-plugin"،

   "يتطلب": {

       "الملحن / المثبتون": "^ 1.0"،
       "johnpbloch / wordpress-core": "> = 5.4"
   }


}

يمكننا إضافة الإصدار والاسم ببادئات مخصصة هنا. وأضف بعض التعليمات البرمجية في ملف composer.json الجذر لاستدعاء هذا البرنامج المساعد أثناء التثبيت.

في قسم "المستودعات": أضف الكود التالي في القسم الأخير ،

 "مستودعات": [
{
     "النوع": "المسار"،

     "url": "dist / plugins / *" ،

     "خيارات": {

       "symlink": خطأ

     }

لديك مدخلات أخرى أيضًا في قسم المستودعات. لتثبيت هذا المكون الإضافي ، لدينا طريقتان ، أولاً لإضافة اسم المكون الإضافي مع الإصدار في

 "يتطلب": {
     "custom-plugins / acf-pro": "> = 5.12.2"
}

أو قم بتشغيل الأمر التالي ، سيقوم بتثبيت البرنامج المساعد وإضافة الإدخال أعلاه في composer.json.

 يتطلب الملحن $ مكونات إضافية مخصصة / acf-pro

بنفس الطريقة ، يمكننا تثبيت السمات والإضافات mu.

بالنسبة للموضوع ، نحتاج إلى إضافة موقع مجلد السمة ،

 "مستودعات": [
{
     "النوع": "المسار"،

     "url": "dist / themes / *" ،

     "خيارات": {

       "symlink": خطأ

     }

يجب عليك إضافة composer.json في نسقك المخصص مع الاسم وتفاصيل الإصدار. باستخدام هذا الاسم ، يمكننا تثبيت السمة باستخدام أمر composer.

ختاماً

يعد استخدام Composer الطريقة الأكثر فعالية لضمان بقاء WordPress الخاص بك آمنًا ومحدثًا وقابلاً للتكرار. يسمح Composer للمطورين بإضافة التبعيات وتحديثها بسهولة في مشاريعهم وقفل إصداراتهم الدقيقة للتأكد من أن كل فرع جديد يعمل بنفس الكود.

مع هذه المزايا ، يعد Composer خيارًا رائعًا لإدارة مشاريع WordPress ، مما يضمن إنشاءات قابلة للتكرار وتحديثات قابلة للالتزام.

نحن نتفهم أن بدء استخدام Composer قد يكون صعبًا بعض الشيء. إذا كانت لديك أي أسئلة ، فلا تتردد في التواصل معنا. نحن هنا لمساعدتك في تحقيق أقصى استفادة من تجربة WordPress الخاصة بك.

مراجع:

    • https://docs.platform.sh/guides/wordpress/composer.html
    • https://deliciousbrains.com/storing-wordpress-in-git/
    • https://time2hack.com/composer-wordpress-deployment/