المحتوى عن 'إضافات'.



مزيد من الخيارات

  • ابحث بالكلمات المفتاحية

    أضف وسومًا وافصل بينها بفواصل ","
  • ابحث باسم الكاتب

نوع المُحتوى


التصنيفات

  • التخطيط وسير العمل
  • التمويل
  • فريق العمل
  • دراسة حالات
  • نصائح وإرشادات
  • التعامل مع العملاء
  • التعهيد الخارجي
  • التجارة الإلكترونية
  • الإدارة والقيادة
  • السلوك التنظيمي
  • مقالات ريادة أعمال عامة

التصنيفات

  • PHP
    • Laravel
    • ووردبريس
  • جافاسكريبت
    • Node.js
    • jQuery
    • AngularJS
    • Cordova
    • React
  • HTML
    • HTML5
  • CSS
  • SQL
  • لغة C#‎
  • لغة C++‎
  • بايثون
    • Flask
    • Django
  • لغة روبي
    • Sass
    • إطار عمل Bootstrap
    • إطار العمل Ruby on Rails
  • لغة Go
  • لغة جافا
  • لغة Kotlin
  • برمجة أندرويد
  • لغة Swift
  • لغة R
  • لغة TypeScript
  • ASP.NET
    • ASP.NET Core
  • سير العمل
    • Git
  • صناعة الألعاب
    • Unity3D
    • منصة Xamarin
  • سهولة الوصول
  • مقالات برمجة عامة

التصنيفات

  • تجربة المستخدم
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
    • كوريل درو
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب
  • التصميم ثلاثي الأبعاد
    • 3Ds Max
    • Blender
  • نصائح وإرشادات
  • مقالات تصميم عامة

التصنيفات

  • خواديم
    • الويب HTTP
    • قواعد البيانات
    • البريد الإلكتروني
    • DNS
    • Samba
  • الحوسبة السّحابية
    • Docker
  • إدارة الإعدادات والنّشر
    • Chef
    • Puppet
    • Ansible
  • لينكس
  • FreeBSD
  • حماية
    • الجدران النارية
    • VPN
    • SSH
  • مقالات DevOps عامة

التصنيفات

  • التسويق بالأداء
    • أدوات تحليل الزوار
  • تهيئة محركات البحث SEO
  • الشبكات الاجتماعية
  • التسويق بالبريد الالكتروني
  • التسويق الضمني
  • التسويق بالرسائل النصية القصيرة
  • استسراع النمو
  • المبيعات
  • تجارب ونصائح

التصنيفات

  • إدارة مالية
  • الإنتاجية
  • تجارب
  • مشاريع جانبية
  • التعامل مع العملاء
  • الحفاظ على الصحة
  • التسويق الذاتي
  • مقالات عمل حر عامة

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجنتو
  • أندرويد
  • iOS
  • macOS
  • ويندوز

التصنيفات

  • شهادات سيسكو
    • CCNA
  • شهادات مايكروسوفت
  • شهادات Amazon Web Services
  • شهادات ريدهات
    • RHCSA
  • شهادات CompTIA
  • مقالات عامة

أسئلة وأجوبة

  • الأقسام
    • أسئلة ريادة الأعمال
    • أسئلة العمل الحر
    • أسئلة التسويق والمبيعات
    • أسئلة البرمجة
    • أسئلة التصميم
    • أسئلة DevOps
    • أسئلة البرامج والتطبيقات
    • أسئلة الشهادات المتخصصة

التصنيفات

  • ريادة الأعمال
  • العمل الحر
  • التسويق والمبيعات
  • البرمجة
  • التصميم
  • DevOps

تمّ العثور على 39 نتائج

  1. إن اختيار نظام الألوان المثالي ليس بالمهمة الصعبة. كل ما تحتاجه هو الأدوات الصحيحة لعملك وعينك لتبدأ التصميم. لا يمكنني تطوير عينيك لاختيار الألوان، لكنني أستطيع اقتراح مجموعة من أدوات الألوان المفيدة والتي من المحتمل أن تحسن ذوقك عند استخدامها. جميع هذه الأدوات مجانية 100٪، لذا يسهل وضعها في المفضلة وإعادة استخدامها مرارًا وتكرارًا. كما يمكنك استخدامها في تصميم الويب أو الهاتف المحمول أو الطباعة أو أي وسيط آخر يحتاج إلى ألوان مذهلة. 1. ColorHexa كنت أتصفح الويب في الآونة الأخيرة وعثرت على ColorHexa. إنها إلى حد بعيد إحدى أروع أدوات الألوان التي رأيتها على الإطلاق. من الناحية الفنية ليست هذه الأداة مُولّد ألوان أو أداة تصميم مخطط، بل هي مكتبة معلومات عن جميع الألوان مع تدرجات لونية مقترحة، وظلال ذات صلة، وعشرات من رموز الألوان (مثل:hex ، RGB،CMYK ،CIE-LAB ،HSL والمزيد). لن تجد قائمة من المعلومات عن الألوان أكثر كمالًا منها. فهذه الأداة مفيدة للغاية لجميع المصممين، بمن فيهم مصممي الويب، وهي مكان رائع للبدء في البحث عن الألوان لمشاريعك. 2. Colors.css إذا قمت ببعض الأبحاث في التأثير النفسي للألوان فستتعلم كيف تترابط الألوان المختلفة معًا وما الحالة المزاجية التي تعبر عنها. وهذا ما يتناقض مع أنواع محددة من الألوان وكيفية عملها معًا. غالبًا ما يأتي كل متصفح بألوان افتراضية مزعجة جدًا. Color.css ستقوم بإصلاح ذلك. إنها مكتبة CSS مجانية تعمل على إعادة تشكيل لوحة الألوان الافتراضية. هذا يعني أنه يمكنك استخدام أسماء الألوان مثل "الأزرق" و"الأحمر" بقيم مختلفة تمامًا. كما أن لدى موقع الأداة صفحة مليئة بالأفكار لمطابقة أنظمة الألوان التي من شأنها تحسين قابلية القراءة على موقعك. 3. ColorPick Eyedropper ترى كم وجدت من المواقع ذات الألوان الجميلة؟ أجد مواقع مذهلة طوال الوقت ومن الصعب تصدير هذه الألوان من ورقة الأنماط. يمكنك استخدام أدوات مطور كروم ولكن هذا يتطلب التنقيب في التعليمات البرمجية (الكود) لاختيار الألوان السداسية (الهيكسا). بدلاً من ذلك ، يمكنك استخدام إضافة ColorPick Eyedropper المصمم حصريًا لـ Google Chrome. يمكنك فقط النقر فوق نافذة التبديل في لوحة الإضافات، ثم المرور فوق أي لون تريد دراسته. تمنحك هذه الإضافة الرمز الكامل السداسي عشري مع رابط "نسخ" لنسخ اللون المحدد إلى حافظتك الخاصة. رائعة حقًّا أليس كذلك؟ إنها إضافة مجانية، لذلك لن تخسر شيئًا إن جربتها. 4. Coolors موقع Coolors عبارة عن مولد كبير لمخططات الألوان. يمكنك العثور على العشرات من المولدات على شبكة الإنترنت، ولكن هذا يختلف قليلاً لأنه يدعم برامج Adobe بإضافاتها الخاصة. يمكنك أيضًا الحصول على هذه الإضافة لكروم أو حتى كتطبيق iOS مخصص لهاتفك. حقا القيمة الحقيقية تكمن في تطبيق الويب للمتصفح هذا الذي يولد تلقائيًّا مخططات الألوان بلمح البصر. يمكنك بعد ذلك مزج الألوان ومطابقتها، وتغيير الإعدادات، وضبط العمى اللوني، وإضفاء الطابع العشوائي على المخططات الخاصة بك وفقًا لمعايير معينة. إنه تطبيق رائع، ولكنه يأتي مع منحنى تعليمي صغير. فلن يأخذ منك أكثر من 15-20 دقيقة حتى تعرف كيف يعمل كل شيء. 5. Palettte App Palettte هو أداة تحرير الألوان وإعادة رسم خرائطها. يتيح لك إنشاء مخططات ألوان تتدفق من واحدة إلى أخرى وتضبط عينات الألوان الفردية. يمكنك أيضًا استيراد مخططات الألوان الحالية وتحليلها وتحريرها. وقد أورد كاتب المقال المزيد عن دوافع ومزايا استخدام تطبيق الألوان هذا. 6. Material UI Colors من خلال بحث Google السريع، ستجد مجموعة من أدوات تصميم المواد الجميلة على الويب. يبدو أنها لا تنتهي، ويعتمد الكثير منها على أنماط الألوان الموجودة عادة في تطبيقات Android. باستخدام تطبيق الويب Material UI Colors، يمكنك العثور على مخططات ألوان مثالية تتوافق مع إرشادات Google’s material. قم بتغيير درجة جميع الألوان بسهولة باستخدام شريط التمرير الموجود في الزاوية العلوية اليسرى من الشاشة. أو اعمل على تحديد اختياراتك لتتناسب مع خيارات ألوان الموقع الحالي. يمكنك أيضًا التبديل بين hex و RGB وفقًا لأي تنسيق تريده. إنه تطبيق رائع لمحبي تصميم البطاقات ((material design. 7. Color Supply موقع Color Supply فريد من نوعه ولكنه غريب أيضًا. يمنحك مجموعة من أدوات الألوان المثيرة للاهتمام لمطابقة مخططات الألوان، واختيار الواجهات الأمامية والخلفيات، إضافة إلى طرق مختلفة لمقارنة كيف ستبدو تلك الألوان على الصفحة. لكن هذا الموقع ليس له أي دليل استخدام أو غرض محدد. إنه يعمل كمولد مخططات للألوان. ويتم إخراج ألوان مختلفة مع رموز ست عشرية (hexadecimal) بالقرب من أسفل الصفحة لنسخها. بالإضافة إلى أنه سيوضح لك كيفية عمل هذه الألوان في التدرج اللوني والأيقونات والنص. أداة رائعة ولكنها تأتي مع منحنى تعلم حرج. 8. Color Safe تعمل WCAG (قواعد إتاحة محتوى الويب) بجدّ نحو شبكة سهلة الوصول. ويعد اللون أحد أسهل الطرق لإنشاء إمكانية الوصول دون فقد اختبار الوقت. Color Safe هو تطبيق ويب مجاني يمكنه اختبار خيارات الألوان الخاصة بك. يمكنك الاختيار من مجموعة صغيرة من الخطوط والأحجام، ثم اختيار الألوان التي تريدها للمقدمة والخلفية. ستحصل من هناك على تصنيف إمكانية الوصول إلى جانب اقتراحات حول كيفية تحسين خيارات الألوان الخاصة بك (إذا لزم الأمر). أداة رائعة حقًا لأي شخص مهتم بإمكانية الوصول على الشبكة. 9. Color Hunt للاطلاع على معرض مخططات الألوان، ألق نظرة على Color Hunt. تم إطلاق هذا المشروع المجاني قبل عامين ولا يزال مصدر إلهام للتصميم. يقدم الأشخاص مخططات الألوان الخاصة بهم إلى الموقع، ثم يصوت آخرون على مخططات الألوان هذه. يمكنك الترتيب حسب الأحدث أو الأكثر شعبية وحتى التصويت على المفضلات لديك. رائع حقًّا أليس كذلك؟ إنه تطبيق ويب بسيط للغاية لذا لا تتوقع الكثير من الميزات. إنها مجرد طريقة رائعة للتصفح بصريًا عبر العديد من أنماط الألوان المختلفة دفعة واحدة. 10. أوبن كلر Open Color تبحث عن شيء أكثر ملاءمة للويب؟ إذَا قم بزيارة مكتبة Open Color. إنها مجموعة ضخمة مفتوحة المصدر من خيارات الألوان مبنية على إمكانية الوصول ودعم المتصفح. تم تحسين كل لون لسهولة المطابقة بغض النظر عن التصميم الخاص بك. لمزيد من المعلومات ولتنزيل نسخة من الأنماط زر صفحة التطبيق على موقع GetHub. 11. HTML Color Codes HTML Color Codes هو تطبيق ويب معلوماتي خاص بالألوان. يتيح لك هذا التطبيق سحب جميع أشكال كود HTML / CSS لخيارات الألوان الخاصة بك مباشرة. يمكنك البحث عن أي لون تريده، أو الاطلاع على التوصيات. بالإضافة إلى أن هذا التطبيق يحتوي أيضًا على أداة لإنشاء لوحات ألوان يمكنك تنزيلها كملفات Adobe Swatch. لا تدع الاسم يخدعك: هذا التطبيق لا يقتصر فقط على استخراج ألوان HTML بل يتعدى ذلك بكثير. إنها أداة رائعة للمصممين الرقميين من جميع التخصصات والذين يريدون الوصول بسهولة إلى أكواد الألوان ولوحات الألوان القابلة لإعادة الاستخدام. 12. أدوبي كلر سي سي Adobe Color CC لا يمكنني تجاوز تطبيق الويب المذهل Adobe Color CC. كانت هذه الأداة المجانية تسمى Adobe Kuler لكنها مرت بتكرارات قليلة على مر السنين. ولا يزال منتقي الألوان هذا مجانيًا ولكن الواجهة قد تغيرت لتسهيل قيام المصممين بإنشاء مخططات الألوان وحفظها. إذا كنت أحد مستخدمي Adobe، فهذه الأداة تستحق أن تكون في مفضلتك. يدعم أدوبي كلر ما يصل إلى 5 ألوان مختلفة في مخطط واحد، ويمكنك حتى تحميل الصور لسحب مخططات الألوان الديناميكية تلقائيًا. ترجمة -وبتصرف- للمقال ‎Top 12 Web-Based Color Tools for Web Designers لصاحبه Jake Rocheleau
  2. أحد أسوأ الأمور في موسم الأنفلونزا حتمية إصابتك بالمرض. فقد يأتي زملاء العمل وهم يعانون من رشح في الأنف. أو ربما تستقل الحافلة إلى مكان عمل مشترك، فيسعل ركاب آخرون ويلمسون نفس المَسند الذي تمسك به. أو ربما كنت تعمل من منزلك "الآمن" إلا أنه من المحتمل أن ينقل لك أطفالك جراثيم خطيرة تعرضوا لها في المدرسة. بغض النظر عن المكان الذي تذهب إليه أو من تكون محاطًا بهم فقد تشعر في بعض الأحيان أنه لا يوجد مكان آمن. ولكن هذا ما يحدث عندما تعمل وتعيش بالقرب من الآخرين. إذا كان شخص واحد مصابًا فانتشار المرض مسألة وقت فقط. الأمر نفسه ينطبق على التعرض لمخاطر الثغرات العابرة للمواقع (Cross-Site). من البديهي أن الأمن يشكل مصدر قلق كبير لكل من له علاقة بموقع ويب، سواء كان صاحب الموقع أو الشخص الذي يتسوق عليه أو المطور الذي قام بإنشائه. لذا، يبدو أن هناك خطرًا عند كل منعطف. لكن لنفترض أنك قررت اتخاذ القرار الاقتصادي والفعال بوضع عدة مواقع على شبكة واحدة (سواء كان ذلك من خلال استخدام ووردبريس مُتعدّد المواقع أو تشغيلها ببساطة من حساب الاستضافة نفسه). قد تؤدي ثغرة أمنية واحدة في واحد فقط من تلك المواقع إلى تعريض الشبكة بالكامل للخطر. يعد مقال أفضل ممارسات الأمان في ووردبريس جيدًا للبدء به، و لكنه قد لا يكون كافيا. إذا كنت تدير شبكة من مواقع ووردبريس جميعها من مكان واحد فهذا المنشور يناسبك. سأغطي بإيجاز المخاوف التي تتعلّق بالثغرات العابرة للمواقع Cross-Site، ثم أعرض قائمة مرجعية خاصة من النصائح لاستخدامها عند تشغيل شبكة من المواقع. من ينبغي أن يكون قلقًا بشأن مخاطر الثغرات العابرة للمواقع في ووردبريس؟ دعنا نواجه الأمر: يحتاج القراصنة هذه الأيام للمزيد من الإبداع في كيفية اختراق مواقع الويب. قد يكون الووردبريس هدفًا سهلاً بسبب شعبيته، ولكنه ليس منصة سهلة الاختراق إذا كان الأشخاص الذين يبنون ويديرون مواقع الويب يمتثلون لأفضل ممارسات الأمان. بالطبع يبدأ ذلك الالتزام بالتذبذب قليلاً مع تزايد عدد مواقع الويب على شبكتك. في ما يلي طرق يمكن بها تجميع مواقعك على الويب مما يعرضها عن غير قصد لمخاطر الثغرات العابرة للمواقع. ووردبريس مُتعدّد المواقع على الرغم من أن شبكة ووردبريس متعددة المواقع تعدّ ميزة رائعة لمطوري الويب الذين يرغبون في إدارة شبكة من المواقع بكل سهولة من خلال تثبيت واحد ووردبريس مرة واحدة فقط، إلّا أنها تعني أيضًا أن تفاحة فاسدة واحدة يمكن أن تفسد المجموعة بالكامل بسهولة. جوهر المسألة هو أنّ كل هذه الموارد المشتركة من ملفات، وملحقات، وبيانات الدخول، المخزَّنة في المكان نفسه تزيد من خطر أنّ أذية موقع ويب واحد يمكن أن تؤدّي إلى إصابة مواقع الشبكة كلها. حساب استضافة متعدد النطاقات ينطبق الأمر نفسه على مواقع الويب التي تشترك في حساب استضافة (ليس بالضرورة تلك الموجودة على استضافة مشتركة، بل فقط تلك المواقع التي تشترك في حساب واحد). كل ما يتطلبه الأمر هو موقع ويب واحد غير مؤمَّن على نحو سليم (من خلال ملحق سيئ أو كلمة مرور ضعيفة)، ويمكن بعد ذلك للمخترقين إحداث الفوضى في شبكة كاملة من المواقع. يوجد عدد من الأطراف التي من المحتمل أن تتأثر: الوكالات التي تريد إدارة جميع مواقع عملائها من حساب استضافة واحد، المطورين الذين يريدون أن يفعلوا الشيء نفسه، المطورين الذين يستخدمون حساب الاستضافة الخاص بهم لاختبار مواقع الويب وإعدادها، الشركات التي لديها عدد من مواقع الويب تحت مظلة علامتها التجارية الرئيسية وتريد الاحتفاظ بها جميعًا معا. إعادة بيع الاستضافة قد يجد مطورو الويب أن بيع الاستضافات، إما بدوام كامل أو تكملةً لعملهم اليومي، طريقة مربحة لكسب أموال إضافية باستخدام ووردبريس، وهو ما يعني أنك إذا لم تقم بتهيئة نظام الاستضافة الخاص بك بدقة فيمكنك أن تعرّض جميع مواقع عملائك للخطر. لا يمكنني التأكيد على الأمر بما فيه الكفاية: كل ما تتطلبه إصابة شبكة مواقع وتدميرها بالكامل هو إصابة موقع واحد منها. تخيل أثر ذلك، إنْ حدث، على عملك. أكدت للعملاء أنك ستهتم بمواقعهم على الويب، وتعتقد بصدق أن كل شيء سيكون على ما يرام. لكنّك تركت موقعًا مرحليًا غير مؤذٍ دون مراقبة، أو كنت تثق في أن عملاء الاستضافة سيؤمّنون مواقعهم الفردية على نحو صحيح … وحدث خطأ ما. إذن مالعمل الآن؟ حسنًا، أنت بحاجة إلى عدم الانتظار حتى "الآن.. ماذا نفعل؟". تحتاج إلى اتخاذ إجراء حاليًا لتأمين شبكة مواقع ووردبريس الخاصة بك على نحو صحيح من مخاطر الثغرات العابرة للمواقع. القائمة المرجعية: 8 أشياء تحتاج إلى القيام بها للتصدي للأضرار الناتجة عن الثغرات العابرة للمواقع من البديهي أنّ هذه القائمة ليست معدّة لتحل محل القائمة المرجعية لتأمين ووردبريس التي تعتمدها سلفا. تسري نصائح تلك القائمة سواء كنت تدير موقع ووردبريس واحدًا أو شبكة كاملة. ومع ذلك ينبغي أن تُضاف العناصر التالية إلى تلك القائمة المرجعيةإنْ كنت تنوي إدارة شبكة من المواقع. 1- فحص كل موقع الهدف من وراء جمع مواقع مختلفة في حساب استضافة مشترك واحد، أو إعداد ووردبريس مُتعدّد المواقع هو أن تتمكّن من إدارة المواقع في وقت واحد بصورة أكثر ملاءمة وفعالية. ومع ذلك، تبقى تلك المواقع ملكيات فريدة يجب التعامل معها على ذلك الأساس. لذا، بدلاً من افتراض أن إجراءات الأمان المستخدمة من قبل مزود الاستضافة، استخدم ملحقًا لفحص الأمان على كل موقع من مواقع ووردبريس الخاصة بك. يقوم ملحق Defender لأمن ووردبريس، بطبيعة الحال، بعمل رائع في فحص موقعك بانتظام، وفرض ممارسات أمنية صارمة، وتوثيق جميع الأنشطة، لذلك أقترح البدء به. 2- إضافة جدران نارية منفصلة تعلم أنك عندما تسجّل لدى مزوّد استضافة موثوق فإنه عادةً يروّج لوجود جدار ناري لحماية خوادمهم ومنع المخترقين. مع ذلك، إذا كنت تدير مواقع ووردبريس خاصة بك من حساب الاستضافة نفسه، فهذا يعني أن شبكتك مؤمنة من خلال جدار ناري واحد فقط، ولا يوجد حاجز منفصل يقف بين كل واحد من مواقعك مع البقية. بما أنّ سبب تأثير الثغرات العابرة للمواقع هو عدم وجود حواجز بين تلك المواقع، فمن المهم إضافة جدار ناري إلى كل موقع ويب. يؤّدي Cloudflare هذه المهمة بنجاح. يأتي جدار Cloudflare الناري لتطبيقات الويب مزودًا بقواعد مضمنة، ومن بينها قواعد تتصدّى للتهديدات والثغرات الخاصة بووردبريس. بمجرد تمكين جدار Cloudflare الناري لتطبيقات الويب فستطمئن لعلمك أن موقعك محمي من أحدث التهديدات. 3- استخدام ملحق موثوق لتعدّد مواقع ووردبريس إذا كانت الثغرة الأمنية في شبكة مواقعك ناتجة عن استخدام نظام ووردبريس مُتعدّد المواقع، فأفضل ما يمكنك فعله هو استخدام ملحق موثوق لهذا الغرض، مثل WP Ultimo. بهذه الطريقة تتيقّن أنْ تتحكّم أكثر في ما يفعله عملاؤك مع مواقعهم على الويب، وفي الوقت نفسه تتأكد أيضًا أن الملحق الذي تستخدمه غير خطر وآمن. 4- حجب السخام على شبكة مواقع ووردبريس بالطبع، لا تنسَ التعليقات غير المرغوب فيها، فهي أحد أهم الأسباب التي تجعل الكثير من المدونات والمواقع تقرر إيقاف التعليقات تماما. عندما تشغّل شبكة كبيرة من المواقع - خاصةً إذا كانت سيطرتك على محتوى المدونة أو التعليقات التي تظهر عليها ضئيلة أو معدومة - فأنت بحاجة إلى الملحق Akismet لكي يحمي مواقعك من السخام وحُقَن المحتوى الضارة الأخرى. 5 - تنظيف النطاقات القديمة كلما زادت شبكة مواقعك كلما أصبح من الأسهل فقدان أثر تلك المواقع. لهذا السبب يجب عليك تحديد موعد دوري - من الأفضل أن يكون كل مرة في الشهر أو في الأسبوع - لمراجعة حسابك على الاستضافة متعدّدة النطاقات، أو شبكة مواقع ووردبريس. يجب التخلص من أي نطاقات قديمة أو غير مستخدمة، ينطبق الأمر نفسه على مواقع الاختبار والتحضير. بمجرد إتاحة موقع ووردبريس العموم تصبح هذه المواقع غير ذات فائدة، إذا واجهت أي مواقع لم يتم تحديثها منذ عام فاستفسر من مالك الموقع لمعرفة ما إذا كان لا يزال بحاجة إلى الاستضافة. من خلال الحفاظ على خادمك خاليًّا من النطاقات القديمة فستقلّل من احتمال أن يصادفها القراصنة ويستفيدوا من البيئة الممهدة المثالية المتمثّلة في الأنشطة غير الخاضعة للرقابة، وبرنامج ووردبريس وملحقاته غير المحدثة، وما إلى ذلك. 6- الحفاظ على الإضافات والسمات محدثة إنْ كنت تمضي وقتًا طويلًا في مستودع ملحقات ووردبريس فستتعرّف على هذه الرسالة. إذا كنت تجمع مواقع ويب في بيئة ووردبريس متعدّدة المواقع أو في حساب الاستضافة نفسه، فنرجو أن تكون لديك مجموعة الملحقات والسمات الموثوقة نفسها على جميع مواقعك. على الرغم من أن بيئة ووردبريس متعدّدة المواقع تبسط عملية الحفاظ على الملحقات والسمات "المشتركة" محدَّثة عبر جميع المواقع، إلّا أن ذلك لا يقلّل من أهميّة المراجعة المنتظمة لكل تكامل مع خدمات طرف ثالث. قد لا تعرف أبدًا متى يقرر مطوّر إيقاف دعم خدمة، أو متى توضع إشارة تحذير على ملحق في مستودع ووردبريس، أو متى تظهر ثغرة أمنية جديدة في أحد هذه البرامج. مع ذلك، تجد أحيانًا عناءً كبيرًا في المواكبة المستمرة لجميع تحديثات ووردبريس، وكذلك الملحقات والسمات التي لا تعد ولا تحصى؛ وهو ما يجعل من ملحق أو برنامج يحدّث تلقائيًا الملحقات والسمات أمرًا مفيدًا للغاية. يتمتع أعضاء WPMU DEV، على سبيل المثال، بميزة التحديثات التلقائية التي تشغّل التحديثات وتأخذ نسخًا احتياطية تلقائيّا. 7- تهيئة الخادم بطريقة صحيحة سواء تعلّق الأمر بيئة ووردبريس متعدّدة المواقع أو حساب استضافة مشترك فإن الحفاظ على أمان المواقع يتطلّب إدارة إعدادات الشبكة بذكاء. في ما يلي نصائح بسيطة لمساعدتك في القيام بذلك: إنشاء حسابات منفصلة لمنصات مواقع الويب: إذا قمت بإنشاء مواقع ويب باستخدام منصات أخرى غير ووردبريس، فيجب أن تكون لديك حسابات منفصلة لمواقع ووردبريس، ومواقع دروبال، ومواقع جوملا وغيرها. تجنب خلط الحابل بالنابل في وظائف المضيف: نعني بذلك نوعية الاستضافة. لذا، إذا كنت تعمل في بيع استضافة مواقع الويب فقد تزود العملاء أيضًا باستضافة البريد الإلكتروني. لا تخلط بين تلك الوظائف، وأبق كلّ واحدة منها منفصلة عن الأخرى. افصل بين مواقع الويب التجريبية ومواقع الويب المتاحة للعموم: على الرغم من أنك قد تميل لوضع مواقع ما زالت في مراحل التطوير والاختبار على نفس الحساب مع تلك المتاحة للعموم، إلّا أنه من الأفضل ألّا تفعل ذلك. سيكون الفصل بينها أكثر أمانًا، خاصة إذا لم تكن جيدًا في استحضار حذف مواقع أو التحضير بعد الانتهاء منها. والأفضل من ذلك أن تفصل بين الأدوات التي تستخدمها للاختبار وتلك التي تستخدمها للتحضير، حتى تتمكن من تجنب هذه المشكلة تماما. 8- استخدام مضيف موثوق في نهاية المطاف يعتمد أمان مواقع الويب الخاصة بك على مدى تأمين كل واحد على حدة. مع ذلك إذا لم تبدأ بمضيف موثوق يوفر لك خوادم آمنة ومُعدة بطريقة صحيحة فربما تواجه مشاكل على المدى الطويل. يشيع ذلك في الحالات التي لا تتبع أفضل الممارسات لتأمين كل موقع، والحفاظ على المستخدمين محجوزين في مواقعهم الخاصة. بالطبع إذا استمررت في القلق بشأن إصابة المواقع في شبكتك فيمكنك دائمًا استضافة كل موقع على حدة باستخدام طريقة أكثر أمانًا وعزلًا، مثل الخادم الافتراضي الخاص أو استضافة خادم مخصص. على الرغم من أن تلك الطرق تلغي الحاجة لإنشاء شبكة متعددة المواقع فإنها تجنبك احتمالية الإصابة بالثغرات العابرة للمواقع. في الختام كل ما يتطلبه الأمر تفاحة واحدة فاسدة لتدمير الباقي. أحيانًا يكون من الصعب رؤية تلك التفاحة الفاسدة عندما يكون لديك الكثير من التفاح لمراقبته، لهذا السبب تجب حماية كل موقع في شبكتك. إذا كان موقع ما لا يهمك بما يكفي للاهتمام بحمايته فيجب ألا يكون ضمن بيئة ووردبريس مُتعدّدة المواقع، أو يتشارك مساحة على حساب الاستضافة مع مواقعك الأخرى. الأمر بسيط. عليك الالتزام بالنصائح المذكورة أعلاه وستكون قادرًا على تشديد أمان شبكتك بدرجة تكفي لكي لا تقلق بعد الآن بشأن الثغرات العابرة للمواقع. ترجمة -وبتصرف- للمقال The Dangers of Cross-Site Contamination and How to Prevent It لصاحبته Suzanne Scacca
  3. توجد الكثير من التطبيقات الموفِّرة للوقت وأطر عمل CSS ومكتبات جافاسكربت التي يمكن لمطور ووردبريس استخدامها لتبسيط سير العمل. لكن ماذا بخصوص ملحقات ووردبريس؟ خاصةً تلك الموجودة في مستودع ووردبريس الرسمي أو المتاحة للمشتركين في المستودعات الخاصّة. ممّا لا شك فيه أنّ الملحقات هي إحدى المميّزات التي يضيفها ووردبريس لبناء مواقع الويب. رغم ذلك، يمكن أن تمثل الملحقات خطرًا حقيقيًّا على أمان موقعك إذا لم تكن حريصًا على اختيارها من مصدر موثوق. نظرًا لأن 54٪ من الثغرات المكتشفة تُنسَب إلى الملحقات فليس سرًا أنها السبب الرئيسي لانتهاكات أمان ووردبريس. بالطبع يمكن عادًة تقليل ذلك إلى خطإ المستخدم (أي لم تُحدَّث الملحقات في حين كان الأجدر أن يتم ذلك). لكنْ في بعض الأحيان لا ترتبط مشكلات أمان الملحقات بهذا النوع من أخطاء المستخدم. بدلًا من ذلك فإنها تنشأ من المستخدمين الآخرين. على وجه التحديد المخترقين الذين يحقنون ملحقاتهم الخاصة، عن قصد، ببرمجيات خبيثة. نعم هذا صحيح، توجد ملحقات ووردبريس مزيَّفة مصمَّمة لغرض محدَّد هو إصابة المواقع. ليس من السهل دائمًا، كما سترى أدناه، اكتشاف هذه الإصابات بالفيروسات على الفور. دعونا نلقي نظرة على سبب استخدام المخترقين لملحقات ووردبريس لشق طريقهم إلى موقع الويب الخاص بك وكيف يقومون بذلك وما يمكنك القيام به لمنع ذلك. ملحقات ووردبريس المزيفة التي خدعت الجميع حسنًا، تعرف جيّدًا كيفية حماية موقع ووردبريس. تحتاج لوحة إدارة الموقع إلى الاهتمام، والأمر نفسه ينطبق على المجلَّد الجذر لموقعك. كما يلزم تأمين أي اتصال مباشر بين الموقع والمستخدمين، وهو ما تفعله خوادم الويب الخاصة بك. أساسًا، يلزم أن تُغطَّى كل زاوية. لكن مالعمل إنْ أتى الاختراق من داخل موقع الويب الخاص بك؟ يعرف المخترقون الذين يتحملون مشقة إنشاء ملحقات ووردبريس مزيَّفة ما يقومون به. مرّت العديد من الملحقات المزيَّفة التي أضرّت فعلًا بمواقع المستخدمين، مرّت دون أن تُكتشَف، لأنّ الشفرة - للوهلة الأولى على أية حال - تبدو شرعية. توجد كذلك ملحقات مزيَّفة أخرى لم تسلُك تلك الطريق، وهي محلقات أكثر خطرًا وأشد تأثيرًا (مثلًا، إصدار أول بدون أية مشاكل، ثم بعد ذلك تحديثات خطِرة أمنيّا). إذا لم تصادف من قبل ملحقات ووردبريس مزيَّفة، فالفقرة التالية تعرض عددًا من الحالات المعروفة. الملحق Pingatorpin في العام 2013 كان يوجد ملحق باسم Pingatorpin، ولم يُتعرَّف فورًا على حقيقته. صادفت Sucuri عددًا كبيرًا من مواقع الويب التي تحتوي على برامج ضارة تتشارك في مجموعة متماثلة من الملفات. تطلّب الأمر تعميق البحث والتدقيق ليكتشفوا في النهاية أن الملحق Pingatorpin هو مصدر السخام (Spam) المستفحل في تلك المواقع. الملحق SI CAPTCHA لمكافحة الإزعاج الإلكتروني (البريد المزعج) هل تريد رؤية أمر مخادع؟ إذن انتبه للتالي. كان ملحق SI CAPTCHA حتى صيف عام 2017 ملحقًا صالحًا لحروف التحقق CAPTCHA. بيع المُلحق في يونيو إلى طرف آخر وتغيرت الملكية، وحينها بدأت المشاكل. أضاف المالك الجديد شفرة برمجية إلى الملحق من شأنها أن تسمح لخادم منفصل بإدخال إعلانات قروض يوم الدفع في منشورات مدونة المستخدمين. لم يكن الملحق الوحيد الذي استخدمه المخترِق، إذ استخدم ثمانية ملحقات أخرى لتكون وسيلة للوصول عبر باب خلفي إلى المواقع من أجل تشغيل إعلانات سخام عليها. يوجد قراصنة بارعون مثل هؤلاء، يشترون ملحقات معروفة من المطورين ثم يصدرون تحديثات بها ثغرات أمنية تمنحهم الوصول إلى مواقع المستخدمين. يعرف هؤلاء أن مطوري ووردبريس والمستخدمين الآخرين الذين يتسمون بالحذر الشديد بشأن الأمان سيحجمون - على الأرجح - عن استخدام أي ملحقات غير شائعة في مستودع ووردبريس، و لذا ستدرك عند التفكير في هذه الخطوة أنها ذكية جدّا. ملحق WP-Base-SEO للتحسين لمحركات البحث أدّى تثبيت ملحق WP-Base-SEO إلى اختراق ما يقارب 4000 موقع ووردبريس في إبريل 2017. لم يبن المخترق الملحق من لا شيء، كما أنه لم يشتر ملحقًا معروفًا من أجل كسب ثقة المستخدمين. بدلًا من ذلك، نسخ شفرة برمجية من ملحق آخر لكي تبدو شفرته طبيعية، وربما هذا هو السبب في عدم إثارته لانتباه أدوات البحث التلقائي عن البرمجيات الخبيثة. بالطبع لم يكن الملحق طبيعيًّا كما أراد أن يبدو، وأدرك المستخدمون وجود خطب غير طبيعي. سرعان ما تبيّن عند الفحص وجود عدد من الملفات المشبوهة إضافة إلى استعلام PHP مُرمَّز بترميز Base64 كان هو المتسبّب في الاختراق. الملحق X-WP-SPAM-SHIELD-PRO الحالة الأحدث من حالات الملحقات المزيَّفة مرعبة بحق. نتحدّث عن X-WP-SPAM-SHIELD-PRO. يبدو الملحق في جميع أهدافه ومقاصده ملحقًا أمنيًّا ذي شفرة برمجية مكتوبة بعناية. حتى إن بنية المجلدات فيه تشبه ملحقًا طبيعيًّا وآمنا. لكن بمجرد وضع Sucuri أيديهم عليه - إضافة إلى مواقع مصابة به - لاحظوا وجود مشكلات كبيرة في الشفرة البرمجية.. في ما يلي بعض من الأمور التي يجمعها الملحق: إصدار ووردبريس الحالي، قائمة بجميع الملحقات المثبتة على الموقع، قائمة بالمستخدمين الذين لديهم صلاحيات إدارة الموقع، أسماء المستخدمين المتصلين بالموقع، وكلمات المرور الخاصة بهم ، وكذلك عناوين IP، من بين بيانات حساسة أخرى. بمجرد الحصول على كل هذه المعلومات أصبح لديه القدرة على: إضافة مدير جديد مما يمنحه القدرة على التجول بحرية في الموقع، تعطيل أي ملحق مستخدم على الموقع بما في ذلك الملحقات الأمنية، تحميل أي ملف إلى الموقع، استلام إشعار عندما يثبت شخص ما الملحق، وبالتالي يعرف صاحب الملحق الوقت الذي يحصل فيه على إمكانية الولوج إلى الموقع وبالتالي إمكانية تدميره. لذلك دعنا نلقي نظرة على ما يمكنك فعله لحماية موقع ووردبريس الخاص بك من الملحقات المزيفة. 9 من أفضل الممارسات لتأمَن خطر الاختراق عند التعامل مع ملحقات ووردبريس حالياً بعد أن عرفت ما يبحث عنه القراصنة في الملحقات المزيفة فمن مهامك أن تتأكد من عدم الوقوع في مصائدهم. إليك 9 من أفضل الممارسات التي عليك الالتزام بها عند التعامل مع ملحقات ووردبريس. 1- مراجعة الملحق للتحقق من جودته بصفة عامة إذا عثرت على ملحق ووردبريس تريد استخدامه وكان موجودًا في مستودع ووردبريس أو مصدر آخر موثوق به لملحقات ووردبريس (مثل CodeCanyon) فعليك مراجعته على نحو شامل. وإليك صورة توضح كيفية استخدام معلومات المحلق في مستودع ووردبريس للتحقق منه: إليك ما تحتاج إلى البحث عنه: أولا وقبل كل شيء سمعة مطوّر الملحق. إنْ لم تتعرف عليه فابحث عنه للتحقق من مصداقيته. تواتر التحديثات مهم أيضًا، فبقاء الملحقات مدة طويلة دون تعديل عليها أو صيانة لها يمكن أن يكون إشارة جديّة إلى حدوث مشاكل. ربما لا يكون الملحق مزيَّفًا، لكنه مهمل وتوقّف دعمه. يمكنك عادةً معرفة الكثير عن جودة ملحق استنادًا إلى عدد الأشخاص الذين يستخدمونه. أستطيع أن أقول إن أكثر من بضعة آلاف عدد آمن يمكنك الوثوق به. تسير التقييمات جنبًا إلى جنب مع عدد المستخدمين. إذا كانت النتيجة أقل من 4.5 فذلك يتطلب منك أن تتساءل "لماذا؟" أخيرًا يتعين عليك استكشاف التعليقات التي تركها المستخدمون عند تقييم الملحق. ستعطيك التعليقات فكرة أفضل عن المشكلات المتكررة المتعلقة بالملحق. إذا كانت هناك أي ملاحظات سلبية على أمان الملحق فيلزم التخلص منه على الفور. إذا وجدت الملحق خارج موارد ووردبريس الموثوقة المتعارف عليها، فستحتاج إلى إجراء بحث خارجها. يعد البحث في جوجل مكانًا جيدًا للبدء، وكذلك منتديات ووردبريس . ستحصل على فكرة عن نوع الشكاوى أو المشكلات التي واجهها المستخدمون الآخرون. 2- مراجعة الشفرة البرمجية أول ما يتعين عليك فعله قبل تثبيت ملحق جديد هو فحص بنية المجلدات والتأكد من أنها تبدو طبيعية. إذا تجاوزت الفحص فيمكنك بعدها إلقاء نظرة عن قرب على الشفرة. حتى إنْلم تكن مطور ملحقات ووردبريس، فستقدر على اكتشاف المشكلات المحتملة المتعلقة بالتعليمات البرمجية في ملفات الملحقات إنْ أخذت الوقت الكافي لذلك. إنْ وجدت طلبات للحصول على معلومات حسّاسة بدون مبرّر واضح، فذلك يعني وجود أمر على غير ما يُرام. 3- مراجعة السمة هل سمعت عن استغلال ثغرات TimThumb أو Slider Revolution؟ على الرغم من أنّ الملحقيْن المذكوريْن ليسا مزيَّفيْن، إلّا أنّ الثغرات كانت تتسلّل عبرهما بسبب الطريقة التي يُستخدمان بها. تتضمن بعضٌ من سمات ووردبريس مجموعة من الملحقات بداخلها. قد تبدو هذه الطريقة مناسبًة لكونها تجعل كل تلك الوظائف جاهزة للاستخدام معًا، إلّا أن تضمينها مع السمة قد يتسبّب في مشاكل خطيرة إنْ لم يكن مطوّر السمة منتبهًا لثغرات الملحقات التي يستخدمها ويحدّثها لزبنائه. لذا، قدّم لنفسك خدمة، وراجع السمة الخاصة بك لمعرفة ما إذا كانت تتضمن أي ملحقات مدمجة معها. تعد TimThumb و Slider Revolution و Gravity ثلاثة من الملحقات الأكثر إشكالية عند تركها بدون تحديث؛ لذا، سيكون وجودها أول الإشارت الحمراء. عمومًا، من الجيّد أن تعرف ما يوجد في سمة ووردبريس الخاصّة بك لتعرف ما يمكنك فعله في حال ظهور ثغرة جديدة أو ملحق مزيَّف. 4- استخدام فاحص ثغرات قد لا يتمكن فاحص الثغرات (Vulnerability Scanner) من كشف حقيقة الملحقات المزيفة، ولكنه بالتأكيد سيُعلمك عند اكتشاف برامج ضارة أو بريد مزعج أو نوع آخر من الإصابات. 5- استخدام ملحق أمني تتكفّل الملحقات الأمنية بعدد من المسؤوليات في موقعك، ومن بينها إبلاغك عند إزالة ملحق تستخدمه من مستودع ووردبريس أو عند تغير وضعها. 6- إدارة الملحقات الخاصة بك وصيانتها نتمنى لو كانت الملحقات من الأشياء التي تفعلها مرة واحدة وتنسى أمرها، إلّا أنّ الواقع يختلف عن ذلك. تحتاج مساعدات ووردبريس هذه إلى العناية والاهتمام المستمرَّيْن. إليك في ما يلي ما يمكنك القيام به لإدارة قائمة ملحقاتك والحفاظ عليها بطريقة صحيحة: الحفاظ على تحديث جميع الملحقات (وكذلك برنامج ووردبريس الأساسي والسمة الخاصة به). احذف أي ملحقات قديمة أو غير مستعملة. تخلّص فوراً من أي ملحقات مزيَّفة أو مصابة بثغرات أمنية خطيرة أو مشاكل في الأداء. راجع قائمة SiteLock للملحقات المزيَّفة للتأكد من عدم وجود ملحقاتك فيها. 7- مراجعة موقعك بعد تثبيت الملحق تأكّد، كل ما ثبّت ملحقًا جديدًا أو حدّثت ملحقًا مثبَّتا، من مراجعة ما يراه الزوار على موقعك. لم يدرك الكثير من المستخدمين أنه قد تم تثبيت ملحقات مزيفة إلّا بعد أن لاحظوا ظهور إعلانات مزعجة على مدوناتهم. 8- استخدام قاعدة بيانات WPScan لثغرات ووردبريس يحتفظ هذا المتتبع عبر الإنترنت بقائمة محدَّثة باستمرار للثغرات المكتشفة في ووردبريس والملحقات والسمات. إذا كنت قلقًا من احتمال وجود مشكلات في ملحق تستخدمه فاستخدم قاعدة البيانات تلك لكون نقطة مرجعية. كإجراء عملي، يمكنك الاشتراك في تنبيهاتهم حتى تكون على اطّلاع دائمًا عندما يُبلَغ عن مشكلة في وورد بريس. 9- ثق فقط في الأفضل في حالة الشك، اختر ملحقات ووردبريس فقط من مصادر موثوقة، وابحث في مستودع ووردبريس و CodeCanyon عن المطوّرين ذوي السمعة الطيبة. الخاتمة حتى مع وجود أكثر معايير الأمان صرامةً سيجد المخترقون طريقة لاستغلال الثغرات المعروفة في ووردبريس. يعدّ اعتمادنا على الملحقات للتعامل مع جزء كبير من العمل نيابة عنا، لسوء الحظ، واحدة من نقاط الضعف تلك. بالطبع لا يعني ذلك أنه يجب عليك التوقف عن استخدام ملحقات ووردبريس. بل يعني ببساطة أنك بحاجة إلى أن تكون أكثر يقظة وتوخيًّا للحذر الشديد عند تحديد الملحقات التي يلزم استخدامها على موقع ووردبريس الخاص بك. طالما أنك تلتزم بأفضل الممارسات في استخدام الملحقات وتثق فقط في الجهات الخارجية المعروفة والمدققة تمامًا لتزويد موقعك بميزات ووظائف محسّنة، فستجد أن الملحقات المزيَّفة لا تمثّل تهديدًا حقيقيًّا لك. ترجمة-وبتصرف –للمقال Fake WordPress Plugins: What You Need to Know لصاحبته Suzanne Scacca
  4. عندما أُصدر قانون حقوق الطبع والنشر الأمريكي الأصلي عام 1790، كان هدف الحكومة حماية حقوق المؤلفين على أعمالهم. بالانتقال إلى عصرنا الحالي، لم يعد الكّتاب والمؤلفون والأدباء هو وحدهم من تحتاج أعمالهم للحماية، الأعمال الإلكترونية الموجودة على مواقع الويب تحتاج للحماية أيضا. ربما يمكنني كتابة فصول كاملة حول موضوع الملكية الفكرية، وحماية حقوق الطبع والنشر، والانتهاكات التي تتعرض لها، ولكنني أريد الآن التركيز على ما عليك القيام به لحماية صور مدونتك. مقدمة قصيرة عن حقوق نشر صور المواقع الإلكترونية تعد الصور أحد أجزاء موقعك الأكثر عرضة لانتهاك حقوق نشرها، فمن السهل نسخها، وبالتالي سرقتها، من خلال النقر عليها بالزرّ الأيمن وتنزيلها، أو أخذ لقطات شاشة لها، أو البحث في غوغل، أو استخلاص المواقع (Web scraping) عن طريق برامج تنزّل محتوى الموقع لتصفحه على جهاز المستخدم كما لو كان يتصفّحة مباشرة على الإنترنت. رغم أنه سيكون رائعًا لو أننا نعرف أنّ أحدًا لن يسرق صورك، إلّا أنه من الواقعي أكثر أن نأمل ذلك، ولكن نتوقع حدوث ذلك على أي حال. قبل أن نبدأ، من المهم أن نفهم بعض الأشياء المتعلقة بحماية حقوق النشر، في ما يتعلّق بتطبيقها على صور مدونتك. أولًا، يمتلك منشئ الصور الحق وحده دون سواه في نسخها واستخدامها. إذا كلفه شخص آخر (رب عمله عادة) بإنشاء تلك الصور، فإنّ هذا الأخير يمتلك تلك الحقوق. ثانيًّا، هناك بعض الحالات التي يكون فيها من المقبول قانونيًا للآخرين استخدام صورك، وهذا ما يعرف باسم الاستخدام العادل. وأخيرًا، قد ترغب بالفعل في تشجيع الآخرين على أخذ صورك واستخدامها. في هذه الحالة فإنك تلك الحقوق لا تزال ملكًا لك، ولكنك تسمح للآخرين بترخيص حقوق استخدامهم لها (توجد تعليمات حول ذلك أدناه). إذا كان لديك محتوى من الصور ذي قيمة على موقع الويب الخاص بك، فعليك أن تكون مستعدًا للتعامل مع الانتهاكات. تحدث سرقة الصور أحيانًا لأنّ الأشخاص غير مدركين لقانون حقوق الطبع والنشر، ولا يفهمون أنه من غير القانوني وغير الأخلاقي استخدام صور شخص آخر دون إذن. في أحيان أخرى، يستخلص أناس مواقع الويب عن عمد بغرض سرقة صور شخص آخر. بغض النظر عن كيفية انتهاك عملك، أو لماذا فإن حمايته مسؤوليتك لوحدك. حماية حقوق نشر الصور من موقعك لحسن حظك، من السهل جدا تزويد موقعك بعدد من الإشعارات والأدوات والعلامات المائية لتكون حاجزًا ضد التعدي حقوق صورك. على الرغم من أن هذه الحيل ليست مضمونة بنسبة 100٪، إلا أنها على الأقل ستساعد في تثبيط بعض الأشخاص عن سرقة صورك. 1. إضافة إشعار حول حقوق النشر تعد حماية حقوق التأليف والنشر أمرًا لازما. بمجرد إنشاء الصور الخاصة بك، فإنّ لك الحق في نسخها واستخدامها وبيعها. ومع ذلك، من المهم أن يكون لديك إشعار ظاهر يثبت ملكيتك للمحتوى الموجود على موقع الويب (هذا يشمل جميع المحتويات الموجودة على موقع الويب، وليس الصور فقط). تحتاج إلى ثلاثة عناصر لإنشاء إشعار حقوق الطبع والنشر الخاص بك: رمز حقوق التأليف والنشر ©. اسم المالك (قد يكون الشركة أو الفنان أو أي شخص آخر). السنة التي أُنشئ فيها العمل. ثم يمكنك استخدام ملحق Footer Putter لإضافة إشعار في تذييل موقع الويب الخاص بك لكي يظهر تلقائيًا في كل صفحة. 2. إضافة بيان شروط الاستخدام تعد صفحة شروط الاستخدام المكان الذي يمكنك فيه أن تحدد عددا من الأمور: ملكيتك الكاملة للصور (والمحتويات الأخرى) على الموقع الإلكتروني. عرضك لامتيازات الترخيص التي توفّرها لأي شخص يريد استخدام صورك. قواعد الترخيص الخاصة بك بما في ذلك النسبة (الإحالة) والتسعير. بدلاً من كتابة صفحة شروط الاستخدام بنفسك استخدم الملحق WP Auto Terms لإنشاء صفحة لشروط الخدمة تلقائيّا. يمكنك تحديد ما تريد أن يشمله ترخيص المشاع الإبداعي أيضًا (إذا كنت ترغب في تقديم امتيازات هذا الترخيص). 3. تعطيل زر النقر الأيمن هناك مجموعة متنوعة من الطرائق التي يمكن للأشخاص من خلالها الحصول على نسخة من صور موقعك. يعد تعطيل وظيفة النقر بالزرّ الأيمن إجراءً جيدًا للبدء به، وسيساعد أيضًا في حماية جميع المحتويات الأخرى من النسخ واستخدامها في أي مكان آخر. يعدّ ملحق الحماية من نسخ المحتوى wp وتعطيل النقر بالزرّ الأيمن أحد الوسائل التي تتيح لك تعطيل تلك الوظيفة. 4. تعطيل الربط الساخن إذا لم تكن قد سمعت بالربط الساخن (Hot linking) من قبل فالمقصود به هو العملية التي يعرض بها شخص صورك على موقعه عن طريق رابط مباشر إليها (بدلًا من الاستيلاء على نسخة من الملف ورفعها على موقعه). نظرًا لأنّ من يفعل ذلك يحمّل الصورة مباشرة من خادمك، ولا يضع نسخة منها لديه، فإنه في الواقع يستخدم النطاق الترددي (Bandwidth) لخادمك، وبالتالي موارده. من هذا المنطلق فإنّ الأمر ليس فقط غير قانوني لانتهاكه حقوق النشر، بل إنه غير أخلاقي أيضًا لأنه يكلفك أنت أموالاً مقابل الوصول لتلك الصورة. سيساعدك ملحق All In One WP Security & Firewall في تعطيل إمكانية الربط الساخن على موقعك. 5. إضافة البيانات الوصفية (Metadata) للصور إذا كنت تخطط لإبراز صورك على موقعك الإلكتروني، فتأكد من أنّ كل صورة منها مشتملة على البيانات الوصفية لحماية حقوق النشر، بما في ذلك تاريخ التقاطها واسم المالك. سنسرد لك في ما يلي الطرق المختلفة التي يمكنك من خلالها القيام بذلك: البيانات الوصفية بصيغة ملف صوري متبادل (Exif): اضبط الكاميرا الرقمية مسبقًا لالتقاط جميع البيانات الوصفية الأساسية لحماية حقوق النشر، بما في ذلك التاريخ الذي تم التقاطه واسم المالك. البيانات الوصفية حسب نموذج المجلس الدولي للاتصالات الصحفية (IPTC) لتبادل المعلومات: أضف البيانات الوصفية في مرحلة ما بعد الإنتاج باستخدام برنامج التصميم الذي تختاره. وسوم البيانات الوصفية: أضف وسومًا بها بيانات وصفية إلى الصور وغيرها من الملفات البصرية مباشرة من سطح مكتب حاسوبك. استخدم نافذة خصائص الملف (Properties) على الحواسيب الشخصية لإدخال البيانات الوصفية لحقوق النشر. على نظام التشغيل ماك Mac، أدخل البيانات عند عرض نافذة المعلومات. الإدراج اليدوي لبيانات الصور على منصة ووردبريس: أدخل البيانات الوصفية لحقوق طبع ونشر الصور يدويًا كلما قمت بتحميل صورة إلى منصة الووردبريس. الإدراج التلقائي لبيانات الصور على منصة ووردبريس: استخدم الملحق Media Library Assistant للمساعدة في الحصول على البيانات الوصفية للصور، بصيغة IPTC أو EXIF، وكذلك للتعديل على مجموعات من الصور. 6. صور على شكل علامات مائية بالنسبة للصور ذات القيمة المالية فمن المهم للغاية بذل كل ما في وسعك لحمايتها من السرقة. دمغ تلك الصور بعلامات مائية هو أحد أفضل طرق حمايتها. علاوةً على ذلك، تمثل العلامات المائية طريقة رائعة لزيادة الوعي بعلامتك التجارية، نظرًا لأنه سيكون من الواضح وجود ختم به عنصر من هويتك التجارية (شعار، أو توقيع، أو أيقونة). ستضمن بتلك الطريقة أنّ أي شخص يستغل نسخة من صورك سيحتاج أيضًا مشاركة إثبات ملكيتك لحقوق الطبع والنشر. لكن تذكر أن العلامة المائية ينبغي أن تكون متسقة على جميع الصور. كما يلزم أن تستخدم نفس الاسم أو الأيقونة، ويتعين أن تكون العلامة المائية بنفس اللون، والعتامة، والحجم، والوضع، لذلك فكر في هذا الأمر بعناية قبل الالتزام بشيء ربما يعمل جيدًا على صورة واحدة فقط ولكن ليس على البقية. هناك ثلاث طرائق لإضافة علامة مائية على صورك: يدويًا: استخدم برنامج تصميم مثل إليستريتور أو فوتوشوب لإضافة العلامة المائية إلى صورك. إذا لم يكن لديك برنامج تصميم فيمكنك استخدام أداة مجانية مثل Canva. بالجملة: هناك عدد من خدمات العلامة المائية المجانية المتاحة. يوفّر موقع اVisual Watermark عددًا من قوالب العلامات المائية (إنْ لم تكن قد أنشأت واحدة) وتمكّنك من تطبيق العلامة المائية على مجموعة كبيرة من الصور مرة واحدة. باستخدام ملحق: يساعد الملحق Image Watermark المستخدمين على تحميل العلامات المائية، وتحريرها، ثم تطبيقها على جميع الصور في مجلد الوسائط. 7. منع الوصول إلى الوسائط يعد الملحق Response WordPress Gallery أداة رائعة لإنشاء معارض صور على موقعك. من الصدف وجود ميزة للحماية بكلمة المرور، وهي ميزة تعجبني كثيرا. سواء كنت تشعر بالقلق إزاء وصول المستخدمين الداخليين أو المخترقين الخارجيين إلى الملفات الأصلية للصور، فإن حظر الوصول إلى مجلد الوسائط بكلمة مرور قوية يعد طريقة موثوقة. 8. تسجيل الملكية الفكرية لصورك أحد الأشياء التي لم أذكرها بعد هي تسجيل حقوق الطبع والنشر. على الرغم من أن حقوق الطبع والنشر تعد امتيازًا أصيلًا، فإن وضع إشعار بحقوق الطبع والنشر على موقعك، ووضع علامات مائية، وإضافة المنع كلما كان ذلك ممكنًا، كل ذلك لا يكفي دائمًا لوقف سرقة الصور. إذا حدث واكتشفت أن شخصًا ما سرق صورك فيجب أن تكون هذه الصور مسجّلة لدى مكتب حقوق الطبع والنشر بالولايات المتحدة حتى يمكنك اتخاذ إجراء قانوني ضد المتعدي على تلك الصور. تسجيل الحقوق عملية واضحة ويمكنك القيام بها عبر تقديم طلب بسيط عبر الإنترنت. سيستغرق الأمر وقتًا قصيرًا وقليلًا من المال، لكن الأمر يستحق ذلك العناء على المدى الطويل. 9. راقب وكن على استعداد لاتخاذ الإجراءات اللازمة من المهم الإشارة إلى أن جميع الحيل المذكورة أعلاه، بما في ذلك تسجيل حقوق الملكية لصورك، تهدف إلى مساعدتك في توضيح مدى جديتك في حماية حقوق النشر. ومع ذلك، فإن ما لن تفعله هذه الحيل هو تزويدك بشخص يساعدك في فرض الحماية على صورك. تتحمل وحدك مسؤولية مراقبة الانتهاكات، ويمكنك استخدام عمليات البحث عن الصور عبر الإنترنت مثل البحث على غوغل للتحقق. إذا وجدت أي حالات سرقة، فقدّم إنذارًا لحذف المحتوى المخالف حسب قانون الألفية للملكية الرقمية. على الفور سيُبلَّغ المخالفون بنيتك اتخاذ إجراءات قانونية ضدهم. حماية المالك يعد المحتوى الذي أنشئ لموقعك على الويب شكلًا من أشكال الملكية الفكرية، ملكيتك التي تحتاج إلى الحماية. بذلت مجهودًا كبيرًا لإنشاء الصور على موقعك. لا تدع كل هذا العمل الشاق واستثمار الوقت والمال يضيعان. ضع الحواجز في مكانها المناسب لصرف الناس عن سرقة صورك وإثبات حقوقك بوضوح وحتى تتمكن لاحقًا من استرداد أي أموال مفقودة نتيجة السرقة. ترجمة - وبتصرف - للمقال ‎9 Ways to Protect Your WordPress Blog’s Images from Theft لصاحبته Brenda Barron
  5. لا شك أن شركة أدوبي (Adobe) تتربع على عرش العالم في برامج التصميم. إنها توفر كل شيء بدءًا من تصميم الفكتورات (الصور المتجهة Vectors) وصولًا إلى الأعمال المطبوعة، ومع إصدارها لبرنامج أدوبي إكس دي (Adobe XD)، فإنها تقدم الآن نماذج الويب الأولية (Prototypes). وعلى الرغم من أن هذه البرامج بها الكثير من الميزات، فإنها تزداد توسّعًا لتشمل مزيدًا من الإضافات. ولهذا السبب أسرد هنا أفضل البرامج المساعدة والإضافات لجميع مصممي سحابة أدوبي الإبداعية (Adobe CC) الذين يقومون بإنشاء أي شيء انطلاقًا من تطبيقات الجوال وحتى نماذج المواقع الإلكترونية. فبغض النظر عن مستوى خبرتك، من المؤكد أنك ستجد شيئًا مفيدًا هنا. Craft أبدأ قائمة الإضافات بحديثي عن InVision Craft والتي تعتبر إلى حد بعيد أكبر إضافة. فهي متوفرة للفوتوشوب (Photoshop) وسكتش (Sketch)، واللذيْن يوفران نفس الميزات. وتمثّل Craft مكتبة من المكونات الإضافية مع العديد من الميزات المختلفة المدمجة معًا. فيمكنك تصميم نماذج أولية prototypes، وأتمتة "المحتوى الوهمي المولّد" أو ما نطلق عليه اسم (لوريم-إيبسوم Lorem Ipsum)، ومزامنة موارد التصميم تلقائيًا مع السحابة. كل ذلك من لوحة الإضافة Craft. هذه الإضافة مجانية وستظل هكذا إلى الأبد. أوصيك بتجربتها وسترى كيف سيتحسن سير عملك الرقمي بها. Fontea يشكّل فن صياغة الحروف وطباعتها (التايبوغرافي) جزءًا كبيرًا من تصميم الويب، وبواسطة خطوط جوجل للويب Google Web Fonts يمكنك الذهاب إلى أبعد من خطوط النظام الافتراضية (default system fonts). لهذا السبب بالضبط تم بناء Fontea؛ لمساعدة مصممي الويب في صياغة الطباعة الجميلة دون الاعتماد على عائلات الخطوط المثبتة مسبقًا. يمكنك مع Fontea الاختيار من بين مئات الخطوط من Google مجانًا. ويمكنك أيضًا تضمين جميع هذه الخطوط في مواقع الويب الخاصة بك، لذا فهي مثالية لأي مشروع. كما يمكنك التنقل بسرعة بين الأنماط المختلفة دون تنزيل أي شيء. Block HTML تتيح لك الإضافة المجانية HTML Block كتابة التعليمات البرمجية وتحويلها مباشرةً إلى عناصر في Photoshop، ويشبه هذا عكس ما يقوم به البرنامج المساعد لتصدير الكود، حيث يمكنك الآن استيراد الكود مباشرة إلى ملفات Photoshop. سيحب المطورون خصوصًا هذا المكون الإضافي؛ لأنه غالبًا ما سيسهل عليهم إنشاء أزرار وقوائم وأعمدة باستخدام CSS أولاً. فإذا كنت تفضل الترميز باستخدام أدوات أشكال Photoshop وتأثيرات الطبقة، فإن تثبيت هذا المكون الإضافي سيوفر عليك ساعات من الهمّ. PS Pen Panel لم يكن الغرض من Photoshop أن يكون أداة تحرير رسوم متجهة (فكتور). ومع ذلك، فهو يحتوي على هذه الأدوات التي تُعتبر واحدة من أفضل الطرائق لتصميم العناصر المتجهة (الفكتورات) للويب. إن التنقل بين أدوات القلم المختلفة وفتح قائمة التفضيلات لتشغيل / إيقاف تشغيل "أدوات Snap Vector Tools" يمثل إزعاجًا كبيرًا بالنسبة لنا، PS Pen Panel ستحل هذه المشكلة تمامًا. إنها إضافة مجانية يضيف لوحة جديدة إلى واجهة المستخدم الرسومية. وقد تم تصميم هذه اللوحة لمصممي الكائنات المتجهة (الفكتورات) الذين يصنعون الرموز باستمرار في Photoshop بدلاً من Illustrator. وقد يستغرق الأمر بعض الوقت للتكيف معه، لكنه سيسرع من سير عملك. ملاحظة: هذه الإضافة مجانية 100٪ لكنها لا تزال تخضع لعملية اختبار من الموقع. إنها الطريقة التي تم بها تصميم منظومة الإضافات، لكن لوحة القلم هذه مجانية للتنزيل، لذا لا تدع الموقع يربكك! AI2Canvas يمكنك القيام بالكثير باستخدام لوح الرسم (HTML5 Canvas) ورسومات الويب المتجهة من نوع SVG. لكن هذه الخطوة الإضافية لتصدير ملفات SVG وترميزها إلى عناصر لوح الرسومات (canvas elements) تستنزف الكثير من الوقت. مع الإضافة AI2Canvas، يمكنك أتمتة ميزة تصدير Illustrator بكل سهولة. حيث يتيح لك ذلك إنشاء رسومات متجهة وتصديرها إلى لوح رسم HTML5 Canvas تلقائيًا. ويمكنك حتى إضافة ميزات الدوران لإنشاء تأثيرات متحركة، وكل ذلك من Illustrator! Copio إذا كنت تريد نسخ طبقة في Photoshop ، فيمكنك تكرار ذلك دائمًا بنقرة زر واحدة. لكنك لن تتمكن مطلقًا من نسخ طبقة من ملف واحد ولصقه في ملف مختلف. يمكن مع Copio أن يتغير كل شيء. فهذا البرنامج المساعد البسيط المجاني يمكِّنك من النسخ / اللصق الكامل لأية طبقات ترغب في نقلها من ملف إلى ملفات فوتوشوب PS أخرى. عادةً ما يتعين عليك سحب وإسقاط الطبقات، وقد يكون ذلك محاولة شاقة لمطابقة المؤشر فوق علامة تبويب ملف Photoshop معينة. باستخدام هذا البرنامج المساعد، يمكنك فقط تحديد الطبقة ونسخ / لصق باستخدام اختصارات لوحة المفاتيح في Copio. لقد أصبح التصميم في Photoshop أسهل كثيرًا. Cut&Slice Me زادت أجهزة رتينا (منتجات شركة Apple) من الوقت اللازم لتصميم تطبيقات الهواتف الذكية. لكنها أيضًا جلبت هذه المتطلبات إلى تصميم الويب المتجاوب حيث تحتاج حتى مواقع الويب إلى صور بمقاسات @2x و @3x لتبدو واضحة على كل شاشة. فباستخدام الإضافة Cut & Slice Me، يمكنك أتمتة عملية التصدير من خلال الصور ذات الحجم المناسب والمسمى الصحيح. ما عليك سوى اختيار الأجهزة التي تحتاج إلى دعمها، ودع هذه الإضافة تتكفل بالباقي. Composer يعتبر Adobe Photoshop برنامجًا رائعًا لصناعة النماذج نظرًا لوجود ميزة تكوين وتجميع الطبقات (layer comps). حيث تتيح لك هذه التكوينات إعادة تصميم الواجهات بألوان، وحالات مستخدم، وميزات مختلفة مع الاحتفاظ بها جميعًا في مستند واحد. ينتقل Composer بتكوينات الطبقة إلى المرحلة التالية. فهذه الإضافة تتيح لك تحديث العناصر المتشابهة عبر جميع تكوينات الطبقة، وبذلك فلن تحتاج إلى العمل عليها فرادى. لذلك، لنفترض أن لديك شعارًا في الزاوية العلوية اليسرى مؤلف من أربع تكوينات طبقية مختلفة. وأردت نقله إلى المركز. تقليديًا، ستحتاج إلى سحب هذه التكوينات عبر الشاشة لكل طبقة أربع مرات. باستخدام Composer، فأنت تقوم بتحديد جميع تكوينات الطبقة، وتحرك الشعار، وتكون قد أنجزت ما تريد بكل سهولة ويسر. Long Shadow Generator لقد ساهمت اتجاهات التصميم الحديثة مع material Design ودفعت إلى إبراز تأثير الظل الطويل. وأصبح من الشائع جدًا أن يكون لدى مستخدمي Photoshop مولّد الظل الطويل Long Shadow Generator هذه الإضافة الذي يعيد إنشاء الظل المطلوب بنقرة واحدة. يمكنك تحديد طول الظل، العتامة، والاتجاه مع نوع اللون. ثم النقر فوق "إنشاء"، ومن ثم يتم تطبيق ظلك الطويل على أي عنصر تريده. CSS3Ps لايمكن ختام هذه المقالة دون ذكر أداة تصدير الكود المهمة CSS3Ps. فهي تُعتبر أفضل خيار مجاني متاح مع الدعم الكامل لخصائص CSS3 الحديثة. قم أولاً بتصميم عناصر في Photoshop، ثم حدد تلك الطبقات وانقر فوق الزر CSS3Ps. ستقوم الإضافة تلقائيًا بإخراج شفرة CSS3 الخالصة جنبًا إلى جنب مع الأصناف (classes) لإعادة إنشاء هذه العناصر في صفحتك. يمكنك تطبيق هذا المكون الإضافي على كل شيء بدءًا من طبقات النص وصولًا إلى الأزرار، كما أنه يدعم طبقات متعددة في آنٍ واحد. يمكنك مشاهدة هذا الفيديو التوضيحي للتعرف على كيفية استعمال هذه الإضافة. كل هذا ليس إلا نزرًا يسيرًا من الإضافات المفضلة لمصممي الويب، ولكن توجد هناك إضافات جديدة دائمًا يتم إصدارها، لذا كن على اطلاع وانتظر المزيد من مكونات Adobe CC الإضافية في المستقبل القريب. ترجمة -وبتصرف- للمقال ‎10 Free Web Design Plugins For Adobe Photoshop لصاحبه Jake Rocheleau
  6. أصبحت الفترة التي تزامنت مع ظهور الوسائل والطرق الجديدة التي يحاول المطورون استخدامها لإقناع الزائرين بالصور المتخصصة والمحتوى الديناميكي وإضافة الفيديو فترةً مهمة لتحميل صفحة الموقع ومصدر قلق دائم لمطوري الويب، خاصةً تلك الوسائط التي تحتاج وقت كبير في التحميل. وقد يظهر هذا القلق واضحًا عند إضافة أي محتوى جديد على اختلاف نوعه إلى صفحة الموقع، وهنا يتطلب من الموقع الخاص بك إنشاء طلبيات HTTPS (بروتوكول نقل النص التشعبي الآمن) إضافية تعمل بدورها على إبطاء موقعك بشكل تدريجي. سوف أتحدث في هذا المقال عن طلبيات خادم HTTPS، وعن ماهية الأدوات التي يجب استخدامها لتتبع هذه الطلبيات وأيضًا سوف أوضح الطرق التي يمكنك بها تقليص تلك الطلبيات داخل موقع ووردبريس الخاص بك. ما هي طلبيات خادم HTTPs وهل لها تأثير على تجربة المستخدم؟ بالطبع لا توجد هناك أهمية أكبر من أهمية تجربة المستخدم التي تعمل على جذب الزوار للموقع والاشتراك فيه أو شراء منتجاتك، أو التعرف على المزيد من المعلومات حول خدماتك. فهنا يظهر واضحًا جدًا أن أي خطأ بسيط يمكن أن يعرّض هذه التجربة للخطر فمثلًا لو كان لديك صفحة ويب تستغرق بضع ثوانٍ قليلة للتحميل، فهذا وحده كافٍ أن يعرّض معدل التحويل لديك للخطر. لذا ولتجنب ذلك، عليك التعرف على هذه المعلومات حول طلبيات خادم HTTPS ولماذا تحدث. ففي كل مرة يزور شخص ما موقع الويب الخاص بك أو إحدى صفحاته (وركّز هنا في عدد الصفحات الموجودة على موقعك)، إذ يقدّم متصفحه طلبًا إلى خادم موقع الويب الخاص بك وهذا يتكرر مع كل صفحة يقوم بزيارتها. وهنا تكمن مسؤولية موقع الويب الخاص بك في إرسال كل ملف بما يحتوي عليه (النصوص والصور التي عادة ما يشتمل عليها أغلب المواقع بالإضافة إلى الفيديو، وملفات CSS، وملفات جافاسكربت، …إلخ) ويتلقى كل ملف من تلك الملفات طلب خادم منفصل. وبعد أن تعالج جميع طلبيات الخادم وتنقل الملفات إلى المتصفح، يمكن تحميل موقع الويب الخاص بك على الشاشة، ولكن تخيل ماذا سوف يحدث إذا كان موقع Wordpress الخاص بك يحتوي على عشرات أو حتى مئات الملفات لإرسالها إلى متصفحات من يزوره؟ توقع فعليًا زمن تحميل الصفحات، بالطبع هذا شيء غير مستحب إن كان الزمن كبيرًا! وقد يزداد الأمر سوءًا بشكل كبير مع تزايد شعبية الموقع وتلقي طلبيات خادم HTTPS كثيرة في وقت واحد. مثال على ذلك: 40٪ من الناس لا يتحملون الانتظار وقد يفقدون صبرهم إذا كان عليهم الانتظار أكثر من ثلاث ثوان لتحميل الصفحة. و قد أشارت دراسة كيس ماتريكس إلى أن التأخير لمدة ثانية واحدة في استجابة الصفحة عندما يتفاعل الزائر معها قد يكلف ما يصل إلى 7٪ من التحويلات؛ لذا، تحتاج إلى العثور على طريقة لتقليص عدد الملفات التي يجب إرسالها إلى المتصفح إذا كنت تريد أن تظل أوقات التحميل هذه مقبولة. فمن غير المعقول أن يكون الحل هو تقليل عدد الصور أو المحتوى الديناميكي أو الانتقال إلى الحد الأدنى من التصميم الخاص بك بحيث تخسر بذلك ميزة العرض الخاصة بموقعك و يصبح الأمر مملًا للغاية. بالرغم من أهمية حجم وكمية الملفات، إلا أنه يتوفر هناك العديد من الطرق في ووردبريس للتغلب على ذلك. الأدوات الخاصة بتتبع طلبيات خادم HTTPS وما يتعلق به من حسن الحظ أن هناك عدد من الأدوات تساعدك في تخطي عقبة تخمين السبب وراء ظهور شاشة الموت البيضاء لدى زوار موقعك ومعرفة ما يسبب ذلك. وتعمل أيضًا على تتبع مصدر التأخر في أوقات تحميل موقعك. أعرض هنا إليك بعض الأدوات المجانية والموثوقة. أدوات التطوير في كروم إذا كنت تريد رؤية دقيقة ومتعمقة في المتصفح كروم للمدة التي يستغرقها كل عنصر وملف يعالج على موقع ووردبريس الخاص بك. ابدأ أولًا بفتح نافذة متصفح جوجل ثم انتقل إلى صفحة الإعدادات التي تسمى أدوات المطور (Developer Tools) كما يظهر في الصورة. ستفتح عند الضغط عليها لوحة تحكم جديدة على الجانب الأيمن من الشاشة. حينئذ اضغط فوق علامة التبويب Network "الشبكة"، ومن هنا ستتمكن من معرفة الإجراءات التي تحدث في صفحتك. وستتمكن أيضًا من البحث بحثًا دقيقًا في توقيت كل ملف على حدة للتأكد لمعرفة أيها قد يكون سببًا في زيادة الضغط (الحمل) على صفحتك. أداة PageSpeed Insights لتحليل الأداء والسرعة من غوغل هذه الأداة ليست الوحيدة بالطبع التي تقدمها جوجل لمساعدتك في اكتشاف المشكلات المتعلقة بطلبيات خادم HTTPS من الناحية المثالية، فإذا كنت من مستخدمي أدوات التطوير فمن الواجب عليك الاستفادة من الأداة PageSpeed Insights التي يجب أن تكون ضمن قائمتك. تحلل PageSpeed إحصاءات محتوى صفحة الويب ثم تقدم اقتراحات لتحسين سرعة تلك الصفحة. انتقل إلى صفحة PageSpeed Insights وضع رابط الصفحة التي تريد تحليلها وسوف تقدم لك نتائج تفصيلية تقيّم فيها أداء الصفحة على الجوال وكذلك على سطح المكتب. يقدم لك كل تقييم من هذه التقييمات درجة من 100 تبين مدى جودة الأداء ومن ثم يقدم لك نصائح حول كيفية تحسين موقعك لتحسين الأداء. أداة GTmetrix أداة GTmetrix هي أداة تقييم واختبار سرعة الموقع وستوفر لك درجة تقيِّم موقع الويب الخاص بك. وتتميز أداة GTmetrix أنها تتعامل في عملية شرح أداء موقعك بطريقة أكثر شمولًا وثقة من جوجل لذلك، بالرغم من ظهور العلامات الحمراء و الصفراء (وهي ليست جيدة)، إلا أنه يمكنك التمرير فوق كل نقطة من نقاط البيانات ومعرفة متوسط الدرجات وأوقات التحميل. وهذا سيعطي فكرة أكثر واقعية حول مستوى أداء صفحات موقعك. عند تقييمك من GTmatrix، تتلقى نصائح قياسية حول كيفية تحسين السرعة والأداء لصفحتك. كل تلميح يظهر بجانبه الدرجة المطابقة، وهذا يتيح لك معرفة المكان الذي أنجزت فيه الأمور بشكل جيد، وتعطي مقترحات للتحسين. وإذا كنت تريد المزيد من المساعدة في تلك المناطق الأضعف، فما عليك سوى النقر على السهم المتجه للأسفل وسيخبرك بالملفات التي يمكن أن تستخدم بعض الأعمال. أداة Pingdom الأداة Pingdom تتشابه إلى حد كبير مع أداة GTmetrix في عملها و كيفية تقديم المعلومات. وقد تجد أن الاختلاف الرئيسي بين الأداتين هو في السرعة التي توفر بها نتائجها وأيضًا الواجهة هذه أجمل قليلًا. و لكن من ناحية أخرى، ستتلقى نفس التقييم الدقيق تقريبًا من كلا الأداتين وهذا هو بالضبط ما تحتاجه إذا كنت تحاول توفير الوقت في تقييم مشاكل موقعك وتريد تضييق نطاق ما لا يعمل. الأداة WebPageTest لن يمر ذكر أدوات اختبار صفحات الويب دون ذكر الأداة WebPageTest هنا. مع أن الموقع قليل الشكوك والنتائج ليست سهلة القراءة مثل بعض الأدوات الأخرى، إلا أنني أحب الرسم البياني الشريطي المستخدم لعرض المدة التي يستغرقها كل ملف للتحميل. رغم أنه قد يكون هناك قدر هائل من البيانات في هذه الصفحة ولا توجد نصائح حول كيفية حل مشكلات التباطؤ المحددة، ما زلت أعتقد أن طريقة عرض العناصر الأثقل جيدة نوعًا ما. يمكنك دائمًا استخدام هذا بالاقتران مع أدوات المُطوِّر لتضييق نطاق العناصر ذات الإشكالية في موقعك. كيفية تقليل عدد طلبيات خادم HTTPS لموقع وورد الخاص بك وبعد أن تعرفت على كيفية تحديد المناطق المسببة لضعف أداء موقع الويب الخاص بك، دعنا نتحدث عن كيفية حل المشكلة كاملة من بدايتها وهي تقليل عدد طلبيات خادم HTTPS لموقع ووردبريس الخاص بك. أقدم إليك 9 خطوات يمكنك القيام بها وبذلك تحتفظ على عدد معقول من الطلبيات في موقعك. 1) حذف الصور غير الضرورية هذا ليس معناه أنه يتوجب عليك التضحية بالصور من أجل خفض طلبيات الخادم ولكن بدلًا من ذلك، أعتقد أنه يجب عليك التركيز والحفاظ على مكتبة الوسائط الخاصة بموقعك خالية من أي صور لا ضرورة لها أبدًا. لذا، إذا كانت هناك صور لا تستخدمها أو حتى لو كنت تفكر في استخدامها في المستقبل فيمكنك التخلص منها. في النهاية لن تضيف شيئًا لموقعك سوى إضافة وزن إضافي وطلبيات للخادم وموقعك ليس بحاجة إليها. 2) حذف الملفات الأخرى غير الضرورية وقد تُظهر لك أدوات تقييم سرعة صفحتك التي ذكرتها أن الصور ليست هي التي تسبب المشكلة، وتتفاجأ أن هناك إضافة لتغذية الوسائط الاجتماعية أو وجود فيديو مدمج في الصفحة. فأنصحك أنه إذا كان هناك أي شيء على موقعك ليس ضروريًا ويتسبب في الضغط، فقم بإلغائه. اشمل على ذلك الإضافات والقوالب التي قمت بتثبيتها، ولكن التي لا تستخدمها في الوقت الحالي. 3) ضغط وتقليص حجم الملف من الأشياء الأخرى التي يتوجب عليك فعلها هو تثبيت إضافة تدعى WP Smush التي تتولى عملية ضغط صور موقعك. فإذا كنت ترغب في الحفاظ على صور موقعك الجميلة وذات الدقة عالية على موقعك بجودة سليمة تحتاج إلى ضغطه. 4) إنشاء عفريت صور CSS باستخدام CSS، يمكنك إنشاء ما يعرف باسم عفاريت الصورة (Image Sprite وهي تقنية تقوم على مبدأ استعمال صورة واحدة تحتوي على مجموعة من الخلفيات واستعمالها في جميع أزرار الموقع ويرجع الهدف من استعمال هذه التقنية إلى تسريع تحميل الموقع والتقليل من استخدام موارد استضافة الموقع). فعليًا سوف يجمع ملف CSS هذا جميع ملفات الصور الخاصة بك ويضعها في ملف واحد. استعن بهذا الدليل من W3 Schools لإنشاء عفريت. 5) فعّل خاصية التحميل الكسول هل سمعت عن التحميل الكسول (lazy loading)؟ ربما تسمع به لأول مرة، وسأقرب لك فكرة عمله. هنالك إضافات خاصة ترسل طلبيات للخادم عندما يقوم المستخدم بالتمرير لأسفل إلى صورة على الصفحة، وهذا الإجراء يحفظ موقع الويب الخاص بك ويقلل من الاضطرار إلى إرسال طلبيات الخادم غير الضرورية إلى المتصفح التي لم يسبق لزوارك الوصول إليها من قبل. 6) تجاهل الأصول غير ذات الصلة عملية التجاهل هذه تقوم بها إضافة تسمى WP Asset Cleanup وهي خاصة بووردبريس وتعمل بشكل مشابه لكيفية عمل إضافات التحميل الكسول. فبدلًا من التركيز على تأخير طلبيات الخادم للصور التي لم تتم مشاهدتها، تستكشف هذه الإضافة ما إذا كان هناك إضافة أو ملف أو مادة عرض أخرى موجودة داخل القالب الخاص بك، ولكن ليس على تلك الصفحة المحددة وبعد ذلك تحفظ هذا الأصل من أن يتم تحميله والكشف عنه في تلك الصفحة. وبالتالي، يصبح هناك تقليل لعدد طلبيات الخادم التي تذهب إلى المتصفحات. 7) استخدام الإضافة Hummingbird استعمال إضافة التخزين المؤقت (caching) أمرًا ضروريًا لمواقع ووردبريس، وخصوصًا تكمن أهميته عندما يكون موقع ووردبريس الخاص بك يتعامل مع زوار دائمين للموقع. وبذلك ليست هناك حاجة فعلاً لمعالجة طلبيات الخادم نفسها إذا لم يتغير شيء، وبالتالي فإن إضافة التخزين المؤقت تعمل على ذلك وتزيل كل ما ليس له حاجة. ومن الإضافات المهمة في ووردبريس إضافة Hummingbird التي تؤدي دورها بشكل مثالي مع إدارة التخزين المؤقت للمتصفح، فهي تعتني أيضًا بضغط الملفات، وملفات CSS، وملفات JavaScript وتصغير ملفات html، كما يضيف CDN (أي اختصار شبكة توصيل المحتوى وهي عبارة عن مجموعة من الخوادم الموزعة بكل أنحاء العالم تعمل على إيصال المحتوى الثابت لمواقع الويب إلى المستخدمين حسب موقعهم الجغرافي بأقرب وقت وأقصر مسافة) وتعمل إضافة CDN على تسريع الأمور بشكل أكبر ومنح إمكانية الوصول إلى تقارير الأداء في حالة عدم رغبتك في استخدام أحد العناصر الثلاثة أعلاه لتقييم حالة سرعة موقعك. 8) دمج ملفات الجافا سكريبت و ال سي اس اس تحتوي مواقع ووردبريس على العديد من ملفات CSS وJavaScript فبدلًا من إرسال كل ملف كطلب خادم منفصل إلى متصفحات الزوار، يمكن دمجهم في ملف واحد منفرد لكل نوع. ضع باعتبارك أن ملف CSS المدمج الخاص بك يجب أن يكون داخل رأس موقع الويب الخاص بك، وملف جافاسكربت في التذييل. 9) الحد من الصور الخارجية يظهر هذا واضحًا وأكثر شيوعًا عند تعليقات المدونة. هل تعلم أنه إذا تركت نظام التعليق الافتراضي الخاص بووردبريس في مكانه فإنه سوف يستخدم تلقائيًا Gravatar (صورة تشخيصية ثابتة وهي عبارة عن خاصية أوتوماتيكية لسحب صور المعلقين وسيرهم) وبذلك تصبح هذه الصور طلبيات خادم إضافية يتعين عليك إرسالها إلى كل المتصفحات، فماذا لو كانت المدونة معروفة ومشهورة بالطبع سوف تصبح هناك فوضى. ولكن في ووردبريس يوجد هناك بعض الإضافات الخاصة بالتعليقات وتعمل على تجنب هذه المشكلة. الخلاصة أخيرًا مما يميز تطوير مواقع ووردبريس أن هناك الكثير من الأشياء التي تستطيع القيام بها داخل الموقع و تحسين أداءه، ولكن أحيانًا نغفل كيف يمكن لموقعنا الخاص بما يحتويه من قوالب وإضافات وصور رائعة تبرز جماله أنها قد تكون بشكل مفرط يفوق الحد في نظر المستعرض الذي يحاول ببساطة معالجة الموقع بالكامل. ومع ذلك، في وورد بريس عليك أن لا تخف أبدًا، فإذا استخدمت أداة مراقبة السرعة للصفحة وتابعت عليها دومًا وأيضًا التزمت بنصائح الحد من طلبيات الخادم التسعة التي ذكرتها في الأعلى، أعتقد أنك بذلك سوف تجعل أداء موقعك جيدًا. ترجمة -وبتصرف- للمقال How to Reduce HTTP/S Requests in WordPress لصاحبته Brenda Barron
  7. المُحرِّر VS Code (اختصار إلى Visual Studio) من مايكروسوفت هو محرّر شيفرة حرّ مفتوح المصدر حصل على شعبيّة كبيرة في الآونة الآخيرة. إنه خفيفٌ جدًا، ومرنٌ، ولكنه يمتلك عدة خصائص قويّة، بالإضافة إلى أنه يدعم كل لغات البرمجة المهمة تقريبًا، بما فيها PHP و JavaScript و ++C وغيرها. ربما تندهش إن علمت أن VS Code أيضًا متعدد المنصات. إنه لا يعمل على ويندوز وحسب، بل هناك نسخٌ للينكس وماك متاحة أيضًا. لكن ربما أفضل مزاياه على الإطلاق هي متجر الإضافات الضخم، الذي يحوي إضافات مجانيّة متاحة لدعم اللغات الجديدة، أو اكتشاف الأخطاء البرمجيّة، أو إضافة وظائف أخرى متنوّعة، وهذا يمكِّنُك من تكييف تجربة التحرير لكي تلبّي احتياجاتك بصورةٍ أفضل. اليوم نقدم لك بعض أفضل إضافات الـ VS Code على الإطلاق. GitLens رغم أن Git وظيفة مدمجة في VS Code، يهدف GitLens إلى زيادة قدرة المحرر بالمزيد من مميزات التحكم في الإصدار. إنه يقدم لك نظرة أعمق في الشيفرة، فيظهر لك ما الذي تغيّر ومن الذي غيره. يمكنك أيضًا إجراء موازنة بين التفريعات والوسوم والإيداعات المختلفة. بشكلٍ عام، ستجعل هذه الإضافة من التحكُّم في الإصدار تجربةً أكثر بصريّةً. Beautify هل تهتم بإبراز الصياغة بصورةٍ خاصة؟ إذا كان الأمر كذلك، فالإضافة Beautify هي الإضافة التي تحتاجها. فهي تستفيد من استخدام VS Code لـ Online JavaScript Beautifier، ولكنها تُمكِّنك من أن تقوم بتغييرات لأنماطها بسهولة. هذا يعني أنك تستطيع أن تضبط عناصر مثل الإزاحة والتفاف السطر والتفاصيل الدقيقة الأخرى بما يتوافق مع ذوقك تمامًا. ESLint من الصعب تنقيح الأخطاء في أي لغة برمجية ومن ضمنها JavaScript. ولكن إضافة ESLint تسهل عليك الأمر كثيرًا. إنها تساعدك عن طريق توضيح المشكلات المحتملة في الشيفرة قبل أن تقوم بتشغيلها. والأفضل من ذلك، تمكِّنك الإضافة من أن تُنشئ القواعد الخاصة بك لتنقيح الشيفرة وتدقيقها. Debugger for Chrome يساعد Debugger for Chrome المطوِّرين الذين يفضِّلون استكشاف أخطاء الشيفرة في أثناء وقت التشغيل. هناك عددٌ من المزايا المفيدة، بما فيها القدرة على ضبط نقاط توقف (breakpoints) في الشيفرة ونقاط المراقبة والطرفية. بالإضافة إلى ذلك، يمكنك اختيار تشغيل نسخةٍ من المتصفح Chrome من داخل VS Code أو إلحاق المصحِّح بنسخةٍ من المتصفِّح تعمل بصورةٍ منفصلة. React Native Tools React هو من أكثر مكتبات JavaScript المثيرة للاهتمام، لدرجة أن محرِّر ووردبريس الجديد Gutenberg مؤسس عليه. إذا كنت من ضمن الكثيرين الذين انضموا إلى المتحمسين له، فإضافة React Native Tools تعتبر ضرورية بالنسبة لك. فهي تعطيك القدرة على تشغيل أوامر React Native وتساعدك على اكتشاف أخطاء البرامج. One Dark Pro حين تتعامل مع الشيفرة، من المفيد أن يكون لديك محرّر ذو مظهر جذاب ومريح في آنٍ واحد. الشيفرة قد تستمرُّ لساعات متَّصلة. يُحضر One Dark Pro قالب “One Dark” الشهير من محرّر Atom إلى VS Code. وبذلك تحصل على هذا المظهر المألوف الرائع مع مميزات تطبيق مايكروسوفت مفتوح المصدر. Bracket Pair Colorizer 2 Bracket Pair Colorizer 2 هو إضافةٌ بسيطة، لكنها تسهِّل عمليَّة فهم الشيفرة كثيرًا. فهي تلوِّن الأقواس المتشابهة بلونٍ موحد، مما يتيح لك أن تحدِّد بدايات ونهايات الوظائف بصريًّا. بالإضافة إلى ذلك، يمكنك اختيار الألوان التي ستستخدم. vscode-icons لعلَّ أكثر التعديلات البصريَّة تأثيرًا لـ VS Code تأتي من vscode-icons. فهو يأخذ قائمة الملفات المملَّة ويضيف إليها أيقونات ملوَّنة وفقًا للغة البرمجة. هذا يسهّل التفرقة بين ملفَّات PHP وملفات HTML، على سبيل المثال. فضلًا عن ذلك، فإن الطابع المميز المضاف فكرةٌ مرحبٌ بها في أي مكان عمل. اكتب الشيفرة بطريقتك الخاصة العدد الهائل من الإضافات المتاحة لـ VS Code يجعل منه اختيارًا حتميًّا للاستخدام اليومي. لديك الحريَّة لضبط الأشياء بما يتناسب مع لغات البرمجة التي تستخدمها، ونوعيَّة المساحة البصريَّة التي تفضلها. بالإضافة إلى ذلك، فهو يوفِّر خليطًا مثيرًا من ثقافة المؤسَّسات التجاريَّة وثقافة البرمجيَّات مفتوحة المصدر. كونه مدعوم من مايكروسوفت، فهذا يضمن أنه سيتم تطويره بصورةٍ نشطةٍ في المستقبل. أما بالنسبة لمجتمع البرمجيات مفتوحة المصدر، فهو يخلق بيئةً ناجحةً حول البرنامج. النتيجة هي أن يحصل المبرمج على أفضل ما لدى الجانبين. مترجم وبتصرف عن Top Free Extensions for VS Code بقلم Eric Karkovack
  8. كثيرًا ما سمِعتَ بأنك تستطيع صنع مجموعتك الخاصة من الأيقونات في فوتوشوب، او بإمكانك البحث عنها على الإنترنت، ولكن ماذا إن أخبرتك بأنك تستطيع الوصول إلى مكتبات كبيرة من الأيقونات مباشرةً في فوتوشوب؟ نود اليوم أن نقدم لك هذه الإضافة في فوتوشوب. أولًا: مجموعة FlatIcon أكثر من 10,000 شكل متجه تضاف مباشرةً إلى فوتوشوب. ثانيًا: مجموعة Pixel 2 Vector تعرّف على أكبر مجموعة من الأيقونات المستخدمة في فوتوشوب بالمجان! ثالثًا: مجموعة Creative Market الوصول المباشر لمحتوى التصميم المميز من Creative Market. بإمكانك إيجاد المزيد على موقع blogging.com، وبإمكانك إيجاد مكونات إضافية اكثر من المتجهات في فوتوشوب: هذه القائمة تحتوي على أفضل الإضافات لفوتوشوب: تصميم المواقع الإلكترونية، والفُرَش، وأنماط الرسم، وتعديلات الألوان، وسير العمل، والفلترة، والمؤثرات الخاصة والتحجيم. ترجمة -بتصرف- للمقال ‎Access vector icons لصاحبه Zsolt Mathe
  9. حين تفكر في المشكلات المحتملة التي يمكن أن تتسبب فيها الإضافات لموقع ووردبريس الخاص بك، ستفكر على الأرجح في الإضافات رديئة البرمجة التي تؤدي إلى مشكلات في الأداء وثغرات أمنية، أليس كذلك؟ أو ربما تكون قد قرأت شيئًا مؤخرًا عن الإضافات المزيفة وأصبحت قلقًا بشأن موثوقية إضافاتك والمشكلات الأمنية التي قد تتسبب فيها. لكن هناك مسألة أخرى تتعلق بالإضافات عليك أن تدركها حين تضيف إضافات جديدة لموقعك، أو حتى حين تقوم بتحديث الإضافات الموجودة: تعارض الإضافات من الرائع أن هناك عشرات الآلاف من الإضافات التي صممها مطورون مختلفون، كلها صنعت لتلبية حاجاتٍ مختلفة. لكن لا شيء يضمن أن ما صنعه أحد المطورين لن يتعارض مع شيءٍ آخر على موقعك. تنشأ هذه التعارضات في العادة بسبب: تعارض بين إضافتين تعارض بين القالب الخاص بك وبين إضافة جديدة أو إضافة محدثّة تعارض بين إضافة ونسخة إصدار ووردبريس الحالية للموقع تظهر أعراض تعارض الإضافات عادةً في إحدى صورتين: إما أن يبدأ موقعك في التصرف بغرابة، تحديدًا حين تتوقف الإضافة عن العمل بالطريقة التي يجب أن تعمل بها – أو حين تطل "شاشة الموت البيضاء" برأسها البغيض بعد آخر تحديثٍ أو أحدث تثبيتٍ لإضافةٍ جديدةٍ. إذا ما حدث ذلك لأحد مواقع الووردبريس الخاصة بك، عليك أن تعرف كيف تشخِّص المشكلة وتتصرف بسرعة لعلاج الموقف. يقدم لك الدليل التالي الخطوات التي تحتاجها لتحديد تعارض إضافات ووردبريس ومن ثم تقوم بإصلاح موقعك. كما يتضمن الدليل أيضًا بعض النصائح لتجنب تكرار ذلك التعارض في المستقبل. كيف تشخص مشكلة تعارض إضافات ووردبريس وتحلَّها تقدم ووردبريس ومستودعات الإضافات الأخرى تفاصيل ومواصفات تقنية وتقييمات عملاء كثيرة جدًا لكل إضافة أو قالب لسبب وجيه. ذلك لأنهم يتوقعون أن يطَلع العملاء على هذه المعلومات لاتخاذ قرار واعٍ بشأن اختيار الإضافات المناسبة لمواقعهم. لهذا الأمر أهمية خاصة بالنسبة لأولئك المستخدمين الذين لا يستطيعون فحص البرامج، ويريدون أن يعرفوا إن كانت هناك مشكلات محتملة عليهم الانتباه لها. انتبه جيدًا للتفاصيل المهمة عند مراجعة إضافة جديدة أو قالب جديد في ووردبريس في المثال السابق، يمكنك أن ترى أن كل صفحة إضافة تعطي المستخدم فرصةً كافيةً للتأكد من أن المطور يتابع تحديث الإضافة مع تحديثات ووردبريس. كما يتمكن المستخدم أيضًا أن يرى ما يقوله الآخرون عن الإضافة في قسم "التقييمات والمراجعات"، بالإضافة إلى التعرف على نوعية المشكلات التي واجهتهم في قسم "الدعم". في هذا القسم ستكتشف مشكلات تعارض الإضافات المعروفة قبل أن تحدث على موقعك. لكن لعل تلك المشكلات الناتجة عن تعارض الإضافات لم يُعلن عنها. ماذا تفعل في تلك الحالة إذا ما توقفت إضافةٌ عن العمل أو ظهرت رسالة خطأ على موقعك أو ظهرت لك شاشة الموت البيضاء؟ إليك السيناريوهات الثلاثة التي ستجد نفسك في أحدها على الأرجح، وما الذي عليك فعله حيالها: السيناريو الأول: الموقع يعمل لكن الإضافة لا تعمل إذا كانت إحدى الإضافات على موقعك لا تعمل مطلقًا، أو لا تعمل بكفاءةٍ، لكنك لا تزال قادرًا على الوصول إلى ووردبريس وإلى موقعك، ابحث عن تحديثٍ للإضافة. لعل شيئًا ما متعلقًا ب CSS أو JavaScript فيها تسبب في المشكلة فجأةً. (سنفصِّل في ذلك لاحقًا) اتّبع المسار المعتاد لتحديث الإضافات، ثم تفقّد الموقع. إذا كانت المشكلة قد حُلّت، فهذا يعني أن المطوّر انتبه للتعارض أو المشكلة العامة وحلّها. السيناريو الثاني: بعد تحديث إضافةٍ أو تثبيت إضافةٍ جديدةٍ حدثت مشكلة ما إذا كنت قد ثبتّ للتوّ إضافةٍ جديدةٍ لموقعك أو حدَّثت إضافةً موجودة بالفعل، فمن السهل تحديد سبب المشكلة. لا داعي للقيام بعملية استكشاف لمعرفة السبب. كلُّ ما عليك هو تعطيل الإضافة على موقعك. هل يسير كل شيءٍ على ما يرام؟ إذا كان الأمر كذلك، عليك الإبلاغ عن المشكلة لمطوّر الإضافة لكي يتمكن من إصلاحها. في أثناء انتظارك لذلك، ابحث عن بديلٍ عن تلك الإضافة أو ابحث في مدونة الووردبريس المفضلة لديك لتجد اقتراحاتٍ منتقاةٍ لإضافةٍ بديلةٍ. السيناريو الثالث: بعد التحديثات التلقائية أو الدفعية حدثت الكارثة لا تسئ فهم كلامي: أنا لا أقول أن التحديثات التلقائية للنواة أو القوالب أو الإضافات في ووردبريس أمرٌ سيءٌ. في الواقع، أعتقد أنها حركةٌ ذكيةٌ، بما أن الانسيابية والأتمتة أصبحت من أهم سبل النجاح. ومع ذلك، إذا اخترت التحديث التلقائي على ووردبريس، فكن على علمٍ بأن حلَّ مشكلات تعارض الإضافات قد يحتاج إلى المزيد من الجهد. هناك مسارين مختلفين عليك اتباع أحدهما، وفقًا لكيفية ظهور الخطأ على الموقع: حين يصيب القالب أو الإضافة عطلٌ ما، أو تظهر رسالة خطأ موقعك لا يزال يعمل، (الحمد لله)، وتستطيع الدخول إلى ووردبريس. هذا جيدٌ. إليك ما عليك فعله إذا ما أصاب موقعك عطلٌ كهذا: 1- تفقد أحدث نسخة احتياطية لديك. إذا كانت قد خُزّنت قبل التحديث مباشرة، استعدها، ثم اذهب مباشرة إلى الخطوة 5. 2-إذا لم يكن لديك نسخة احتياطية، إذهب إلى ووردبريس وقم بتعطيل كل الإضافات. تحت قائمة "إضافات"، قم بتعطيل الإضافات كلها عن طريق خيار "التعطيل" الجماعي 3- تفقد موقعك لترى ما إذا كانت المشكلة قد حُلَّت. في تلك الحالة، اعلم أن المشكلة في الإضافة. 4- انتقل من القالب الحالي إلى قالب ووردبريس المبدئي. لستَ مضطرًا للبحث عن قالب ووردبريس المبدئي. اذهب إلى قائمة القوالب (Themes)> أضف قالب جديد (Add New)– ستجده على رأس القائمة أحيانًا يحدث عطل في تحديث القالب إذا ما أضاف المطور وظيفة جديدة تتطابق مع وظيفة في إضافة أنت تستخدمها بالفعل. لذلك، من المهم أن تتأكد من ذلك. تفقّد موقعك مرة أخرى للتأكد من انتهاء المشكلة. إذا وجدت المشكلة مستمرة، اعلم أن هناك عطب ما في القالب، وعليك التواصل مع المطور بشأنه وإيجاد بديل عن ذلك القالب حتى تجد حلًّا للمشكلة. 5- إذا حُلَّت المشكلة عن طريق تبديل القالب، عليك اختبار كل إضافة على حدة. 6- ابدأ بإعادة تفعيل الإضافة الأساسية إذا كان لديك واحدة. هذا في حالة ما إذا كان موقعك متخصص في التجارة الإلكترونية أو الفندقة أو العضويات …إلخ. تأكد من أن موقعك يعمل بلا مشاكل بعد تفعيل تلك الإضافة. 7- فعّل الإضافة التي تظن أنها تُسبّ المشكلة. إذا ظهرت رسالة خطا، فهذا يؤكد أنها بالفعل سبب المشكلة. إذا لم يحدث ذلك، جرب إضافة أخرى. 8- عليك فعل ذلك مع كلِّ إضافةٍ حتى تحدّد أيّها يسبب التعارض. عليك تعطيل كلّ إضافةٍ بعد اختبارها، قبل تفعيل الإضافة التالية. سيقلّل هذا من عدد المتغيرات التي عليك أخذها في الاعتبار في أثناء البحث عن سبب التعارض. 9- حين تعثر على سبب التعارض، عطّله، وبلغ عن المشكلة للمطور في المستودعات أو لفريق الدعم إذا كانت إضافة مدفوعة. أسفل مشكلات الدعم المدونة مسبقًا، لديك فرصة للإبلاغ عن تعارض الإضافات للمطوّر 10- يرجع القرار إليك، ما إذا كنت ستختار العودة للنسخة السابقة من الإضافة، (وأنا لا أنصح بذلك حيث أنك ستواجه نفس المشكلة حتمًا مرة أخرى) أو استبدالها بإضافة أخرى، أو الاستغناء عن تلك الخاصية تمامًا. حين ترى شاشة الموت البيضاء شاشة الموت البيضاء مخيفة لكل مستخدمي ووردبريس. رغم ذلك، إذا كان سببها تحديث دُفَعِي (batch update) قمت به مؤخرًا، سيكون الحل سهلًا: إذا رأيت شاشة الموت البيضاء، لن تكون قادرًا على الوصول إلى ووردبريس، مما يعني أنك لن تستطيع الدخول إلى الإضافات. في تلك الحالة، اذهب لوحة التحكم واستخدم بروتوكول نقل الملفات SFTP للوصول إلى ملفات موقعك. عطل كل الإضافات. يمكنك فعل ذلك عن طريق تغيير اسم مجلد الإضافات إلى اسم آخر. إذا كنت تفضل حذف جميع الملفات (مما سيعطّلها أيضًا)، احتفظ بنسخة احتياطية منهم في مكان آخر أولًا. فور حذفها من المجلد، تستطيع إعادة رفع الإضافات المخزنّة إلى نفس المجلد. لن يعيد ذلك تفعيلها، لكن سيضعها فقط على الخادم الخاص بك. بتعطيل الإضافات، من المفترض أن تكون قادرًا على الدخول إلى ووردبريس مرة أخرى واتباع التعليمات المذكورة أعلاه، كما لو كان لديك صلاحية الوصول منذ البداية. إذا كنت لا تزال ترى شاشة الموت البيضاء بعد إفراغ الذاكرة المؤقتة، فالقالب هو سبب المشكلة. لتعطيل القالب، افعل نفس ما فعلته مع الإضافات: غير اسم مجلد القوالب أو احذف ملف القالب وأعد رفعه إلى المجلد. هكذا، ستستطيع العودة إلى ووردبريس وتبديل القالب. كيف تتجنب تعارضات الإضافات في المستقبل كما رأيت، ليس من الصعب حل مشكلة تعارض الإضافات. فهي لا تطلب سوى القليل من الصبر والوقت لتحديد سبب المشكلة. من السهل إجراء الإصلاح فور الانتهاء من تشخيص سبب العطل. ومع ذلك، فإن الوقت ثمين. رغم سهولة حلّ تلك النوعية من المشكلات، لماذا تعرّض نفسك لها إذا كنت تستطيع تجنُّبها؟ يمكنك الاستفادة من هذا الوقت لإنشاء مواقع أخرى، أو تطوير عمليات أعمالك. إذا أردت تجنب هذا العناء، إليك بعض النصائح التي ستساعدك (وتساعد عملاءك) على تجنب تعارض إضافات ووردبريس في المستقبل: يجب ألا تثبت إضافات ووردبريس دون دراسة وافية. كلما قل عدد الإضافات التي تستخدمها، قل احتمال حدوث المشكلات. اختر إضافاتك بعناية. اقرأ مراجعات الإضافات وتذاكر الدعم وآراء من استخدمها بعناية قبل تثبيت الإضافة الجديدة وتفعيلها. إذا لم يكن لديك الكثير من الوقت، استفد من ترشيحات طرف ثالث موثوق، أو مدوّنة، لكي تختار اختيارًا صحيحًا. حدّث الإضافات أولًا بأول. حدّث الإضافات واحدةً تلو الأخرى، حتى تسهّل على نفسك تحديد سبب المشكلة. (حتى وإن لم تكن تلك الطريقة على الأكثر كفاءة في تحديث الإضافات) إذا كنت تستخدم أداة تحديث أوتوماتيكية، تأكد من أنها تحتفظ بنسخة احتياطية وتستخدم تكنولوجيا ترقية آمنة مثل Automate. تفقّد مجموعة إضافاتك كل عدة أشهر. إذا وجدت أن أيًا منها خسر دعم وتحديثات المطور لأكثر من ستة أشهر، ابحث عن واحدة جديدة. احتفظ بنسخة احتياطية من كل شيء قبل أن تجري أي تحديثات أو تثبّت أي إضافاتٍ جديدةٍ استخدم بيئة اختبار محلية لاستنساخ موقعك الحي هكذا تستطيع اختبار الإضافات الجديدة والتحديثات لاكتشاف أي تعارضات قبل وضعها على موقعك راجع إرشادات معايير الترميز الخاصة بـكوديكس ووردبريس. حتى إذا كنت لا تطور إضافات أو قوالب لمواقعك، لا يزال من المفيد معرفة ما الذي يجعل ممارسات الترميز جيدة إذا كنت تريد فحص الإضافات قبل استخدامها. استثمر بعض الوقت في التعرف على الخطافات. غالبًا ما تحدث تعارضات الإضافات والقوالب عندما لا يعطي المطوّرون الخطافات التي يطورونها اسماءً فريدة. باستخدام الإعداد الافتراضي، ينشأ خطر استخدام خطاف تستخدمه إضافة أخرى أو قالب آخر، الأمر الذي يؤدي بدوره إلى إرباك الخادم وإنشاء خطأ التعارض. ارفع مهاراتك في HTML و PHP و JavaScript. إذا شعرت بالإحباط من عدد الإضافات المتعارضة، يمكنك برمجة هذه الوظيفة في موقعك وتجنب هذه المشكلة في المستقبل. الختام بالطبع هناك طريقة أخرى أكثر ذكاء لتفعيل واستخدام الإضافات في موقع الووردبريس الخاص بك. بدلاً من اخذ إضافة تحسين محركات البحث من هذا المطور، أو إضافة تحسين السرعة من ذاك المطور، أو إضافة تحليلات من مطور آخر، لما لا تأخذها كلها من مصدر واحد موثوق؟ مترجم وبتصرف عن مقال WordPress Plugin Conflicts: How to Check for Them and What to Do بقلم Suzanne Scacca
  10. يصف هذا الدرس كيفية استخدام إضافات أندرويد فيKotlin لتحسين دعم تطوير أندرويد. في هذا الدرس سوف نستعرض الخطوات اللازمة لاستخدام ملحقات أندرويد الإضافية في لغة البرمجة Kotlin، لتعزيز تجربة التطوير في أندرويد. ربط العرض View Binding الخلفية كل مطوري أندرويد يعرفون جيدًا الدالة ()findViewById. والتي هي من دون أدنى شك، مصدر لكثير من المتاعب والأخطاء المحتملة والشيفرات السيئة والتي يصعب قراءتها وصيانتها. صحيح أن هناك العديد من المكتبات المتاحة لتوفير حلول لهذه المشكلة، إلّا أن هذه المكتبات تتطلب حقول تأشير annotating fields لكل عنصر معروض من نوع View. توفر لنا ملحقات أندرويد الإضافية لـ Kotlin تجربة مماثلة لما توفره بعض تلك المكتبات، دون أن نكون في حاجة إلى كتابة شيفرات إضافية. في الأساس، هذا يسمح لنا بكتابة الشيفرة التالية: // Using R.layout.activity_main from the 'main' source set import kotlinx.android.synthetic.main.activity_main.* class MyActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Instead of findViewById<TextView>(R.id.textView) textView.setText("Hello, world!") } } textView هي خاصية إضافية لـ Activity، ولها نفس النوع المعلن في activity_main.xml (أي TextView). استخدام إضافات أندرويد لـKotlin إعداد الارتباطات Configuring the Dependency سنستخدم في هذا الدرس Gradle، لكن يمكنك تحقيق نفس النتائج باستخدام IntelliJ IDEA project structure أو Maven. إضافات أندرويد هي جزء من ملحقة Kotlin الخاصة بكل من IntelliJ IDEA وAndroid Studio. لذلك لا تحتاج إلى تثبيت ملحقات إضافية. كل ما تحتاجه هو إتاحة ملحقة Gradle لأندرويد في ملف الوحدة build.gradle: apply plugin: 'kotlin-android-extensions' استيراد الخصائص التركيبية synthetic properties من الملائم استيراد جميع خصائص الودجةwidget) ) لخطاطة (layout) معينة دفعة واحدة: import kotlinx.android.synthetic.main.<layout>.* وهكذا إذا كان اسم ملف الخطاطة هو activity_main.xml، فسنقوم باستيراد kotlinx.android.synthetic.main.activity_main.* إن كنّا نريد أن نستدعي الخصائص التركيبية على View، فيجب علينا أيضًا استيراد kotlinx.android.synthetic.main.activity_main.view.* وبمجرد أن نفعل ذلك، يمكننا حينها استدعاء الإضافات المقابلة والتي هي اسماء خصائص سُمّيت على إثر عناصر العرضviews الموجودة في ملف XML. فعلى سبيل المثال، بالنسبة لهذا العرض: <TextView android:id="@+id/hello" android:layout_width="fill_parent" android:layout_height="wrap_content"/> ستكون هناك خاصية اسمها hello: activity.hello.text = "Hello World!" الوضع التجريبي Experimental Mode تشمل الملحقات الإضافية لأندرويد العديد من الميزات التجريبية مثل دعم LayoutContainer ومولّدات تقديم الصنف Parcelable (Parcelable implementation generator). هذه الميزات لا تُعتبر جاهزة بعدُ للإنتاج، لذلك نحتاج إلى التحوّل للوضع التجريبي في build.gradle من أجل استخدامها: androidExtensions { experimental = true } دعم LayoutContainer تدعم الملحقات الإضافية لأندرويد أنواع مختلفة من الحاويات containers. وأبسط تلك الحاويات Activity، Fragment وView. ولكن يمكنك أن تحوّل (افتراضيًا) أي صنف إلى حاوية لإضافات أندرويد من خلال تطبيق الواجهةLayoutContainer ، على سبيل المثال: import kotlinx.android.extensions.LayoutContainer class ViewHolder(override val containerView: View) : ViewHolder(containerView), LayoutContainer { fun setup(title: String) { itemTitle.text = "Hello World!" } } لاحظ أنك تحتاج إلى التحوّل إلى الوضع التجريبي لاستخدام LayoutContainer. دعم النكهات Flavor Support تدعم ملحقات أندرويد الإضافية نكهات أندرويد ((Android flavors. لنفترض أن لديك نكهة اسمها free في ملف build.gradle خاصّتك: android { productFlavors { free { versionName "1.0-free" } } } يمكنك استيراد كافة الخصائص التركيبية للخطاطة free/res/layout/activity_free.xml بإضافة هذا الاستيراد: import kotlinx.android.synthetic.free.activity_free.* في الوضع التجريبي، يمكنك تحديد أي اسم آخر (وليس فقط flavor)، على سبيل المثال freeDebug أو freeRelease يصلحان كذلك. التخزين المؤقت لعناصرView استدعاء ()findViewById يمكن أن يكون بطيئًا، خصوصًا في حالة تشعبات العرض (view hierarchies) الكبيرة، لذلك تحاول إضافات أندرويد التقليل من عدد مرّات استدعاء ()findViewById بواسطة التخزين المؤقت للعروض في الحاويات. افتراضيًا، اضافات أندرويد تضيف دالة تخزين مؤقت مخفية وحقل تخزين إلى كل حاوية (Activity، Fragment، View أو LayoutContainer implementation) مكتوبة بـ Kotlin. التابع method)) صغير جدًا لذلك لا يزيد حجم APK كثيرًا. في المثال التالي، يتم استدعاء ()findViewById مرة واحدة فقط: class MyActivity : Activity() fun MyActivity.a() { textView.text = "Hidden view" textView.visibility = View.INVISIBLE } لكن في الحالة التالية: fun Activity.b() { textView.text = "Hidden view" textView.visibility = View.INVISIBLE } لا يمكننا أن نعرف ما إذا كان سيتم استدعاء هذه الدالة في أنشطة مصادرنا فقط أم أيضا في كل أنشطة جافا. لهذا السبب، لن نستخدم التخزين المؤقت هنا، حتى لو تم تمرير أحد عيّنات instance الصنف MyActivity من المثال السابق كمستقبِل. تغيير استراتيجية التخزين المؤقت للصنف View يمكنك تغيير استراتيجية التخزين المؤقت بشكل شامل أو بالنسبة لكل حاوية على حدة. وهذا أيضًا يتطلب التحول إلى الوضع التجريبي. يتم تحديد استراتيجية التخزين المؤقت الشاملة للمشروع في ملف build.gradle: androidExtensions { defaultCacheImplementation = "HASH_MAP" // also SPARSE_ARRAY, NONE } افتراضيًا، الملحقات الإضافية لأندرويد تستخدم HashMap كمرجع احتياطي للتخزين، ولكن يمكنك التبديل لتطبيق SparseArray، أو إيقاف التخزين المؤقت وحسب. هذا الأخير مفيد بشكل خاص إن أردت الاكتفاء باستخدام الجزء المقسّم Parcelable من إضافات Android. يمكنك أيضًا التأشير على حاوية ما بـ ContainerOptions@ لتغيير استراتيجية التخزين المؤقت: import kotlinx.android.extensions.ContainerOptions @ContainerOptions(cache = CacheImplementation.NO_CACHE) class MyActivity : Activity() fun MyActivity.a() { // findViewById() will be called twice textView.text = "Hidden view" textView.visibility = View.INVISIBLE } Parcelable بدءًا من الإصدار Kotlin 1.1.4، وفّرت الملحقات الإضافية لأندرويد مولّدات تطبيق للصنف Parcelable كميزة تجريبية. إتاحة دعم Parcelable قم بتطبيق ملحقة Gradle المسمّاة kotlin-android-extensions كما هو موضح [أعلاه] (#إعداد الارتباطات) وقم بتشغيل الوضع التجريبي. كيفية الاستخدام قم بالتأشير على الصنف بـ Parcelize@، وسيتم إنشاء تطبيق Parcelable تلقائيًا. import kotlinx.android.parcel.Parcelize @Parcelize class User(val firstName: String, val lastName: String, val age: Int): Parcelable يتطلّب Parcelize@ التصريح بجميع الخصائص المتسلسلة في المنشئ constructor الأولي. ستقوم إضافات أندرويد بإطلاق تحذير على كل الخصائص ذات الحقول المصرّح بها في جسم الصّنف، كما أنّه لا يمكن تطبيق Parcelize@ إذا لم تكن كل معاملات المنشئ الأوّلية خصائصًا. إن كان صنفك يتطلب تسلسلاً منطقيًا أكثر تقدمًا، فيمكنك كتابته داخل صنف مرافق: @Parcelize data class Value(val firstName: String, val lastName: String, val age: Int) : Parcelable { private companion object : Parceler<User> { override fun User.write(parcel: Parcel, flags: Int) { // Custom write implementation } override fun create(parcel: Parcel): User { // Custom read implementation } } } الأنواع المدعومة يدعم Parcelize@ طيفًا واسعًا من الأنواع: الأنواع الأولية Primitive types (ونسخها المغلّفة boxed versions). Objects وenums . String، CharSequence. Exception. Size، SizeF، Bundle، IBinder، IInterface، FileDescriptor SparseArray، SparseIntArray، SparseLongArray، SparseBooleanArray. كل الأنواع المتسلسلة Serializable (حتى Date مدعوم) وتطبيقات Parcelable. تجميعات كل الأنواع المدعومة: List (مُحالة على ArrayList)، و Set (مُحالة على LinkedHashSet)، و Map (مُحالة على LinkedHashMap). بالإضافة إلى عدد من التطبيقات الملموسة: ArrayList، LinkedList، SortedSet، NavigableSet، HashSet، LinkedHashSet، TreeSet، SortedMap، NavigableMap، HashMap، LinkedHashMap، TreeMap، ConcurrentHashMap. الجداول التي تحتوي الأنواع المدعومة. النسخ الفارغة Nullable versions من كل الأنواع المدعومة. تخصيص الـ Parcelers حتى إن لم يكن النوع مدعوما مباشرة، يمكنك كتابة كائن Parceler لأجل دعمه. class ExternalClass(val value: Int) object ExternalClassParceler : Parceler<ExternalClass> { override fun create(parcel: Parcel) = ExternalClass(parcel.readInt()) override fun ExternalClass.write(parcel: Parcel, flags: Int) { parcel.writeInt(value) } } أمّا عناصر Parcelers الخارجية يمكن تطبيقها باستخدام التأشيرات TypeParceler@ أو WriteWith@: // Class-local parceler @Parcelable @TypeParceler<ExternalClass, ExternalClassParceler>() class MyClass(val external: ExternalClass) // Property-local parceler @Parcelable class MyClass(@TypeParceler<ExternalClass, ExternalClassParceler>() val external: ExternalClass) // Type-local parceler @Parcelable class MyClass(val external: @WriteWith<ExternalClassParceler>() ExternalClass) ترجمة -وبتصرّف- للمقال Kotlin Android Extensions لصاحبه Yan Zhulanow
  11. هل تريد تطوير مهاراتك في تطوير ووردبريس إلى مرحلة متقدمة؟ هل أنت مستعد لرفع مستواك في لغة PHP لأعلى مستوى وإضافة المزيد من القوة إلى إضافات وقوالب ووردبريس التي تقوم بتطويرها. قبل أن نبدأ يُفترض قبل البدء أنك تعرف برمجة ووردبريس وتعلم كيف تعمل قوالب وإضافات ووردبريس بشكل بسيط إذا لم تكن تعلم فيمكنك البحث في الموقع وستجد مقالات للمبتدئين. ماذا سنغطي في هذه المقالة في هذه المقالة، سوف نبدئ مباشرة في البرمجة غرضية التوجه (object-oriented programming) وكيف يتم استخدامها في تطوير ووردبريس. البرمجة غرضية التوجه لا تحتاجها بشدة كمطور ووردبريس لكن بعد استخدامي لها لاحظت أن جودة تعليماتي البرمجية قد تحسنت بشكل سريع وقوي عندما بدأت في وضع مفاهيم البرمجة غرضية التوجه في عين الاعتبار، واستطعت أن أتعلم لغات برمجة آخرى لأن مفهوم الأصناف(classes) والكائنات(objects) متشابهة في كل لغات البرمجة. لنلقي نظرة على مبادئ البرمجة غرضية التوجه لنرى ما هي ولنستعملها في برمجة قوالب وإضافات قوية. ما هي البرمجة غرضية التوجه؟ البرمجة غرضية التوجه هي منطق تفكيري أكثر من أن تكون طريقة لكتابة التعليمات البرمجية، لأنها تعني التفكير في البرمجة بشكل منظم أكثر، وتغليف التعليمات البرمجية وجعلها كوحدات منفصلة من أجل استخدامها بشكل أفضل لاحقًا. لا تقلق إذا لم تستوعب ما شرحناه، لأننا سنلقي نظرة على كثير من الأمثلة خلال هذه المقالة لتساعدك في ترسيخ هذه المفاهيم. لماذا نستخدم البرمجة غرضية التوجه؟ البرمجة غرضية التوجه تُغلف المجموعات المتماثلة منطقيًا من التعليمات البرمجية موفرةً بذلك تعليمات برمجية أكثر قابلية للقراءة وأكثر تنظيمًا وهي توفر الفوائد التالية: • تعليمات برمجية أسهل تتبعًا. • تطوير هذه التعليمات البرمجية يصبح فيما بعد أسهل بكثير. • أسماء الدوال لا داعلي لأن تكون طويلة بعد الآن، والدوال داخل الأصناف لا تتضارب مع الدوال خارج هذه الأصناف. • درجة أعلى من قابلية إعادة استخدام التعليمات البرمجية. تعلم عن طريق مثال لنبدأ مع مثال على تعليمات برمجية عادية وتحويلها إلى تعليمات برمجية غرضية التوجه، لنفترض أننا نبني موقع تويتر Twitter، ونريد أن نقوم بحذف الأحرف من نص معين، وتحويل النصوص إلى روابط، لذا سأقوم بكتابة بعض الدوال لاستعمالها في المشروع: // Cut text down to required length function get_chirp_text( $text ) { return substr( $text, 0, 200 ); } // Parse hashtags from text function get_hashtags( $text ) { preg_match_all("/S*#((?:\[[^\]]+\]|\S+))/", $text, $matches); return $matches; } // Create the final chirp text function create_chirp( $text ) { $chirp_text = get_chirp_text( $text ); $hastags = get_hashtags( $chirp_text ); if( !empty( $hastags[1] ) ) { foreach( $hastags[1] as $key => $match ) { $hastags[1][$key] = "<a href='http://chirp.chip/hastags/" . $match . "/'>" . '#' . $match . "</a>"; } $chirp_text = str_replace( $hastags[0], $hastags[1], $chirp_text ); } return $chirp_text; } $text = 'This is a chirp with an #example hashtag created with code that is #procedural'; echo create_chirp( $text ); دالة ()get_chirp_text تقوم باستلام نص كوسيط و تقتطعه، أما دالة ()get_hashtags تقوم باستلام نص و إرجاع الجزء من النص الذي يبدأ ب “#”. دالة ()create_chirp تستعمل القيم المعادة من الدالتين السابقتين لتحويلها إلى روابط. صحيح أن هذه التعليمات البرمجية تعمل بشكل صحيح، لكن ماذا لو أردنا تغيير عدد الأحرف التي نريد اقتطاعها إلى 200 أو 300 حرف، أو نريد تغيير الروابط. هذه المشاكل لن يتم ملاحظتها ولكن من الممكن أن تعقد التعليمات البرمجية إذا كانت هذه التعليمات كثيرة. لنقم بتغليف هذه التعليمات البرمجية وتحويلها إلى تعليمات برمجية غرضية التوجه سأبدأ مع التعليمات البرمجية كاملة وسأقوم بشرحها بالتتالي: class Chirp { var $text; var $length; var $hashtag_base; var $hashtags; var $chirp; function __construct( $text ) { $this->hashtag_base = 'http://chirp.chip/hastags/'; $this->text = $text; $this->set_length(); $this->set_hashtags(); $this->set_chirp(); } function set_length() { $this->length = 200; } function set_hashtags() { preg_match_all("/S*#((?:\[[^\]]+\]|\S+))/", $this->text, $matches); $hashtags = array(); foreach( $matches[1] as $key => $match ) { $hashtags['#' . $match] = "<a href='http://chirp.chip/hastags/" . $match . "/'>" . '#' . $match . "</a>"; } $this->hashtags = $hashtags; } function set_chirp() { $chirp = substr( $this->text, 0, $this->length ); $chirp = str_replace( array_keys( $this->hashtags ) , array_values( $this->hashtags ), $chirp); $this->chirp = $chirp; } } $chirp = new Chirp( 'This is a chirp with an #example hashtag created with code that is #procedural' ); echo $chirp->chirp; من البداية قمت بتعريف صنف اسمه chirp. يحوي بداخله عددًا من المتغيرات والدوال. المتغيرات تمثل خصائص مهمة للكائنات التي سيتم بناءها من هذا الصنف. متغير text$ يحمل النص الأصلي الذي نريد معالجته متغير length$ يحمل عدد الأحرف المسموحة بها في التغريدة متغير hashtag_base$ يحمل القيمة الأساسية لروابط الهاشتاغ متغير hashtags$ يحمل خريطة الهاشتاغ متغير chirp$ يحمل ال html النهائية للتغريدة لنتخطى دالة __construct() للوقت الحالي و نركز على دالة ()set_length . كل ما تفعله هذه الدالة هي تعيين قيمة 200 ل this->$length. من المؤكد أنك تتساءل عن المتغير ?this$ يستخدم للإشارة إلى المتغيرات والدوال داخل الصنف، كما قمنا بتعيين قيمة length$ عن طريق this->$length سنكون قادرين على مناداة هذا المتغير في أي مكان في الصنف باستخدام this->$length والنتيجة أننا لا نحتاج لتمرير هذا المتغير كوسيط عند استعماله في كل دالة. الدالة التالية هي ()set_hashtage، تقوم بهذه الدالة بجلب النص للقيام بمعالجته من this->$text و الذي سوف يوضع في دالة __construct() و التي سنقوم بشرحها لاحقًا، لقد قمت بتغيير المصفوفة التي تنتجها هذه الدالة لتحتوي على الهاشتاغ كمفتاح و الرابط الكامل كقيمة هذا المفتاح و هذه سيجعل استبدال النص أسهل. و أخيرًا الدالة ()set_chirp تستخدم this->$text و this->$length لقطع النص و this->$hashtags لتبديل النصوص مع الروابط. أخيرًا تقوم بتعيين نتيجة html إلى this->$chirp. و في النهاية قمت باستخدام هذا الصنف لإنشاء الكائنات مخزن في chirp$ قمت بتمرير وسيط واحد لهذا الصنف عندما تم إنشاء الكائن من الدالة __construct() عندما تم تفعيل هذا الصنف. هذه الدالة يتم تفعيلها فورًا عند إنشاء الكائن يمكنك رؤية كيف يتم تمرير الوسائط وتقوم ايضًا بالتالي: تضع قيمة المتغير $this->hashtag_base مباشرةً تضع قيمة للمتغير this->$text مباشرةً تستخدم الدالة ()set_length لضبط الطول، لاحظ بما أن الدالة داخل الصنف فيتم الإشارة إليها ب this$ تقوم بإنشاء تعليمات html النهائية باستخدام الدالة ()set_chirp. بعد إنشاء الكائن يمكننا إظهار أي قيمة من الكائن ونعلم أن تعليمات html النهائية مخزنة في الخاصية chirp$، ويمكننا الدخول إليها باستخدام الصيغة chirp->$chirp. عناصر الأصناف والكائنات في هذا القسم، سوف نشرح عناصر الأصناف والكائنات. الاختلاف بين الأصناف والكائنات، بأن الأصناف هي المخططات التي تصنع منها الكائنات. الأصناف تعرف باستخدام الكلمة class متبوعة باسم الصنف الذي نريده و كل التعليمات البرمجية الخاصة به موضوعة بين { }. <p>These are just 8 of our awesome posts. Click here for <?php echo $posts->found_posts - 8 ?> more!</p> الأصناف يمكن أن تحوي شيئين هما المتغيرات والدوال، لكن داخل الأصناف يشار لهم بالخصائص(properties) والطرق(methods) وهذا هو الصنف فقط عبارة عن مجموعة من الخصائص والطرق. لاستخدام الخصائص والطرق داخل الصنف نحتاج إلى الإشارة لها ب this$. الأصناف يمكن أن تحوي عددًا من الدوال الخاصة. واحدة من هذه الدوال __construct() والتي يبدأ تنفيذها مباشرةً عندما ننشأ كائن من صنف. أي عدد من الكائنات يمكن إنشاءه من صنف واحد. $chirp_one = new Chirp( 'This is a chirp with an #example hashtag created with code that is #procedural' ); echo $chirp_one->chirp; $chirp_two = new Chirp( 'This is a chirp with an #example hashtag created with code that is #procedural' ); echo $chirp_two->chirp; استخدام الكائنات بشكل صحيح ليس هناك طريقة واحدة صحيحة لاستعمال الكائنات، لأن ذلك يعتمد بشكل كبير على ماهية ما تبنيه. لنراجع بعض النقاط المهمة في المثال السابق تحديد الطول لدينا دالة منفصلة لتعيين الطول، لكن كل ما تفعله هو تعيين الطول ل 200 و كان يمكننا أن نضع القيمة يدويًا في دالة ()substr الموجودة في ()set_chirp. السبب هو التفكير للأمام، لأنه لا يجب أن نكون هذه مهمة ()set_chirp لمعرفة الطول. لأنه من الممكن أن نقرر أن يكون عدد الحروف 160، وتوفير أطوال مختلفة بناء على حالة المستخدم على سبيل المثال. إذا أسندنا مهمة تعيين الطول لدالة منفصلة يمكننا تغيير المنطق الخاص بالطول من دون التأثير على أجزاء آخرى في التعليمات البرمجية. دوال الضبط Setter Methods الطرق أو الدوال التي تقوم بتعيين قيمة لخاصية يتم الإشارة إليها بدوال الضبط أو التعيين. يمكنك ملاحظة أنني قمت بتعيين بعض الخصائص من الدالة البانية __construct() و بعضها من الدوال الآخرة. طريقة تفكيري هنا كانت أن الخصائص التي لا أحتاج إلى إجراء العمليات عليها يمكنني تعيين قيمها في الدالة البانية أما التي أريد معالجة قيمها أسندتها لدوال خاصة. العمل مع الكائنات القدرة على الإشارة إلى الخصائص والطرق داخل الأصناف توفر لنا كثيرًا من الاستراتيجيات في التعامل مع الأصناف. إذا أزلنا معظم التعليمات من الدالة البانية في مثالنا السابق يمكننا القيام بالعمليات المطلوبة من خارج الأصناف. لنلقي نظرة: class Chirp { var $text; var $length; var $hashtags; var $chirp; function __construct( $text ) { $this->hashtag_base = 'http://chirp.chip/hastags/'; $this->text = $text; $this->set_length(); } function set_length() { $this->length = 200; } function set_hashtags() { preg_match_all("/S*#((?:\[[^\]]+\]|\S+))/", $this->text, $matches); $hashtags = array(); foreach( $matches[1] as $key => $match ) { $hashtags['#' . $match] = "<a href='http://chirp.chip/hastags/" . $match . "/'>" . '#' . $match . "</a>"; } $this->hashtags = $hashtags; } function get_chirp() { $chirp = substr( $this->text, 0, $this->length ); if( !empty( $this->hashtags ) ) { $chirp = str_replace( array_keys( $this->hashtags ) , array_values( $this->hashtags ), $chirp); } return $chirp; } } الفرق هنا أن الدالة البانية لا تقوم بتشغيل دالة ()set_hashtags و بالتالي يمكننا بناء التغريدة بطريقتين: $chirp = new Chirp( 'This is a chirp with an #example hashtag created with code that is #procedural' ); // Hashtags will not be links here echo $chirp->get_chirp(); $chirp->set_hashtags(); // Hashtags are now links because they have been set echo $chirp->get_chirp(); مثال ووردبريس يمكننا أخذ مثال رائع من ووردبريس يستخدم البرمجة غرضية التوجه وهو WP_Query. إذا كنت قد استخدمته من قبل من دون علم بالبرمجة غرضية التوجه فسيصبح أوضح بالنسبة لك الآن. لنفترض أنك تقوم بإنشاء صفحة خاصة في ووردبريس ستحتوي على أحدث 8 مقالات و3 من تقييمات الكتب القادمة. يمكنك صناعة كائنين باستخدام هذا الصنف: $posts = new WP_Query(array( 'post_type' => 'post', 'posts_per_page' => 8, 'post_status' => 'publish' )); $books = new WP_Query(array( 'post_type' => 'book', 'posts_per_page' => 3, 'post_status' => 'future' )) إذا اطلعت على التوثيق الخاص بهذا الصنف يمكنك روية أنه يملك العديد من الخصائص ومن بينها $found_posts. ولقد أصبحنا نعرف كيف نشير إلى هذه الخصائص: <p>These are just 8 of our awesome posts. Click here for <?php echo $posts->found_posts - 8 ?> more!</p> أصعب جزء في الأصناف والكائنات هو ليس استخدامها بل كيف تستخدمها بشكل صحيح، وأنا أشجعك أن تبدأ باستخدام البرمجة غرضية التوجه في مشاريعك، ربما في البداية سترى أنها غير مفيدة. لكن عندما بدأت في تطبيقها في مشاريعي وجدت الفائدة الكبيرة للبرمجة غرضية التوجه ومعظم إطارات العمل الحديثة ك Laravel تستخدم البرمجة غرضية التوجه. احتراف تطوير ووردبريس نحن فقط بدأنا في تعلم ما يمكننا فعله، ويوجد الكثير مما يمكن تعلمه عن الأصناف وأنصحك في التدريب والتجريب وارتكاب الأخطاء وعدم الاستسلام. ترجمة -وبتصرّف- للمقال Advanced WordPress Development: Introduction to Object-Oriented Programming لصاحبه Daniel Pataki
  12. قد يبدو مفهوم البرمجة غرضية التوجه (object-oriented programming)، صعبًا ومعقدًا في البداية لكنه مفهوم مهم يجب تعلمه، إذا أردت زيادة مهاراتك وقدراتك في تطوير إضافات ووردبريس.سوف نشرح طريقتين مفيدتين تمكنك من جعل إضافاتك غرضية التوجه، الأمر الذي سيقلل من فرص تعقيد التعليمات البرمجية وتضاربها مع بعضها البعض، وتمكنك من كتابة تعليمات برمجية مرتبة وقوية وتشكل وحدات منفصلة. ملاحظة: هذه المقالة حول البرمجة غرضية التوجه، لم يتم التطرق فيها إلى طرق الكتابة المتقدمة للتعليمات البرمجية أو تم تبسيط بعضها لتصبح مفهومة بشكل أكبر للمبتدئين، الغرض من هذه المقالة تعليمك المبادئ الأساسية للبرمجة غرضية التوجه، وليس جعلك محترفًا في ليلة وضحاها، لكن إذا واصلت شغفك على التعلم والتجربة فستصبح محترفًا في وقت قصير. ما هي البرمجة غرضية التوجه؟ البرمجة غرضية التوجه بأبسط مفهوم هي طبقة أخرى من التجريد(abstraction)، إذا كتبت تعليمات php عند عملك في ووردبريس من قبل ففي الغالب أنك مررت بمرحلة التجريد، بدلًا من كتابة أسطر من التعليمات البرمجية سطرًا تلو سطر، البرمجة الغرضية تستخدم بواني (constructs) كالدوال (functions). الدوال يمكن ان تجعل التعليمات البرمجية أكثر مركزية ووحدة. لنأخذ هذا المثال: <div class='post' id='post-23'> <h2><?php the_title() ?></h2> <div class='excerpt'> <?php $content = get_the_content(); if( strlen($content) < 250 ) { echo $content; } else { $content = substr( $content, 0, 250 ); echo $content . '...'; } ?> </div> </div> قمت يدويًا بإنشاء مقتطف عند جلب البيانات مباشرة، لكن تخيل أن أفعل ذلك في كل مرة أعرض منشور ووردبريس، ليست هذه بداية المشكلة حتى، لكن ماذا لو أردت بعد فترة تغيير طول محارف المقتطف. الآن هي معدة لتقتطع 250 محرفًا و إذا أردت تغيير هذا العدد عليك أن تمر على جميع الأماكن التي كتبت هذه التعليمات فيها و تغييرها واحدًا تلو الآخر، لهذا استخدام الدوال مفيد جدًا، ووردبريس أوجدت حلًا لهذه المشكلة عن طريق استخدام دالة ()the_excerpt. <div class='post' id='post-23'> <h2><?php the_title() ?></h2> <div class='excerpt'> <?php the_excerpt() ?> </div> </div> البرمجة غرضية التوجه هي طبقة أخرى من التجريد(abstraction)، مشابهة كثيرًا للدوال. في هذه المقالة، سنقوم بإنشاء صنف(class)، الذي يمكن تشبيهه بوعاء حاوي للدوال. كتابة صنفك الأول لنقم بإنشاء صنف باسم “Post”. سيكون الهدف منه هو التلاعب بمنشورات ووردبريس: class Post { function get_excerpt( $content ) { if( strlen($content) < 250 ) { return $content; } else { $excerpt = substr( $content, 0, 250 ); return $excerpt . '...'; } } function the_excerpt( $content ) { echo get_excerpt( $content ); } function the_title( $title ) { echo $title; } } صنفنا الآن يحتوي على 3 دوال بسيطة، واحدة لجلب المقتطف والثانية من أجل عرض المقتطف، الثالثة لعرض عنوان المقال. في الوقت الحالي الصنف يحتوي الآن فقط دوال، لكن هذا ليس كل شيء يمكن للصنف أن يفعله. لنرى القوة الحقيقية للأصناف سنلقي نظرة على دالة خاصة في الأصناف تدعي الباني __construct() ، ومتغير خاص يدعى this$، والمتغيرات داخل الأصناف. عندما ننشأ صنف، يكون الهدف منه معظم الأحيان هو إنشاء كائنات متعددة، يمكنك إنشاء عدة منشورات، لنرى كيف سنقوم بها من خلال هذا المثال: class Post { var $title; var $content; function __construct( $data ) { $this->title = $data['title']; $this->title = $data['content']; } function get_excerpt() { if( strlen($this->content) < 250 ) { return $this->content; } else { $excerpt = substr( $content, 0, 250 ); return $excerpt . '...'; } } function the_excerpt() { echo $this->get_excerpt(); } function the_title() { echo $this->title; } } $postdata = array( 'title' => 'Post 1 Title', 'content' => 'Content of Post 1' ); $post = new Post( $postdata ); $post->the_excerpt(); هناك الكثير من الأشياء غير المفهومة بالنسبة لك في هذا المثال، لكن سيتم شرح كل شيء خلال لحظات، عندما تريد إنشاء كائن من صنف تستعمل هذه التعليمات كما في المثال $post = new Post ($postdata)، عندما تقوم بإنشاء الكائن ستنفذ الدالة البانية بشكل مباشر. الوسيط postdata$ الذي تم تمريره للكائن عند إنشائها سيصبح متاحًا لدالة الباني التي تم تعريفها في الصنف. لتعطي قيم للمتغيرين اللذين تم تعريفهما داخل الصنف. تم إسناد قيمة للمتغير title$ عن طريق this->$title وللمتغير content$ عن طريق this->$content . المتغير this$ هو متغير خاص يشير إلى الصنف نفسه، في أي وقت تريد الإشارة فيه إلى متغير تم تعريفه داخل الصنف بـ this->$property_name أو إلى دالة ()this->$function_name تم تعريفها داخل الصنف. ملاحظة: الدوال داخل الصنف تدعى طرائق(methods)، والمتغيرات تدعى خصائص(properties) وسيتم من الآن الإشارة إليهم بهذه الأسماء بهذا المقال. إن أفضل طريقة لفهم كيفية عمل الأصناف هو تتبع التعليمات البرمجية، بعد أن قمنا بإنشاء الكائن قمنا بتشغيل الدالة ()post->the_excerpt$ لكن الآن نستعمل متغير post$ للإشارة إلى الدالة بدلًا من this$ لأننا نستعمل هذه الدالة خارج الصنف. الآن لنعرف بماذا تقوم هذه الدالة يمكننا التوجه إلى تعريف الصنف لأننا نعلم أن التعريف الأصلي والتعليمات البرمجية لهذه الدالة هي في الصنف الذي تم تعريفها فيه. كما نرى أن دالة get_excerpt لا تحتاج لتمرير أي محتوى لأنها تأخذ المحتوى من المتغير content$ مراجعة ما تعلمناه لنراجع ما تعلمناه عن الأصناف قبل أن نرى كيف نستعملها في برمجة إضافات ووردبريس. الصنف هو وعاء حاوي للدوال يمكن تعريف الصنف بكتابة كلمة class وبعدها اسم الصنف، الدوال داخل الصنف تدعى طرائق، والمتغيرات تدعى خصائص. إذا كنا نكتب التعليمات البرمجية داخل الصنف فيمكن الإشارة إلى الخصائص والدوال بالمتغير this$. يمكن إنشاء كائن من صنف باستخدام الصيغة $object = new class( $params ) . الدالة البانية يتم تنفيذها مباشرة عند إنشاء الكائن. استخدام الكائنات في إضافات ووردبريس بما أن الأصناف تقوم بتغليف التعليمات البرمجية ضمن وعاء أو وحدة واحدة فهي تمنع التضارب مع التعليمات البرمجية المتواجدة خارج هذا الصنف يمكنني تعريف الدالة get_excerpt في إضافة ووردبريس التي أعمل عليها على الرغم أن هذه الدالة متواجدة بنفس الاسم في التعليمات البرمجية الأساسية لووردبريس. البرمجية غرضية التوجه تعتبر ميزة رائعة لأنها تجبرك استخدام معايير برمجية جيدة بالإضافة أنها تجعلك مبرمجًا أفضل. عندما تكون البرمجة غرضية التوجه مكتوبة بشكل جيد، فإنها دائمًا تكون الحل الأمثل لتتمكن من معرفة مزاياها بشكل جيد نحن نحتاج إلى أكثر من عدة أسطر برمجية، برمجة إضافة ووردبريس ستكون مثالًا رائعًا. هذا مثال هو عبارة عن إضافة تضيف نصًا إلى نهاية كل مقال يتم نشره بشكل تلقائي: <?php /* Plugin Name: Written By Awesome Description: Adds a nice author tagline Version: 1.0.0 Author: Daniel Pataki Author URI: http://danielpataki.com */ class Written_By_Awesome { function __construct() { add_filter( 'the_content', array( $this, 'add_author_line_to_content' ) ); } function add_author_line_to_content( $content ) { return $content . '<br> Written by someone awesome'; } } $written_by_awesome = new Written_By_Awesome(); عندما تفهم كيف تعمل الأصناف يمكنك تخطي الكثير من العوائق والتفكير بتعليماتك البرمجية كوحدات منفصلة، على سبيل المثال يمكنك إنشاء أصناف لتتولى التعليمات البرمجية الخاصة بالتفاعل مع المستخدم وإظهار النتائج، وأصناف آخرى للتعامل مع الخادم (server). لنلقي نظرة على هذه الإضافة، التي ترتب المنشورات بناء عدد التعليقات: <?php class PostsByCommentBackend { function construct() { add_action( 'pre_get_posts', array( $this, 'backend_query' ) ); } function backend_query( $query ) { if ( ! $query->is_admin() ) { $query->set( 'orderby', 'comment_count' ); $query->set( 'order', 'DESC' ); } } } class PostsByCommentFrontend { function construct() { add_action( 'pre_get_posts', array( $this, 'frontend_query' ) ); } function frontend_query( $query ) { if ( $query->is_admin() ) { $query->set( 'orderby', 'comment_count' ); $query->set( 'order', 'DESC' ); } } } $backend = new PostsByCommentBackend(); $frontend = new PostsByCommentFrontend(); ربما تجد هذه التعليمات بالغة الصعوبة، لكن النقطة التي أحاول الوصول إليها أن فصل تعليماتك البرمجية إلى وحدات منفصلة، يسهل عملية تطوير هذه الوحدات والبناء عليها. مثال كامل إذا كنت مهتمًا بمزيد من الأمثلة التوضيحية يمكنك الاطلاع على مشروع WordPress Plugin Boilerplate وهو عبارة عن قاعدة لبناء إضافات ووردبريس عن طريق البرمجة غرضية التوجه. لقد استخدمتها في العديد من مشاريعي وأنصح بها بشدة، خاصة للإضافات التي تتطلب درجة عالية من التعقيد. الخاتمة منصة ووردبريس تحتاج إلى إضافات مكتوبة بشكل أفضل، والحل الوحيد هو استخدام البرمجة غرضية التوجه، إنها تجعل التعليمات البرمجية أكثر قابلية للقراءة، مرتبة بشكل أفضل وذات جودة عالية وسهلة التطوير مستقبلًا. ترجمة -وبتصرّف- للمقال An Introduction to Object-Oriented Code for WordPress Plugins لصاحبه Daniel Pataki
  13. سنناقش في هذا الدرس أهمّية تحديث كلّ شيءٍ متعلّق بموقع ووردبريس الخاصّ بك إلى آخر الإصدارات المتوفّرة وأهميّة التحديثات بشكلٍ عام، وهو من أهمّ الأمور التي يمكنك القيام بها لزيادة حماية وأمان موقعك. لماذا نقوم بالتحديث؟ السؤال الحقيقي يجب أن يكون "ولما لا"؟ يقوم مطوروا ووردبريس بإرسال التحديثات إلى المستخدمين لسببٍ معيّن في النهاية، حيث أنّ هذه التحديثات تحتوي على إصلاحاتٍ لثغراتٍ خطيرة يمكن أن يستغلها المهاجمون لمهاجمة موقعك، مما يجعل التحديث ضرورة لا مفرّ منها. أنواع التحديثات قبل أن نتابع، من المهمّ أن نفهم أنواع التحديثات المختلفة المتوفّرة في سكربت ووردبريس. يشير Tony Perez في تدوينة حديثة إلى أنّه هناك 3 أنواع مختلفة من التحديثات: تحديثات الأمان، الترقيعات والإصدارات الرئيسية. تحديثات الأمان هي بالضبط كما تبدو عليه من اسمها. يتم إصدارها بسرعة وتحتوي فقط على بضع إصلاحاتٍ لثغراتٍ موجودة تم اكتشافها مؤخرًا. تكون هذه التحديثات عادةً على شاكلة أرقام الإصدارات مثل 4.2.1. تحديثات الترقيعات أكبر قليلًا، لا تحتوي هي الأخرى على مميزاتٍ جديدة، ولكنّها تقوم بتحديث النظام وعادةً ما تتضمن تحديثاتٍ أمنية كذلك، كما أنّه يتم إصدارها بصفة دورية ومن الممكن توقّع وقت صدور الترقيع الجديد. وأمّا عن التحديثات الرئيسية من الانتقال من الإصدار 3.9 إلى الإصدار 4.0 فهذا تحديثٌ جوهري، يحتوي مميزاتٍ جديدة وإصلاحاتٍ للمشاكل الأمنية المعروفة بالإضافة لأمورٍ أخرى، كما أنّه يتم التدوين عنها في مدونة ووردبريس وفي العديد من المواقع الإخبارية الأخرى، حيث أنّها تحديثات كبيرة ويجب على الجميع معرفتها. قد تقوم هذه التحديثات أحيانًا بتحطيم شكل موقعك بسبب عدم توافقية مع القالب الذي تستخدمه مثلًا، ولكن مع وجود نسخة احتياطية من موقعك، فيجب ألّا تكون مشكلةً بالنسبة لك. الفشل بالتحديث يعني مشكلة أعظم كما ذكرنا سابقًا، عدم قيامك / فشلك بتحديث أيّ إضافات أو قوالب ووردبريس مثبّتة على موقعك قد يعرّضك لخطرٍ كبير، وما قد لا تفهمه هو "لماذا"؟ يمكن قول نفس الأمر بخصوص القوالب والإضافات، صحيحٌ أنّها ليست جزءً من لبّ نواة ووردبريس، ولكنّها أيضًا قد تحتوي على ثغرات تمكّن المخترقين من استغلالها لاختراق موقعك، وأيضًا يتم اكتشاف هذه الثغرات كلّ فترة وتصدر تحديثات لترقيعها كلّ فترة، وعليك تثبيتها بمجرّد توفّرها. بعض السمات والقوالب تكون مبرمجة بصورة سيئة ويكون بها العديد من الثغرات ويجب عليك الانتباه إلى ذلك، كما يجب عليك تثبيت واستخدام القوالب والإضافات التي تستعملها فقط وحذف كلّ شيء لا تستعمله. إدارة تحديثات ووردبريس أفضل طريقة للتأكّد من أنّ كلّ شيء على موقعك محدّث هو جعل عملية التحقق من وجود تحديثات متوفّرة هي مهمّة روتينية أخرى على جدولك (لو لم تكن تقنيًا، فيجب عليك البحث عن استضافة تقوم تلقائيًا بتحديث جميع القوالب والإضافات والنواة الخاصّة بووردبريس)، يجب عليك التحقق من توفّر التحديثات بنفسك كلّ يوم لتجنّب أي مشاكل أمنية قد تحصل. منذ الإصدار 3.7 من ووردبريس فإنّ المنصة تسمح بالتحديث التلقائي بسهولة، بمجرّد تفعيل هذا الخيار، فإنّه هذا يعني أنّ نواة موقعك ستقوم بالتحديث تلقائيًا عند توفّر تحديثات جديدة بدون أيّ تدخّل منك. طبعًا لا يمكن فعل نفس الشيء بالنسبة للقوالب والإضافات، حيث يجب عليك القيام بتحديثها يدويًا. الخاتمة تحديثات ووردبريس مهمّة للغاية، بل ومهمّة جدًا، ومن واجبك الاهتمام بتحديث كلّ شيءٍ موجود على موقعك إلى الإصدارات الأخيرة المتوفّرة، وإلّا فإنك تترك بابك مفتوحًا للمخترقين ليخترقوك، إنّها مسألة وقت. ترجمة -وبتصرف- للمقال: The WordPress Developer’s Guide to Security: Updates لصاحبه: Brenda Barron.
  14. هل ترغب في تعلّم برمجة إضافات ووردبريس؟ هذه السّلسلة أُعدّت خصّيصًا لك. سنتعرف في هذه السّلسلة على كل ما تحتاجه لتطوير أوّل إضافة لك على ووردبريس، وفق النّهج التّالي: 1. مُقدّمة إلى برمجة إضافات Wordpress: ستتعرّف في هذا المقال على ماهية إضافات ووردبريس، الأسباب التي تدفعك إلى إنشاء إضافة، وكيف تبني أوّل إضافية بسيطة. 2. برمجة إضافات ووردبريس: الخُطّافات (Hooks) : في هذا المقال ستتعرّف على مفهوم الخّطافات في ووردبريس والتي تعد من أهم الخصائص التي يوفرها ووردبريس والتي جعلته مرنًا وقابل للتمدد بصورة قل أن تجد لها نظيرًا في برمجيات الويب. 3. استقبال وحفظ خيارات (وبيانات) الإضافة: سنتعرف في هذا الدّرس على أنسب الطّرق لحفظ الخيارات العامةللإضافة، وكيفيّة إضافة صفحة إعدادات Settings Page في لوحة التحكم تمكن المستخدم من إدخال وتعديل الخيارات الخاصة بالإضافة 4. نظرة شاملة على قاعدة بيانات ووردبريس: في هذا المقال ستتعرّف على جداول قاعدة بيانات ووردبريس ودور كل جدول بالإضافة لأهم محتوياته وارتباطه بالجداول الأخرى، بالإضافة إلى ذكر بعض الطرق التي يوفرها ووردبريس للتعامل مع البيانات. الآن وبعد أن كوّنت صورة واضحة على كيفية برمجة إضافة ووردبريس، نختم السّلسلة بمثال عملي: 5. مثال عملي لبرمجة إضافة ووردبريس- الجزء الأوّل 6. مثال عملي لبرمجة إضافة ووردبريس- الجزء الثّاني
  15. بعد أن تطرّقنا إلى أساسيات تطوير إضافات ووردبريس حان الوقت لنقوم بإنشاء إضافة لتطبيق بعض ما تعلمناه. وهذا ما سنقوم به في هذا الدرس والدرس الذي يليه من خلال إنشاء إضافة تقوم بإضافة مربع جانبي لعرض المقالات الأكثر مشاهدة في موقع ووردبريس مع إمكانية عرض عدد المشاهدات في كل مقالة. التخطيط للإضافةلنبدأ بتحديد الأمور التي ستقوم بها الإضافة: إحصاء عدد المشاهدات لكل مقال.توفير شيفرة مختصرة Shortcode لعرض عدد مشاهدات المقال في أي مكان.توفير ودجت Widget لعرض المقالات الأكثر مشاهدة.وذلك من خلال: الاستفادة من البيانات الإضافية للمقال Post Meta لإضافة حقل بيانات جديد للمقالات يستخدم في حفظ واسترجاع عدد المشاهدات.الاستفادة من Shortcode API التي يوفرها ووردبريس لإنشاء الشيفرة المختصرة.الاستفادة من Widget API التي يوفرها ووردبريس لإنشاء الودجت واستخدام صنف WP_Query للحصول على المقالات مرتبة على حسب عدد المشاهدات.برمجة الإضافةدعنا في البداية نقوم بالتخطيط لجميع الملفات والمجلدات التي سنقوم بإنشائها لبرمجة الإضافة. تركيبة الملفات والمجلداتلنبدأ أولا بإنشاء مجلد للإضافة يحمل الإسم: ha-views-widget وأظن أنه اختصار جيد لاسم الإضافة واستخدامنا في البداية الحرفين ha كاختصار ل Hsoub Academy :). وبالطبع سنضع هذا المجلد في مجلد إضافات ووردبريس (ونحن نفترض أنك قمت بتنصيب ووردبريس مسبقا) والموجود في المسار wp-content/plugins. بعد ذلك سنقوم بإنشاء ملف php بنفس اسم المجلد وهو ha-views-widget.php وهذا الملف هو الملف الأساسي للإضافة وسيحتوي على الترويسة التي بها معلومات الإضافة والتي تعرفنا عليه في الدرس الأول من هذه السلسلة وبالتالي سيحتوي على هذه الترويسة: /** * Plugin Name: Hsoub Views Widget * Plugin URI: http://academy.hsoub.com/ * Description: إضافة صغيرة تقوم بإضافة مربع جانبي لعرض المقالات الأكثر مشاهدة في موقع ووردبريس مع إمكانية عرض عدد المشاهدات في كل مقالة. * Version: 1.4.0 * Author: Adil Elsaeed * Author URI: http://adilelsaeed.com * Text Domain: ha-widgets * Domain Path: /lang/ * License: GPL2 */بالطبع يمكننا أن نكتب جميع شيفرات php الخاصة بالإضافة في هذا المجلد لكن هذه ليست فكرة جيدة خصوصا إذا أردنا إنشاء إضافة سهلة التطوير والمراجعة، لذلك سنخصص ملفًا لإنشاء ومتابعة عدد المشاهدات وليكن باسم views.php وملف آخر لإنشاء الودجت وليكن باسم widget.php (لاحظ أنه داخل مجلد الإضافة يمكنك تسمية الملفات بأي اسم بدون خوف من التعارض مع ملفات ووردبريس الأخرى)، كما أننا سنحتاج لملف آخر لإنشاء الشيفرة المختصرة وليكن باسم shortcode.php ويمكننا أن نضع هذه الملفات الثلاثة داخل مجلد باسم includes للمحافظة على المجلد الرئيسي للإضافة مرتبًا. وبالطبع ما دمنا سنكتب بعض شيفرات html فإننا سنحتاج لتنسيقها من خلال CSS وهذا يعني أننا نحتاج لملف لوضع شيفرات CSS هذه، لذلك سنقوم بإنشاء مجلد أخر باسم css وبداخله ملف widget.css. هذه كل الملفات والمجلدات التي سنحتاج إليها في هذه النسخة الأولى من الإضافة. الملف الأساسي للإضافةفي الملف الأساسي للإضافة سنقوم أولا بتعريف بعض الثوابت التي سنحتاج إليها لاحقا، حيث سنحتفظ بكل من مسار الإضافة ورابطها URL وكذلك النسخة الحالية للإضافة كثوابت بالصورة التالية: if ( !defined( 'SDG_PLUGIN_DIR' ) ) { define( 'HA_VIEWS_DIR', plugin_dir_path( __FILE__ ) ); } if ( !defined( 'HA_VIEWS_URL' ) ) { define( 'SDG_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); } if ( !defined( 'HA_VIEWS_VER' ) ) { define( 'SDG_PLUGIN_VER', '1.1.0' ); }لاحظ أننا استخدمنا الدالتين plugin_dir_path و plugin_dir_url اللتين يوفرهما ووردبريس حيث تُرجعان مسار الإضافة ورابطها على التوالي. ثانيا سنقوم بتضمين ملفات php التي أنشأناها سابقا حتى ينفذ ووردبريس الشفرات الموجودة فيها ويتم تضمينها من خلال require_once كالآتي: // الملف المسؤول عن عدد المشاهدات require_once HA_VIEWS_DIR . 'includes/views.php'; // الملف المسؤول عن الويدجت require_once HA_VIEWS_DIR . 'includes/widget.php'; // الملف المسؤول عن الكود المختصر require_once HA_VIEWS_DIR . 'includes/shortcode.php';ثالثا وأخيرًا سنقوم بصف ملف الCSS الخاص بتنسيق الويدجت من خلال استخدام الحدث wp_enqueue_scripts ويمكنك معرفة المزيد حول التعامل مع ملفات CSS في ووردبريس بالإطلاع على مقال صف و تسجيل ملفات CSS في ووردبريس. وهذه هي الطريقة التي سنصف بها ملف widget.css: add_action('wp_enqueue_scripts', 'ha_scripts'); function ha_scripts(){ wp_enqueue_script( 'sdg-admin', HA_VIEWS_URL . 'css/widget.css', array(), HA_VIEWS_VER); }حفظ وتحديث عدد المشاهداتلننتقل الآن إلى ملف views.php حيث سنقوم بإضافة عداد المشاهدات لكل مقال من خلال بيانات الميتا الخاصة بالمقال post meta حيث سنقوم بإنشاء الدالة ha_set_post_views والتي تقوم بتحديث عدد المشاهدات للمقال عند زيارته ولنضمن تنفيذها عند كل مقال سنقوم بإضافتها للحدث wp_head والذي يتم تنفيذه في ترويسة Header كل صفحات الموقع. ويتم إضافة الدالة إلى هذا الحدث بالصورة التالية: add_action('wp_head', 'ha_set_post_views');أما بالنسبة للدالة نفسها فهذه هي صورتها: function ha_set_post_views() { // إذا لم يكن هذا مقال مفرد (صفحة أو مقال) لا تنفذ أي شيء if(!is_singular()){ return; } // الوصول إلى بيانات المقال الحالي global $post; $post_id = $post->ID; $count_key = 'ha_post_views_count'; // استرجاع العدد الحالي للمشاهدات $count = get_post_meta($post_id, $count_key, true); if($count==''){ // هذا يعني أنه لم يتم إنشاء الميتا الخاص بحفظ عدد المشاهدات حتى الان $count = 0; delete_post_meta($post_id, $count_key); add_post_meta($post_id, $count_key, '0'); // إنشاء الميتا الخاص بحفظ عدد المشاهدات }else{ // زيادة عدد المشاهدات بمقدار مشاهدة واحدة $count++; // حفظ الميتا التي حفظنا فيه عدد المشاهدات update_post_meta($post_id, $count_key, $count); } }لعل التعليقات تشرح الدالة بصورة واضحة لكن دعنا نوضح الأمور أكثر، قمنا في هذه الدالة أولا باستخدام الدالة is_singular والتي تتحقق إن كان المعروض حاليا صفحة مقال مفرد (مقال، صفحة، مقال مخصص) أم لا (صفحة تصنيف مثلا أو أرشيف أو غيرهما) وفي حالة لم يكن المقال مفردًا يتوقف تنفيذ الدالة لأن مهمتها تحديث عدد المشاهدات للمقالات والصفحات والمقالات المخصصة فقط وليس بقية صفحات الموقع (الأرشيفات أو التصنيفات أو غيرها). ثانيا قمنا باستخدام المتغير العام (global) الذي يوفره ووردبريس وهو post$ والذي يحفظ فيه بيانات المقال الحالي (الذي يتم عرضه) حتى نحصل على معرف المقال الحالي من أجل استخدامه في تحديث عدد مشاهداته. ثالثا قمنا باستخدام الدوال update_post_meta، get_post_meta، add_post_meta و delete_post_meta والتي تمكننا من إضافة ميتا مخصصة للمقال واسترجاعها وحذفها وتحديثها على التوالي. وكما تلاحظ قمنا بالتأكد من أن عدد المشاهدات لا يساوي قيمة خالية (غير موجود) وفي حالة أنه غير موجود يتم إنشاؤه وفي حالة أنه موجود يتم زيادته بمقدار واحد وهذه كل مهمة الدالة. استرجاع عدد المشاهداتفي هذا الملف أيضا (أعني ملف view.php) سنقوم بإنشاء دالة أخرى تقوم باسترجاع عدد المشاهدات للمقال الحالي حتى نستخدمها لاحقا في الشيفرة المختصرة shortcode، وهذه هي الدالة: function ha_get_post_views(){ // الوصول إلى بيانات المقال الحالي global $post; $post_id = $post->ID; $count_key = 'ha_post_views_count'; $count = get_post_meta($post_id, $count_key, true); if($count==''){ delete_post_meta($post_id, $count_key); add_post_meta($post_id, $count_key, '0'); return "0 مشاهدة"; } return $count.' مشاهدة'; }ليس هنالك الكثير مما يحتاج إلى شرح فقط قمنا باستخدام الدالة get_post_meta لاسترجاع قيمة الميتا ha_post_views_count وإعادتها في حالة كانت القيمة غير خالية وإعادة صفر في حالة كانت القيمة خالية وفي هذه الحالة تقوم أيضا بإضافة الميتا. برمجة الشيفرة المختصرة shortcodeفي هذه الجزئية سنعتمد على الواجهة البرمجية التي يوفرها ووردبريس حيث سنستخدم الدالة add_shortcode والتي لها الصورة التالية: <?php add_shortcode( $tag , $func ); ?>حيث: tag$ هو اسم الشيفرة المختصرة التي سيستخدمها المستخدم في حالتنا هذه سنسميها ha_views وسيقوم المستخدم بإستدعائها بالصورة التالية [ha_views] في المقال أو الصفحة. func$ هي الدالة المسؤولة عن إرجاع محتويات الشيفرة المختصرة أي ما تقوم به الشيفرة المختصرة وفي حالتنا هذه الدالة عبارة عن دالة ترجع عدد المشاهدات للمقال الحالي وهذه هي الشيفرة النهائية في ملف shortcode.php function ha_views_shortcode( $atts ){ return ha_get_post_views(); } add_shortcode( 'ha_views', 'ha_views_shortcode' );لاحظ أن الدالة ha_views_shortcode تقوم فقط بإرجاع القيمة المرجعة من الدالة ha_get_post_views والتي عرفناها مسبقا في ملف views.php والتي بدورها ترجع عدد المشاهدات للمقال الحالي. ولن نتطرق إلى شرح المزيد من التفاصيل حول الدالة add_shortcode تجنبا للإطالة وربما نخصص لها مقالا مفردا بعد نهاية هذه السلسلة إن شاء الله. سنكتفي بهذا القدر في هذا الدرس وفي الدرس الأخير من هذه السلسة سنكمل –إن شاء الله- برمجة الإضافة (حيث تبقى فقط برمجة الويدجت الذي يعرض أكثر المقالات مشاهدة)، كما سنلقي بعض الضوء على مجموعة من الأدوات والمواقع المفيدة لمطوري إضافات ووردبريس.
  16. تلعب جداول التسعير دورًا هامًّا في مساعدة زوّار موقعك في رؤية ومقارنة مختلف المميّزات التي تقدّمها خططك التسعيريّة. تكمن المشكلة في أنه يمكن لهذه الجداول أن تشكّل تحديًا من ناحية التصميم وسهولة الاستخدام في ذات الوقت. يجب أن تكون الجداول بسيطة ولكن يجب أن تفرّق بشكل واضح بين ميزات وأسعار الخدمات والمنتجات المختلفة. إذا لم يتمكّن مستخدموك من رؤية قيمة المنتج أو الخدمة فورًا فعليك أن تعرف أن أموالهم لن تُغادر محافظهم. ولكن يمكن لجداول مقارنة التسعير -مع بعض استراتيجيّات التسويق الصحيحة- توفير وسيلة فعّالة لتحديد موضع إظهار حِزَمك من أجل زيادة المبيعات. لذلك سنقوم بإلقاء نظرة على أفضل الإضافات المتاحة لمساعدتك في إظهار تسعيرك بالطريقة الصحيحة في موقعك المبني باستخدام ووردبريس. CSS3 Responsive Pricing Table إضافة CSS3 Responsive Pricing Table المُقدّمة من طرف QuanticaLabs هي إضافة جداول تسعير لووردبريس مدفوعة والتي توفر تصميمًا متجاوبًا. إذا كان مجرّد التفكير في احتياجك لكتابة شيفرات برمجيّة يسبب لك التوتر فإن هذه الإضافة طُوّرت خصيّصا لك. الإضافة متوافقة مع ووردبريس متعدّد المواقع أيضًا (Multisite WordPress). هناك تصميمان يمكنك الاختيار من بينهما، فاتح وغامق، وكل تصميم يأتي مع 20 لون مُختلف. تم تطوير الإضافة باستخدام CSS3 فقط مما يجعل الإضافة صغيرة الحجم ومؤثّرة. قام المطورون أيضًا بإطلاق نسخة HTML من الإضافة. تأتي الإضافة مُحمّلة بخيارات عديدة مثل ضابط وضع التجاوب ولوحة إدارة شاملة مع ضبط حي live configuration. لديك إمكانيّة التحكم الكامل في تصميم الجدول باستخدام عدد كبير من الخيارات للصفوف، الأعمدة، حالات الحومان (Hover states)، الأشرطة وأيقونات صح/خطأ (tick/cross icons). يمكنك الحصول على ترخيص عادي مقابل 18 دولار والذي يقدم لك أيضًا 6 أشهر دعم من المطورين والتحديثات المستقبليّة. خصائص الإضافةتفعيل وضع التجاوب وتحديد خطوات وأبعاد التجاوبلوحة إدارة بديهيّة مع ضبط حيتصميمان للجدول، 20 لون مُختلفعدد لا نهائي من الجداولعدد لا نهائي من الأعمدة والصفوفإظهار/إخفاء عمود أو عدّة أعمدة من لوحة الإدارةتحديد الأعمدة كنشطة (مُنبثقة)صفوف قابلة للتوسيعحالات الحومان (Hover states)42 أيقونة صح/خطأمثال حييستخدم موقع Fast Followerz هذه الإضافة منذ ثلاث أعوام إلى الآن. الصورة التالية توضح معاينة لجدول التسعير المصمم لشركتهم القائم على تقديم خدمات على الإنترنت. لاحظ كيفية انبثاق الأعمدة وإذا قمت بزيارة الموقع باستخدام هاتف ذكي ستلاحظ أن التصميم متجاوب. Plugmatter Pro Pricing Table Plugin إضافة Plugmatter Pro Pricing Table Plugin هي إضافة ووردبريس مدفوعة سهلة الاستخدام والتي تساعدك على إنشاء جداول مقارنة أسعار عالية التحويل. وفقًا لموقع الإضافة فإنه "يمكن للإضافة حرفيًّا أخذ مبيعاتك إلى المرحلة التالية وكذلك جعل تصميم موقعك متكاملاً". خاصيّة تحسين التحويل الموجودة بالإضافة مدعومة بواسطة دراسات البحث السلوكي وتحسين مُعدّل التحويل (CRO)، والتي تعطي الإضافة ميزة تنافسيّة تسبق جداول التسعير الأخرى من وجهة نظر تسويقيّة. تمّ تصميم الإضافة لأولئك الذين لا يريدون كتابة شيفرات برمجيّة. تحصل مع هذه الإضافة على 10 قوالب جداول تسعير متجاوبة ومُخصّصة والتي صُمّمت خصّيصًا لزيادة مُعدّل التحويل لموقعك. من الناحية التصميميّة، فإنه يُمكن للقوالب أن تظهر بصورة قوالب مصفوفة أو قوالب بطاقات. هُناك ثلاث خطط يُمكنك الاختيار من بينها بالنسبة لهذه الإضافة. أقلها سعرًا هي 47 دولار. إلا أنّ الخدمات التقنية عالية الجودة المُقدّمة بواسطة الإضافة تُبرّر أسعارها العالية. خصائص الإضافةمُحرّر مرئي WYSIWYGإمكانيّة ترتيب الصفوف والأعمدة بطريقة السحب والإفلات (Drag and Drop)خطوط جوجل وأيقونات Font Awesomeتعقّب الأحداث من جوجل23 زر قابلة للتعديلمُحرّر الخلايا مُحمّل مع خيارات مُختلفةتصميم متجاوب بالكاملاختبار A/B Split Testingدعم فوري للمُستخدمينرموز قصيرة (Short Codes)يُمكن تجربة جميع القوالب باستخدام مُدخلات واحدةVisual Composer Pricing Table Add-On إضافة Viusal Composer Pricing Table Add-On هي إضافة متجاوبة والتي تم تصميمها خصّيصًا للقوالب التي تم إنشاؤها باستخدام Visual Composer. الميزة البارزة لهذه الإضافة هي أّنّها تُتيح لك حريّة تخصيص خلفيّة، ألوان الخط والشفافيّة (Transparency) بالنسبة لجدول التسعير. مما يُعني أنّه لن تكون بحاجة للتعامل مع مجموعة من القوالب المُعرّفة مسبقًا من جديد. تم تصميم جداول التسعير بطريقة تجعلها تلعب دور أزرار الدّعوة إلى الإجراء Call to action. ستحصل مع الإضافة على أيقونات Font Awesome لإضافة المزيد من الحيويّة لجدول التسعير الخاص بك. تحتوي الإضافة على خاصيّة التبديل (toggle) والتي تُتيح إمكانيّة تبديل مقدار المساحة بين الخطط المختلفة في جدولك. ثمن الترخيص العادي هو 17 دولار والذي يشتمل على ستّة أشهر من الدّعم الفنّي. خصائص الإضافةتخطيطات عمود مُخصّصةتنسيقات حدود (borders) مُخصّصةخلفيّة وألوان خط مُخصّصة بالكاملتأثيرات شفافيّةأيقونات Font Awesomeإضافة تأثيرات تحريكالتّحكّم في المسافات بين خطط التسعيرصناديق الدعوة إلى الإجراءمثال حييستخدم موقع College for Pets هذه الإضافة لعرض أسعار الشهادات التي يقدمونها. Easy Pricing Table إضافة Easy Pricing Table التي توفّرها Fatcat Apps هي جداول تسعير مشهورة يسهل إعدادها خلال دقيقتين فقط. تُقدّم الإضافة 10 قوالب لجداول تسعير متجاوبة تمامًا والتي تحتوي على تلميحات مُضمّنة تُمكّنك من عرض معلومات مُفصّلة عن منتجك أو خدمتك دون بعثرتها. وفقًا لموقع الإضافة، فإن الإضافة ستعمل فور قيامك بتثبيتها. فلا تحتاج لكتابة شيفرات برمجيّة لأي شيء أو الخوض في إعدادات ضبط مُعقّدة. ستكون الإضافة مُثبّتة لديك وتعمل في دقائق معدودة. تُقدّم الإضافة أيضًا خطط خاصة بالشّركات والوكالات والتي تحتوي على تبديلات التسعير وإضافات إحصائيّات جوجل. تبديلات التسعير تُتيح لعملائك معاينة معدّلات التسعير التي تضعها لخدمة معيّنة بعملات مختلفة أو لفترات مختلفة (على سبيل المثال، خطط فصليّة، خطط سنويّة، إلى آخره). تُقدّم Fatcat Apps فترة 60 يوم لاستعادة مبلغك إذا لم تكن راضيًا عن جداول التسعير المُقدّمة. يُمكنك الحصول على ترخيص شخصي مقابل مبلغ 29 دولار والذي يمكن استخدامه في موقع واحد. بهذا الترخيص ستحصل على 10 قوالب ودعم عب البريد الإلكتروني. خصائص الإضافة10 قوالب تصميممتجاوبة وقابلة للتخصيص بالكاملسهلة الاستخدامتلميحات مضمّنةدعم بريد إلكتروني مدفوعإضافة تبديل الأسعارإضافة إحصائيات جوجلمثال حيربمّا تكون قد رأيت جداول Easy Pricing Tables في العديد من المواقع ولكنّك لم تعرف أنّها هي نفس الإضافة. إليك بعض المواقع الشهيرة التي تستخدم الإضافة لأغراضها التجارية: WooThemes، Social Media Examiner، Pagely، WPBeginner، WP Mayor، WPLift و wpmudev. PricingTable إضافة Pricing Table التي تطوّرها ParaTheme هي إضافة جدول تسعير ووردبريس مجّانيّة وصغيرة الحجم. تقوم الإضافة بإنتاج نظام HTML/CSS شبكي (grid) خالص لعرض الجدول في موقعك. إنّ سهولة استخدام الإضافة، تصميمها المتجاوب ومجموعة أخرى من المميزات هي أمور تجعل من هذه الإضافة خيارًا شائعًا لمن لا يريد شراء جدول تسعير. يُمكن ببساطة سحب وإفلات صفوف/أعمدة وإدارة جدول التسعير من خلال لوحة الإدارة المدمجة الخاصّة بالإضافة. تتضمّن الإضافة خاصيّة دعم الرموز القصيرة والتي تُمكّن المستخدمين من وضع جدول التسعير أينما أرادوا بسهولة. أحد أفضل الخصائص بهذه الإضافة هي أنّه بإمكانك تضمين فيديو (يوتيوب أو فيميو) في خطط جدولك التسعيري. خصائص الإضافةمتجاوبةعدد لا نهائي من الأعمدة والصفوفخاصّية السحب والإفلاتحزمة من 7 ألوان للنصوصحزمة من 12 لون للخلفية19 شريط للأعمدة21 خط من خطوط جوجلتدعم الإضافة وضع صورة خلفية في منطقة الجدولGo Pricing – WordPress Responsive Pricing Table تدعم إضافة Go Pricing – WordPress Responsive Pricing Table المُقدّمة بواسطة Granth العديد من عناصر الوسائط شاملة صور، خرائط، تسجيلات صوتيّة وفيديو. تثبيت الإضافة يستغرق بضع دقائق مع لوحة الإدارة. مدمج بالإضافة أيقونات Font Awesome، Icomoon، Linecon وMateral. كلها أيقونات يمكنك استخدامها في جدولك التسعيري المُخصّص. يمكنك معاينة الشكل النهائي لجدول التسعير الخاص بك قبل نشره على موقع وذلك باستخدام خاصيّة المعاينة الفوريّة التي توفّرها الإضافة. توفّر هذه الإضافة الكثير من الوقت الذي يمكن أن يُستنفذ في النشر ثم العودة لإضافة تعديلات بسيطة. تحتوي الإضافة على أكثر من 250 تصميم قالب يمكنك الاختيار منها. القوالب قابلة للتخصيص بالكامل مما يعني أنّه بإمكانك فعل أي شيء مثل تغيير مساحة الخلايا أو تعيين ألوان مختلفة لكل عمود. الترخيص العادي متاح مقابل 20 دولار والذي يسمح لك باستخدام الإضافة في موقع واحد فقط. خصائص الإضافةمجموعة من أكثر من 250 قالب جاهزأكثر من 650 خط من خطوط جوجلأكثر من 1900 أيقونة خطوطعدد لا نهائي من الأزرارتوفير QR Codeمعاينة فوريّة للجداولتخطيط متجاوبرمز قصير لزرّ باي بالعدد لا نهائي من الألوانمثال حييستخدم موقع View from the Boundary الإضافة لعرض خدمات الموقع التسويقيّة. ARPrice ARPrice هي إضافة مدفوعة تُطوّرها Repute InfoSystems. الإضافة تُقدّم جداول مقارنة تسعير متجاوبة وتتميز أيضًا بقوالب متحرّكة مع إمكانيّة تخصيصها. تأتي الحزمة وبها مجموعة فيها أكثر من 170 خيار لجداول التسعير يمكنك الاختيار من بينها. إذا لم تجد أيّ من تلك الجداول يناسب تصميم موقعك فيمكنك تخصيص الجدول بنفسك. مضمّن بالإضافة لوحة إدارة كاملة المزايا والتي من خلالها يمكن سحب وإفلات الأعمدة ومن ثمّ تغيير حجمها. يمكنك إضافة صور، خرائط جوجل، ملفّات صوتيّة وفيديوهات إلى جدول التسعير الخاص بك وإلحاق تأثيرات تحريك بهم. الترخيص العادي متاح مقابل 18 دولار والذي يحتوي على 6 أشهر دعم فنّي والتحديثات المستقبليّة. خصائص الإضافةأكثر من 170 قالب جداول تسعيرتأثيرات حركيةلوحة إدارة كاملة المزاياإمكانيّة السحب والإفلاتتجاوب مُخصّصخطوط جوجل وأيقونات Font Awesome مضمّنةدعم لسكربت بايبالإمكانيّة إضافة صور، خرائط، ملفّات صوتية، فيديودعم التلميحاتKento Pricing Tables تعدّ إضافة Kento Pricing Tables التي تطوّرها KentoThemes إضافة سهلة الاستخدام وقابلة للتخصيص مقدّمة لمواقع ووردبريس. تقوم الإضافة بإنتاج جداول تسعير تمّ إنشاؤها بواسطة HTML/CSS فقط والذي يعني أنها لن تتسبّب في بطء موقعك. تسمح لك الإضافة تخصيص أعمدة وصفوف الجدول بالكامل بالشكل الذي يتناسب مع قالب موقعك والألوان الموجودة به. تتيح لك الإضافة كذلك إمكانيّة تحديد اللون الرئيسي للجدول بلون من اختيارك. ولمن أصابه الملل من الألوان البسيطة فإنّه يمكن إضافة صورة خلفية إلى الجدول. يجب مراعاة أنّ صورة الخلفيّة ليست متجاوبة فلا تتوقع أن تعمل بسلاسة في الهواتف الذكية. تعديل حجم الصفوف والأعمدة بسيط. كل ما عليك فعله هو إدخال القيم وسوف تحصل على جدول بنفس الأبعاد المُحدّدة. خصائص الإضافةتصميم متجاوبعرض مُخصّص للأعمدةعدد لا نهائي من الأعمدة والصفوفلوحة إدارة سهلة الاستخدامحقول إظهار/إخفاء فارغةمثال حييستخدم موقع WebPrezence.com الإضافة في متجره الإلكتروني. يمكن أن ترى كيف أضافت صورة الخلفيّة التي استخدموها تأثيرًا مُكمّلاً للمظهر العام لجدول التسعير. POWr Price Table إضافة POWr Price Table التي تقدّمها POWr هي إضافة مجّانيّة مُختلف عن غيرها، حيث أنها خدمة سحابية ممّا يعني أنّه بإمكانك تعديل موقعك حتى بعد نشره. كما تدعم الإضافة خدمة بايبال ممّا سيُسهّل على زبائنك عملية الدّفع. تُتيح لك الإضافة إنشاء أنظمة دفع دوري لأشياء مثل العضويّات أو الاشتراكات. هذه الميزة ليست موجودة بالإضافات الأخرى التي تمّ استعراضها من قبل. يمكن في هذه الإضافة تخصيص الألوان، الخطوط والخلفيّات. يمكنك استخدام خاصيّة الإبراز (Highlight) لجعل خطّة معيّنة تبرز بين باقي الخطط الأخرى. كما تدعم الإضافة لغات مختلفة ومتجاوبة بالكامل. خصائص الإضافةمتجاوبة بالكاملخدمة سحابيةدعم مدمج للنصوص للعديد من اللغاتإمكانيّة إنشاء خاصيّة الدفع الدوريخاصيّة الإبراز لجعل خطّة محدّدة بارزة عن الخطط الأخرىخطوط، خلفيّات وألوان مُخصّصةدعم بايبالمقارنة بين إضافات جداول التسعير اختيار الإضافة الأنسب من الجدول أعلاه قد تكون مهمّة صعبة حيث أنه يوجد على الأقل ميزة واحدة تبرز كل إضافة عن الإضافات الأخرى. إذا كنت تبحث عن إضافة جداول تسعير مدفوعة فإنّ إضافة Easy Pricing Tables ببساطة هي خيارك الأمثل. تمتلك الإضافة كل ما تحتاج إليه أن يكون موجودًا في إضافة جدول تسعير. أعجبتني خاصيّة تبديل التسعير، وهي الخاصيّة التي لا تقدّمها الإضافات الأخرى. تصبح خاصيّة تبديل التسعير إلزاميّة عندما تختلف أسعار منتجك أو خدمتك. تحتوي إضافة POWr Price Table على العديد من المميّزات التي لا توجد بالإضافات الأخرى. مثل دعم اللّغات المختلفة وكونها خدمة سحابية. إذا كنت تقوم بتغيير المظهر العام لموقعك كثيرًا، فعلى الأرجح أفضل خيار لك هو جداول التسعير التي توفّرها إضافة GO Pricing حيث أن هناك أكثر من 250 خيار يمكنك الاختيار من بينها. اختيار أفضل إضافة تسعيرهناك عدد كبير جدًا من حلول جداول التسعير لووردبريس، ولكن تم اختيار هذه الإضافات التسعة بناءً على خصائصها الممتازة وقدرتها على الموازنة بين التصميم وقابلية الاستخدام. رأينا كيف قامت مواقع حقيقيّة بتنفيذ جداول التسعير الخاصّة بهم عن طريق استخدام الخصائص الأكثر أهميّة بالنسبة لهم. الآن لديك معرفة جيّدة بمختلف جداول التسعير الموجودة وماذا يمكن لكل إضافة من الإضافات تقديمه لك. إذا كنت تريد إضافة بها مجموعة من قوالب الجداول المصمّمة مسبقًا للاختيار من بينها أو واحد تقوم بتخصيصه بنفسك، فإنّك الآن لديك بعض الخيارات المختلفة التي بإمكانك الاختيار منها. هل تستخدم جداول التسعير في موقعك؟ ما هي أفضل إضافة جدول تسعير بالنسبة لك؟ قم بإخبارنا في قسم التعليقات بالأسفل. ترجمة -وبتصرّف- للمقال Nine Best Pricing Table Plugins For WordPress لصاحبه Tom Ewer.
  17. إذا أردت بناء موقع ووردبريس مميز وينسجم مع أهدافك الشخصية والتجارية فيجب عليك حذف بعض الأشياء المُحزّمة بشكل افتراضي مع ووردبريس. خبراء ووردبريس يملكون عادة قائمة من الأشياء لإضافتها وحذفها بشكل تلقائي والتي يقومون بها دون تردد. إذا ماذا تحتوي قائماتهم؟ القائمة التالية تحتوي على ما يمكنك فعله لجعل موقعك يعمل ويبدو أفضل من السابق. 1. التخلص من "Howdy" إذا كنت تستخدم النسخة الإنجليزية من ووردبريس، فأوّل شيء ستراه عند تسجيل دخولك إلى الووردبريس هي لوحة التحكم (dashboard)، وستلاحظ أن اسمك مكتوب في الجانب الأعلى الأيمن من الصفحة، لكن ستجد قبل اسمك كلمة "Howdy" وهي التحية الافتراضية التي تأتي مع ووردبريس. يمكنك إزالة "Howdy" باستخدام شيفرة قصيرة (code snippet). من المفترض أن تكون هذه الكلمة طريفة لبعض الأشخاص إلا أنها لن تكون كذلك للبعض الآخر الذين يريدون أن يظهروا بمظهر مُحترف. شيفرة قصيرة (code snippet) يمكنها إزالة "Howdy". فبماذا سيفكر عميل -لم يستخدم ووردبريس سابقا- بعد أن ترسل له صورة من لوحة التحكم الخاصة بموقعك ورأى فيها "Howdy, Bob"؟ سيفترض على الأغلب أنك أنت من فعل ذلك، وقد يؤثّر ذلك على العلاقة التي بينكما. لذلك لماذا تفسد علاقات عملك بشيء سخيف مثل هذا، خاصة إذا كان يمكنك إزالته بسهولة؟ كل ما تحتاجه لاستبدال "Howdy" هو إضافة هذه الشيفرة القصيرة التّالية إلى ملف functions.php في قالبك: add_filter('gettext', 'change_howdy', 10, 3); function change_howdy($translated, $text, $domain) { if (!is_admin() || 'default' != $domain) return $translated; if (false !== strpos($translated, 'Howdy')) return str_replace('Howdy', 'Welcome', $translated); return $translated; } تذكر أنه من الأفضل دائما أن تنشئ نسخة احتياطية من موقعك قبل القيام بتغييرات في ملفات PHP، أو يمكنك فعل ما هو أفضل وذلك بإنشاء قالب مشتق (child theme) لإضافة التخصيصات الخاصة بك. 2. تخلص من "موقع ووردبريس عربي آخر" هذه الخطوة بسيطة لكنها مهمة لأنني أجد الكثير من المواقع التي يتم تحديثها بانتظام وتحتوي على محتويات مفيدة تضع شعار "موقع ووردبريس عربي آخر"، وهذا الشيء لا يغتفر. لتغييره، كل ما تحتاجه هو تسجيل دخولك إلى موقعك ثم الضغط على: إعدادات > عام وبعد ذلك احذف هذه الجملة من المربع بجانب "سطر الوصف" وضعْ جملة أُخرى خاصة بك. أو إذا لم ترغب بها، قم بحذفها وتجاوز قضية سطر الوصف كلية. يمكنك أيضا فعل ذلك عن طريق لوحة التخصيص: المظهر > تخصيص لا يوجد عذر لإبقاء عبارة "موقع ووردبريس عربي آخر" في موقعك. 3. تنظيف الشريط الجانبي يدعم ووردبريس الأشرطة الجانبية بشكل افتراضي وعند تثبيتك لقالب جديد ستجد أن هذه الأشرطة ممتلئة بودجات كثيرة مثل الأرشيف وآخر المشاركات وسحابة الكلمات الدلالية وغيرها، وعلى الرغم من أن هذه الودجات ستكون مناسبة في بعض الحالات، إلا أنها ليست كذلك دائما. توجد الكثير من الحالات التي لن تحتاج فيها لهذه الودجات، لذلك إذا أردت التحكم أكثر بموقعك ومظهره، سيكون من الأفضل إزالتها، يمكنك فعل ذلك عن طريق الذهاب إلى: المظهر > المربعات الجانبية ثم اسحب الودجات خارج مناطق الودجات في الجانب الأيمن من الشاشة وضعها في منطقة "ودجات متوفّرة". في الغالب، قوالب المدونات هي من أسوأ مفسدي الشريط الجانبي. 4. تنظيف لوحة التحكم تأتي لوحة تحكم ووردبريس ممتلئة بالكثير من المعلومات والودجات التي اعتاد المطورون المحترفون استخدامها، هذه المعلومات التي تظهر داخل هذه الودجات يمكن أن تكون مفيدة لأنها تضع لك كل ما تريده عند تسجيل دخولك، لكن، إذا لم تكن معتادا عليها، ستكون كل هذه الودجات مربكة لك. لذلك ستجد أن الكثير من المطورين يٌبسِّطون لوحات التّحكّم الخاصة بهم عن طريق إزالة الودجات التي لا يحتاجونها أو الودجات التي ستربك عملاءهم، إضافة إلى ذلك إن لوحة التحكم الخفيفة وغير الممتلئة تبدو أفضل، أعني لا تحتاج إلى رؤية آخر أخبار ووردبريس عند عملك على موقعك، أليس كذلك؟ يمكنك إزالة الودجات التي لا تتوقع استخدامها عن طريق إضافة بعض الشيفرات البرمجية إلى ملف functions.php في قالبك. ستكون الخطوة الأولى من عملية تنظيف لوحة التحكم هي التخلص من الودجات الافتراضية التي لن تحتاجها أنت وعملاؤك، هذه الودجات تدعى بـ meta boxes وستجد بشكل افتراضي ودجات browser_nag و right_now و activity و quick_press. يوفر لك ووردبريس Codex تعليمات برمجية بسيطة لإزالة ودجات لوحة التحكم باستخدام دالة ()remove_meta_box، وستكون الشيفرة البرمجية مشابهة لهذه: // Main column (left): $wp_meta_boxes['dashboard']['normal']['high']['dashboard_browser_nag'] $wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now'] $wp_meta_boxes['dashboard']['normal']['core']['dashboard_activity'] // Side Column (right): $wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press'] $wp_meta_boxes['dashboard']['side']['core']['dashboard_primary'] إذا لم تحتج إلى تغيير تخطيط لوحة التحكم كثيرا فسيكون إضافة شيفرة برمجية لإزالة الودجات هو أفضل حل ، وإذا احتجت إلى المزيد من التغييرات أو كنت ترغب بإعطاء عميلك بعض التحكم بها، سيكون من الأفضل استخدام ملحق. تتضمن عملية تنظيف لوحة تحكمك التأكد من إظهار كل شيء تريده، فعلى سبيل المثال إذا أردت أن توفّر لعملائك و/أو المستخدمين تعليمات لكيفية النشر بدون كتابة درس تعلمي منفصل، فيمكنك فعل ذلك عن طريق إنشاء ودجت مخصص يعرض لك المعلومات على لوحة التحكم. فعل ذلك يشبه طريقة إزالة الودجات، فهو يتضمن إضافة شيفرة برمجية إلى ملف functions.php الذي يحتوي على تفاصيل ودجت لوحة التحكم المخصصة التي ترغب بإضافتها. ستبدو الشيفرة البرمجية الخاصة بالودجت البسيطة كالتالي: add_action( 'wp_dashboard_setup', 'register_my_dashboard_widget' ); function register_my_dashboard_widget() { wp_add_dashboard_widget( 'my_dashboard_widget', 'My Dashboard Widget', 'my_dashboard_widget_display' ); } function my_dashboard_widget_display() { echo 'Hello, I am Mr. Widget'; } وبهذا ستنشئ ودجت لوحة تحكم تحتوي على أية معلومات ترغب بها ومن ثم تعرضها بالطريقة التي تريدها، وهذا جيد لعرض معلومات، وكما أشرت سابقا، إن الملحقات يمكنها مساعدتك في الودجات الأخرى مثل روابط تصنيف المشاركات و غيرها… 5. إضافة شعار إلى موقعك وإلى لوحة التحكم في العادة، من الأفضل أن تخصص قالب ووردبريس الجديد أكثر ما يمكن، وستكون خطوتك الأولى هي إضافة شعار مخصص يظهر في الغالب في أعلى موقعك ويوفر طريقة للزوار للتعرّف على علامتك التجارية فورا. يمكنك تغيير هذا الشعار عن طريق الذهاب إلى: المظهر > تخصيص ثم استخدم تخصيصات قالبك لرفع شعارك. إذا أردت وضع شعارك على لوحة تحكم موقعك أيضا -وحذف شعار وودبريس الافتراضي- يمكنك فعل ذلك بإضافة بعض الشيفرات البرمجية، وسيجعل هذا موقعك يبدو أكثر احترافية ولن يرتبك عملاؤك من ظهور علامة تجارية مُختلفة (شعار ووردبريس) على لوحة التّحكّم لديهم. يمكنك استبدال شعار ووردبريس بواحد خاص بك بإضافة هذه الشيفرة البرمجيةإلى functions.php: /**REPLACE WP LOGO**/ function admin_css() { echo ''; } add_action('admin_head','admin_css'); /**END REPLACE WP LOGO**/ ثم أضف هذه الشيفرة إلى admin.css: #header-logo { background-image: url(images/client_logo.jpg); } ستحتاج إلى التأكد من أن مسار ملف الصورة صحيح، أمر سهل أليس كذلك؟ 6. إضافة رمز المفضلة favicon يمكنك تغيير رمز المفضلة باستخدام مخصص القالب. رغم سهولة القيام بذلك، إلّا أن قلّة قليلة فقط تقوم بذلك. في حالة لم تكن تعرف ما هو رمز المفضلة، فهو عبارة عن صورة صغيرة تظهر بجانب رابط عنوان موقعك في نافذة متصفحك، وهي فرصة أخرى لإظهار علامتك التجارية وجذب الانتباه إلى التفاصيل، وهذا الأمر ينصح به المطورون المحترفون. يمكنك إضافة رمز المفضلة بسهولة عن طريق الذهاب إلى: المظهر > تخصيص ثم ارفع رمز المفضلة في مُخصّص القالب، إذا لم تعرف كيف تصنع رمز المفضلة فإن هنالك العديد من الأدوات التي ستساعدك على فعل ذلك مثل RealFaviconGenerator و Heroic Favicon Generator. 7. تخصيص الروابط الثابتة من الأشياء الأخرى التي يمكنك القيام بها ليبدو موقعك أكثر احترافية هي الروابط الثابتة المخصصة، فعند تثبيت قالب ووردبريس لأول مرة، سيتم تعيين الروابط الثابتة كسلسلة نصية من الأرقام بشكل افتراضي، وهي ليست جميلة ولا تساعدك في رفع ترتيبك لدى محركات البحث،أي أنك ستخسر الكثير من الزوار إذا أبقيتها، بالإضافة إلى أن السلسلة النصية من الأرقام تزعج قراء روابط موقعك. لكن لا داعي للقلق، يمكنك إصلاح ذلك، اذهب إلى: الإعدادات > روابط دائمة في لوحة التحكم وغيّرها من "عادي" إلى "عنوان المقالة" (post name)، وبهذه الطريقة، كل مشاركة سيتم حفظها مع رابط يشير إلى عنوان المشاركة أو الصفحة بدلا من أرقام غير مفهومة. 8. التخلص من Hello Dolly تم إضافة ملحق "Hello, Dolly" إلى نسخة ووردبريس باللغة الإنجليزية منذ مدة طويلة، وهو موجود بشكل افتراضي ويعرض كلمات من أغنية "Hello, Dolly" لـ Louis Armstrong في أعلى لوحة التحكم على الجانب الأيمن. هذا كل ما تقوم به هذه الإضافة، وعلى الرغم من أنها تُظهر روح الدعابة لصانعي ووردبريس، إلا أنها ليست مهنية، خاصة إذا كنت تطور مواقع لشركات. يمكنك التخلص من Hello, Dolly بسهولة عن طريق الذهاب إلى Plugins "الملحقات" في لوحة التحكم والبحث عنها. عندما تجدها انقر على Deactivate "تعطيل" في اسم الملحق أو إذا كان ذلك غير كافيًا بالنسبة لك، احذف المُلحق بشكل كامل. 9. إضافة صفحة 404 مخصصة طريقة أخرى ليظهر موقعك بطابع احترافي ومهني وذلك عن طريق إنشاء صفحة 404 مخصصة. حتى لو بذلت جهدًا كبيرًا للتأكد من عدم وجود روابط معطلة في موقعك، سيظل بعض الزوار يكتبون روابط خاطئة لصفحات موقعك أو يصلون إلى موقعك عبر نتائج غير محدّثة من محركات البحث، للتخلص من هذه النهاية المسدودة، ستحتاج إلى إنشاء صفحة 404 تساعد زوارك الضالين للعودة إلى المكان الذي تريده. في الوقت الحالي، أغلب القوالب تأتي مع صفحة 404 بشكل افتراضي لكنها تخبر الزائر فقط أن الصفحة غير موجودة، وقد توفر رابط للعودة إلى الصفحة الرئيسية، وهذا غير كافٍ، أعني أن الزائر ذهب إلى صفحة غير موجودة، لكن قد تكون الصفحة التي يبحث عنها موجودة في موقعك، أليس كذلك؟ لن تحتاج إلى بناء صفحة 404 مخصصة من الصفر فتوجد ملحقات عديدة تفعل ذلك مثل 404page و 404 Page by SeedProd. 10. تخصيص تذييل الصفحة ستجد أن التذييل في أغلب القوالب عام للغاية، ففي كثير من الأحيان ستخبرك هذه المنطقة عن القالب الذي يستخدمه الموقع، ومعلومات حول حقوق النشر و اسم الموقع، يمكنك تغيير هذا النص لكنه سيكون أصعب من تغيير اتجاه هذه المعلومات أو إضافة حقول جديدة. يمكنك تخصيص تذييل الصفحة عن طريق استخدام الودجات، لذلك إذا كان القالب يسمح لك باستخدام ودجات التذييل، يمكنك إضافة بعض المعلومات الأخرى إلى هذه المنطقة، فمثلا يمكنك إضافة ودجت نص مخصص مع بيانات الاتصال بك، أو يمكنك إضافة أيقونات شبكات التواصل الاجتماعي في ودجت أخرى، أو يمكنك أيضا إضافة بعض الودجات القياسية في هذه المنطقة مثل أحدث المُشاركات أو قائمة التصفح الرئيسية. بالطبع توجد بعض الملحقات التي توفر لك المزيد من التخصيص، فعلى سبيل المثال يسمح لك ملحق Footer Putter بإضافة معلومات حقوق النشر وعلامتك التجارية المسجلة، وسيسمح لك ملحق Header and Footer بإضافة شيفرات الإعلانات، أما بالنسبة إلى WP Custom Header Footer فسيسمح لك بإضافة شيفرات CSS و JS مخصصة دون لمس ملفات القالب. إن الاهتمام بتخصيص منطقة التذييل سيُظهر موقعك بمظهر مهني واحترافي. 11. استخدام ملحقات White Label يمكنك استخدام أحد ملاحق white label لتخصيص لوحة التحكم بسرعة وسهولة دون الحاجة إلى الخوض في الشيفرات البرمجية، ونحن ننصح بـ Ultimate Branding، فهذا الملحق مفيد للغاية ويجعل عملية تخصيص لوحة التحكم لعلامة تجارية مُعيّنة أسهل دون كتابة أية شيفرات برمجية. باستخدام هذا الملحق، يمكنك تخصيص شاشة تسجيل الدخول والتذييل وتذييل لوحة التحكم والودجات وغيرها، فهي تعطيك تحكمًا كاملًا على جزء الواجهة الخلفية (backend) لموقعك لتتمكن من تخصيص كل التفاصيل، وهذا شيء مهم للغاية إذا كنت توفر لوحة تحكم لعملائك، لذلك فإن اهتمامك بالتفاصيل سيجعلهم ينبهرون. إن ملحق White Label Branding هو خيار جيد آخر، فهو يوفر لك المميزات السابقة ويسمح بتخصيص لوحة التحكم، وإضافة إلى ذلك فهو يأتي بأدوات إضافية مثل التحكم بالتصفح والقوائم، والسماح بإخفاء شريط المدير، وإضافة ودجات و meta boxes في لوحة التحكم، ويمكنك أيضا تخصيص الألوان والأزرار وتغيير كل ما يراه المستخدم العادي على لوحة التحكم. الخاتمة الانطباعات الأولية مهمة للغاية لعلامتك التجارية ولموقعك على الإنترنت، وستبدأ بخسارة عملائك أو/و زبنائك إذا كان موقعك لا يبدو احترافيًا ومهنيًا، لكن لحسن الحظ ليس من الصعب صقل موقعك ليظهر كأن محترفًا حقيقيًا قام ببنائه. فبإضافة مميزات -وحذف أخرى- يُمكنك تحسين مظهر موقعك بشكل كبير. ما الأشياء التي يجب عليك إضافتها/حذفها إلى موقع ووردبريس الخاص بك ليظهر بمظهر احترافي؟ ما الأشياء الافتراضية التي يجب تغييرها؟ شاركنا تجاربك في التّعليقات. ترجمة -وبتصرف- للمقال: Add (or Remove) These 11 Things From Your WordPress Site and Look Like a Pro لصاحبته Brenda Barron.
  18. هل أنت مهتم بتعلم PHP وبناء قوالب وملحقات خاصة بك على ووردبريس؟ أو ربما أنت مُهتمّ بتعلّم القليل الذي يُمكنك من إدخال التّعديلات التي تحتاجها على مواقعك ومدوّناتك التي تعتمد على ووردبريس. أيّا كان وضعك، هناك أمور يجب عليك أن تعرفها قبل أن تغوص في مجال تطوير ووردبريس. سنحاول في هذا المقال إعطاءك فكرة واضحة عليها. كيف يعمل ووردبريس؟ لنفهم ماذا وكيف يمكننا التطوير في ووردبريس، سنلقي أولا نظرة سريعة على آلية عمل ووردبريس. يتكون ووردبريس من ثلاثة عناصر رئيسية: النواة الأساسية والقوالب والمُلحقات. تحتوي النواة على جميع الوظائف الأساسية التي تشكل نظام إدارة المحتوى لووردبريس، وهذه الشيفرات البرمجية تتضمن كل شيء من البنية التحتية (backend) للإدارة إلى دوال جدولة المشاركات والتأكد من قوة كلمة المرور والسماح بإنشاء مستخدمين وغيرها. في حين أن النواة الأساسية (core) مسؤولة عن البنية التحتية للموقع وكيفية التعامل معها، فإن القوالب مسؤولة عن الواجهة الأمامية للموقع وكيفية ظهوره. نستخدم إدارة ووردبريس (WordPress admin) لإنشاء المشاركات والصفحات وبقية محتوى الموقع، وأما بالنسبة لكيفية ظهور هذه الأشياء للزائر فهو أمر متروك للقالب theme، لذلك فإن هذا سيعطيك قوة كبيرة للتحكم في موقعك، فقد ترغب بتثبيت وتفعيل القوالب الموجودة أو حتى تطوير قوالبك المخصصة. أبسط طريقة لوصف المُلحقات plugins هي أنها توفر وظائف إضافية للووردبريس، ولفعل ذلك، قد تعدّل المُلحق الشيفرة البرمجية للواجهة الأمامية أو البنية التحتية للموقع، وأبسط مثال لذلك هي المُلحق الذي يضيف زر لتغريدة تويتر، وقد تُنشئ أيضا صفحة إعدادات جديدة في البنية التحتية لقائمة الإدارة والتي ستمكنك من إعداد بعض الخيارات الافتراضية لتغريدة المستخدم ويمكنها إضافة نفسها إلى الواجهة الأمامية للموقع، والتي سيكون موقعها في الغالب تحت التدوينة (post). مجالات التطوير بقدر تقدمك في تطوير ووردبريس، ستتمكن من تطوير أي واحدة من المكونات الرئيسية المذكورة أعلاه بالإضافة إلى تطبيقات مستقلة بمساعدة REST API الجديدة وسنذكر المزيد عن هذا الموضوع بعد قليل. مهما كان ما تريد فعله مع ووردبريس، أنصحك باتباع منهج في دراستك، هذه القائمة ستساعدك على التعرف على الأنظمة التي تحتاج إلى معرفتها قبل بدء تعلمك المزيد حول المجال الذي اخترته: القوالب المُلحقات REST API النواة القوالب إن تعلم كيفية عمل القوالب وتطويرها سيسمح لك باحتراف إنشاء المواقع بدءا من المواقع الصفحة الواحدة إلى مواقع المحتوي الحيوي الثقيل، وستسمح لك أيضا بالحصول على المزيد من العملاء (إذا كان هذا ما يهمك) أو حتى بيع القوالب تجاريا. يوجد العديد من مطوري القوالب الناجحين في أسواق مثل Themeforest و Mojo Marketplace وغيرها. ففي وقت كتابة هذا المقال، أشهر قالب على موقع Themeforest تم بيع 1377 نسخة منه في أسبوع أي أكثر من $81,000 في أسبوع واحد فقط! يمكنك الحصول على الكثير من الأموال إذا كنت تستطيع تطوير قالب مميزة. على الرغم من أن هذا المبلغ لا يحققه جميع مطوري القوالب، وربما لن تصبح مليونيرًا بين عشيّة وضحاها من إنشاء القوالب، لكن يمكنك الحصول على مبلغ مالي جيد من القوالب إذا كنت تقوم بالأمر بالشكل الصحيح. إذا أردت رؤية بعض الأمثلة عن القوالب الشهيرة، فألق نظرة على الأسواق التي ذكرناها أعلاه، أو على قسم قوالب ووردبربس حيث جميع القوالب مجانية، فالكثير من مطوري القوالب يصدرون أعمالهم الأولى في هذا القسم. يمكنك تعلم كيفية إنشاء قوالب ووردبريس في أكاديمية حسوب من خلال سلسلة الدروس مدخل إلى تطوير قوالب ووردبريس. الملحقات plugins بطريقة ما، تعتبر المُلحقات شريان حياة ووردبريس، فهي تحوله إلى كل شيء من منتدى إلى شبكة اجتماعية أو منصة للتجارة الإلكترونية وغيرها باستخدام ضغطة زر واحدة، فالمُلحقات تعطيك تحكمًا كاملًا بجميع جوانب نظام ووردبريس، وتسمح لك بتعديل ما تشاء، وسيساعدك هذا كثيرا عند إنشاء مواقع ووردبريس للعملاء. كما هي الحال مع القوالب، فالمُلحقات تملك أيضا أسواقا وفي العادة يتم إدارتها من نفس الشركات التي تدير أسواق القوالب. يعتبر سوق CodeCanyon على سبيل المثال أكبر سوق للملحقات حيث يملك أكثر من 4000 ملحق متاحة للشراء. على الرغم من أن المبيعات ستكون أقل من القوالب إلا أنه يمكنك ربح الكثير إذا أنشأت ملحقًا جيدًا. يملك موقع ووردبريس قسمًا للملحقات المجانية ويحتوي على أكثر من 40000 ملحق، وهو بذلك مصدر كبير للأدوات والإلهام والأمثلة على الشيفرات البرمجية المميزة (والشيفرات البرمجية السيئة للأسف). يمكنك تعلم كيفية إنشاء ملحقات وإضافات ووردبريس في أكاديمية حسوب من خلال سلسلة الدروس مدخل إلى برمجة إضافات ووردبريس. REST API ستستخدم REST API لاحقا عندما تحترف تطوير القوالب والمُلحقات، ونظريا ستكون قادرا على استخدامها إذا كانت لديك خبرة في البرمجة بلغة أخرى مثل جافا أو روبي. تعتبر REST API جديدة نسبيا وتسمح لك بإنشاء تطبيقات حقيقية بالاعتماد على ووردبريس، وهذا يتضمن تطبيقات أندرويد وأيفون وغيرها. أفضل طريقة لشرح هذه الميزة هي عن طريق مقارنتها بمواقع مثل تويتر أو انستغرام، لا شك أنك قد رأيت تغذية تويتر معروضة على موقع أحدهم، ولإضافة هذه الميزة إلى موقعك لن تحتاج إلى معرفة كيفية عمل نواة شيفرة البرمجية الخاصة بتويتر، كل ما تحتاجه هو القليل من الشيفرات البرمجية التي تقول: "من فضلك استرجع آخر خمسة من تغريداتي." وسيتعامل تويتر مع الباقي وسيرجع لك بيانات آخر خمسة تغريدات التي طلبتها، وبعد ذلك يمكنك استخدام HTML و CSS لعرضها. وهذا بالضبط ما يفعله REST API لووردبريس، يمكنك الاتصال بأي موقع وطلب منه آخر خمسة مشاركات فيها، ويمكنك أيضا القيام بأكثر من ذلك: يمكنك إنشاء/حذف المستخدمين وتعديل الفئات وغيرها (بالطبع، تحتاج إلى الاستيثاق قبل استخدامها)، هذا يعني أنه يمكنك استخدام ووردبريس كمستودع للمعلومات وبناء واجهة أمامية وبنية خلفية باستخدام نظام مختلف تماما. النواة ساهم في تطوير ووردبريس مجتمع من الآلاف المتطوعين حول العالم، حيث أنه يعمل 471 شخص على الإصدار 4.4 من ووردبريس، والعديد من الأشخاص الآخرين يعملون على جوانب مختلفة من ووردبريس، من الترجمة وتطبيقات الويب إلى الإتاحة (accessibility) والدعم. في الحقيقة، يمكنك الاشتراك معهم الآن، فبينما تحتاج إلى بعض الخبرة للمشاركة في برمجة نواة ووردبريس إلا أنه يمكنك المساهمة في تحديد المشاكل والأخطاء والتأكد منها وتقديم الأفكار في أي وقت باستخدام WordPress Trac، وهو المكان الذي يمكنك من متابعة تطوير شيفرة نواة ووردبريس. إذا وجدت علة (خطأ - bug) يمكنك إرفاقها بالشيفرة المناسبة للتخلص منها، وبعد عدة مراجعات وتدقيقات سيتم استخدام شيفرتك البرمجية إذا كانت مناسبة، وهذه هي أفضل طريقة للمشاركة في تطوير النواة. تطوير ووردبريس: ماذا تحتاج أن تتعلمه يجب أن تعتاد على العمل على مجموعة محددة من الأدوات حتى تتمكن من تطوير ووردبريس. إن عملية التعلم لا تنتهي بالنسبة إلى أي مطور جيد، سوف أعرض عليك هنا حزمة للبداية كما سأريك بعض الأدوات المتقدمة التي قد تحتاج إليها لاحقا عندما تريد أن تتعلم المزيد. الحد الأدنى من المتطلبات لتطوير الووردبريس هي HTML و CSS و PHP، بالإضافة إلى هذه اللغات ستحتاج إلى جافا سكربت و MySQL في مرحلة ما، عندما تتقن هذه اللغات يمكنك الانتقال إلى أشياء أخرى مثل LESS/SASS و Coffeescript و XML و JSON وغيرها، لكن هذه الأشياء لا تعتبر ضرورية لتطوير ووردبريس، لكن إذا عرفتها سيجعل حياتك أسهل كمطور وستوسع آفاقك. HTML و CSS أول لغتين يجب عليك تعلمهما هما HTML و CSS، مهما كانت الشيفرة البرمجية التي تكتبها ومهما كانت اللغة التي تستخدمها فستحتاج حتما إلى HTML عند إرسال صفحات الويب إلى المستخدم وإلى بعض CSS لتصميم وتزيين الصفحة. إن HTML مسؤولة عن إعطاء هيكل المواقع. على المستوى الأساسي، هذا يعني أنك ستقرر ما النص الذي يجب أن يكون عنوانًا وما يجب أن يكون قائمة وما الذي يجب أن يكون في رأس أو أسفل الصفحة. أما في المستوى الأعمق، ستقرر قرارات مهمة حول SEO والتحسين (optimization). يُستخدم CSS لتطبيق أنماط لهيكل HTML، أي أنك ستُعرّف لون النص والروابط والمسافة بين الفقرات ومحاذاة الصورة وألوان الحدود وسمكها وغيرها من العناصر عن طريق استخدام شيفرة CSS. إن CSS تتميز بسهولة تعلمها وبصعوبة إتقانها. PHP تحظى PHP بشعبية كبيرة كأشهر لغة سكربتات من جانب الخادوم server-side-، ووفقا للاستطلاع الذي قام به W3Techs، تستخدم PHP في 81.6% من المواقع وهي اللغة التي كُتب بها ووردبريس (وتقريبا أغلب أنظمة إدارة المحتوى الأخرى أيضا) ولذلك فإن معرفة PHP هو أمر ضروري لتطوير ووردبريس. إن معرفتك بـ PHP وحدها، سيجعلك تحصل على أكثر من معرفة بتطوير ووردبريس فقط. إن أهم فرق بين لغات جانب الخادوم عن لغات جانب العميل - مثل HTML - هو أنه يتم معالجتها في الخادوم أولا، ففي HTML، يمكنك كتابة شيفرة برمجية لـ Good Morning وسيرسلها HTML كما هي وسيعرضها على الزوار. أما في لغات جانب الخادوم، فستكتب شيء مشابه لهذا [good [time_of_day، وقبل أن يتم إرسال ذلك الأمر إلى المستخدم، سيعالج الخادوم هذه الأمر حتى يعرف ما يضعه في مكان [time_of_day] حسب الوقت الذي دخلت فيه إلى الموقع، فيمكنك أن ترى "Good day" أو "Good evening". لاحظ أن البيانات التي يستقبلها متصفحك تبقى HTML لكن تمت معالجتها في الخادوم مسبقا، ولاحظ أيضا أن الشيفرة السابقة لم تكن شيفرة PHP بل هي مثال فقط لأعطيك فكرة عن آلية عمل هذه اللغة. كما هو الحال مع جميع لغات البرمجة، فالممارسة والتمرين هي التي تجعلك تبرمج بشكل أفضل، فيمكنك تعلم PHP في غضون بضعة أيام لكنك ستجد نفسك أنك لا تملك أية فكرة عن ما الذي تقوم به، لذلك تحتاج إلى تجربة الأشياء وتخريبها وليس الوقوف دون معرفة ما يجري، وكما يقولون الممارسة تولد الإتقان. جافا سكربت ازداد دور جافا سكربت أهمية على الإنترنت، خاصة مع ظهور أدوات مبنية على جافا سكربت مثل Node و Angular. جافاسكربت تستخدم عادة لإضافة وظائف حيوية للمواقع وللتحميل غير المتزامن. سأعطيك مثال على كل واحد منها. فمثلا لو أردت أن يتم إخفاء نموذج بشكل كامل وأن يظهر ببطء داخل lightbox عندما يضغط المستخدم على زر معين، فيمكنك فعل ذلك باستخدام جافا سكربت بما أنه يمكنه التعامل مع تحريك الرسوم (animation) وربما الوظائف الأخرى، مثل التأكد من أنه تم ملئ النموذج بشكل صحيح قبل إرساله. أما التحميل غير المتزامن فيتم عمله عبر آلية تسمى بـ AJAX، فيمكنك استخدام AJAX للحصول على معلومات من الخادوم وعرضها دون إعادة تحميل الصفحة، وأبسط مثال لذلك هو التمرير اللانهائي (endless scrolling) فعندما يتم تحميل 10 مشاركات وتصل إلى نهاية الصفحة فسيتم عرض 10 مشاركات أخرى وتستمر هكذا. الكثير من المطورين تعلموا جافا سكربت من خلال إطار jQuery، فهو يُستخدم على نطاق واسع في ووردبريس وفي ملايين المشاريع على الإنترنت، وعلى الرغم من أن هذا الأمر جيد لكن ضع في اعتبارك أن جافا سكربت هو أكثر من مجرد jQuery وإن تعلم جافا سكربت كما هو هي فكرة جيدة. MySQL إن Mysql هي لغة تُستخدم للوصول والعمل مع البيانات المخزنة في قاعدة البيانات، يستخدم ووردبريس هذه اللغة كثيرا للتعامل مع البيانات، لكن كمطور، لا تحتاج إلى معرفة الكثير لأن ووردبريس يملك مجموعة من الدوال المساعدة. لكن في بعض الحالات الخاصة، قد تحتاج إلى كتابة استعلام قاعدة البيانات بنفسك أو ربما قد ترغب بتحسين شيء في موقعك، لذلك سيفيدك تعلم أساسيات MySQL. إن العمل مع قواعد البيانات واضح للغاية، فالجدول في قاعدة البيانات يشبه كثيرا جداول بيانات Microsoft Excel، فكل عمود يملك عنوانًا وبيانات مخزنة في الأسطر، ونستخدم MySQL لإضافة وحذف وتعديل واسترجاع البيانات، ربما ترغب بكتابة استعلام MySQL يرجع لك جميع المشاركات التي تحتوي على كلمة "awesome" ولديها أكثر من 8 تعليقات، أو قد ترغب أيضا بإيجاد جميع المستخدمين الذين يملكون اسم "Daniel". مرة أخرى، إن كتابة شيفرة MySQL خام في ووردبريس هو أمر نادر، لكنه يحدث في بعض الأحيان، لذلك فإن فهم كيفية عمل اللغة سيساعدك على كتابة شيفرات أفضل بشكل عام أدوات متقدمة بمجرد أن تتعود على الأقل على استخدام ثلاثة اللغات الأساسية - HTML و CSS و PHP - يمكنك البدء باكتشاف العديد من الأدوات المساعدة، واحدة من الأشياء الأولى التي يميل الناس إلى تعلمها هي LESS و/أو SASS، كلاهما "مجموعات موسّعة" (Superset) لـ CSS، أي أن أي شيفرة CSS صحيح تعتبر صحيحة في شيفرة LESS و SASS، وتكمن أهمية إضافة هاتين اللغتين هو إمكانية استخدام متغيرات ودوال و غيرها في CSS، والذي هو غير ممكن بشكل افتراضي. إن أدوات البناء (Build tools) هو شيء سترغب في اكتشافه عند مرحلة معينة، أفضلها Gulp و Grunt فهذان يمكنهما مراقبة تعديلات الملفات وتنفيذ مختلف المهام عند استيفاء المتطلبات، فعلى سبيل المثال، في أي وقت تعدل فيه ملف SASS يمكنك ترجمته تلقائيا إلى CSS وحفظه إلى ملف معين، أو يمكنك تحسين الصور أو دمج الملفات أو تحميل الحزم الخارجية فجميع المهام الأخرى يمكنك أن تفعلها باستخدام هذه الأدوات. سطر الأوامر أو الطرفية (terminal) هو شيء يجب أن تلقي نظرة عليه. نعم إن استخدام سطر الأوامر قد يبدو مخيفا لكنه ليس كذلك، فبمجرد كتابة بضعة أوامر يمكنك حفظ الكثير من الوقت، فسكربت/أداة مثل WP-CLI يمكنه تثبيت ووردبريس في بضعة ثواني، بما في ذلك تثبيت القوالب والمُلحقات والمحتويات للتجربة والتي لو قمت بها بشكل يدوي ستتطلب الكثير من الوقت والجهد. إن أنظمة االتّحكّم في الإصدارات (Version control) هي من الأدوات المفيدة للغاية فلن تعرف حاجتك إليها إلا لو استخدمتها، فعلى الرغم من أنها وُضعت أصلا للعمل على نفس الشيفرة البرمجية في مجموعات إلا أنه يمكنك استخدامها كحل لإدارة المشاريع والمشاكل والنسخ الاحتياطي في نفس الوقت. ويعتبر كل من SVN و Git الأشهر على الإطلاق، لكن بالنسبة لي، أعتبر أن Git أفضل نظرا لأنه يعمل بشكل أفضل وبسبب Github الذي يوفر خدمة استضافة مستودعات Git على الإنترنت. ووردبريس: بوابتك إلى عالم البرمجة إن أفضل شيء بالنسبة إلى ووردبريس أنه يمكن أن يكون مدخلا لتعلم مهارات تطوير ويب ولغات أخرى. ولقد خضت هذه التجربة شخصيا، فلقد تعلمت أولا البرمجة الموجهة في PHP ثم تعلمت إطار عمل Laravel وأدوات البناء ثم LESS/SASS وأدوات سطر الأوامر وغيرها الكثير. ولقد خضت أيضا في غمار native app باستخدام #C وغيرها من اللغات. بمجرد معرفتك بكيفية عمل كل شيء، ستتعلم المزيد عند إنشاء مشاريع جديدة وكبيرة وكل شيء سيصبح أسهل، فبعد البرمجة كائنية التّوجّه في PHP لن تبذل الكثير من الجهد في تعلم #C لأن دماغك سيتعود على منطقه بطريقة مشابه لتعلم قيادة الشاحنات بعد تعلمك قيادة السيارات، فعلى الرغم من وجود الكثير من الاختلافات لكن بمجرد أن يكون لديك بعض الأساسيات سيسهل عليك التّحكمّ فيه. خاتمة ها قد عرفت الآن ما الذي تحتاجه للبدء في تطوير موقع ووردبريس، وقد تشعر بالإرباك، لكن لا تقلق، فالجميع سيشعر بذلك في هذه المرحلة. تذكّر أمرًا: من المهم أن لا تثبط عزيمتك، فجميع المبرمجين بدؤوا من مكان ما، فالكثير منهم كان سيئا للغاية عندما بدأ، يصارع لفهم المفاهيم الجديدة وشعر بالإحباط، لكنهم لم يستسلموا وكانوا دائما يدفعون أنفسهم للتّعلّم وهذا ما يُميّز المبرمج الجيد من السيئ. ترجمة -وبتصرف- للمقال: WordPress Development for Beginners: Getting Started لصاحبه Daniel Pataki. حقوق الصورة البارزة: Designed by Freepik.
  19. إذا كنتَ تعد موقعًا ليستخدمه أشخاصٌ غير متخصصين في التقنية، فسيساعد تخصيص لوحة تحكم ووردبريس في تسهيل إدارتهم لموقعهم ولتعاملهم مع المحتوى. أغلبية المواقع التي أُنشئها تكون لعملاء ليسوا معتادين على التعامل مع ووردبريس وليس لديهم الوقت الكافي لتعلمه كي يديروا موقعهم، لذلك أجنح إلى تخصيص لوحة التحكم لتسهيل عملهم. وعادةً أضيف علامتي التجارية إلى لوحة التحكم كي أذكرهم مَن الذي طوّر الموقع لهم. التعديلات والتخصيصات التي أجريها تختلف بناءً على احتياجات كل عميل، لكنها تتضمن عادةً واحدًا أو أكثر من ما يلي: إضافة علامتي التجارية إلى صفحة تسجيل الدخول بوضع الشعار الخاص بي. إضافة علامتي التجارية إلى صفحات لوحة التحكم، بدءًا من أشياءٍ بسيطة مثل تغيير نص الترويسة (header) أو التذييل (footer) مرورًا بتغيير الألوان وتخطيط الصفحات. إزالة "الودجات" (widgets) التي لا يحتاج لها العميل، وإضافة أخرى تُقدِّم تمهيدًا إلى الموقع، وما الذي عليهم معرفته للبدء باستعمال الموقع. إزالة عناصر من قائمة لوحة التحكم التي لا يحتاج العميل إلى الوصول إليها، وإضافة أخرى إن لزم الأمر. إضافة حقول مخصصة (custom fields) لتسهيل إضافة البيانات من قِبل العملاء. توفر ووردبريس عددًا من الدوال وما نسميه "hooks" التي تساعدك إن أردت كتابة الشيفرات يدويًا، وهذا ما أفعله عادةً (أضع كل شيء في إضافة مخصصة)، لكن إن لم تكن ترغب بالخوض في البرمجة وكتابة الشيفرات أو كنتَ على عجل، فقد تكون الإضافات هي الطريق الأيسر والأسرع لتحقيق مبتغاك. لنبدأ بكبيرها! Ultimate Branding تملك إضافة Ultimate Branding كل ما تحتاج له عندما يأتي الأمر إلى تخصيص لوحة التحكم، فلا تسمح لك بتخصيص صفحات لوحة التحكم فحسب، وإنما تعطيك خياراتٍ تتعلق بتخصيص الواجهة الأمامية (front end) إلى نفس نمط شبكتك من المواقع إن كُنت تستخدم نسخة مُتعدّدة المواقع من ووردبريس wordpress multisite. لكن إضافة Ultimate Branding ليست مفيدة فقط لشبكات المواقع، إذ يمكنك استعمالها عند تثبيت ووردبريس بشكلٍ قياسي لكي تضع علامتك التجارية في الصفحات الإدارية، وتخصص صفحة تسجيل الدخول، وتحذف عناصر القائمة التي لا تريدها وتغير ترتيب بعضها، وتُنشِئ شريط لوحة التحكم الخاص بك، والكثير. يمكن تفعيل أو تعطيل كل تلك الميزات من لوحة التحكم، لذلك تستطيع أن تستعمل منها ما تشاء لموقعك، كما ترى في لقطة الشاشة الآتية: White Label CMS إضافة White Label CMS هي أشهر إضافة مجانية لتخصيص لوحات التحكم، حيث تسمح لك بإضافة شعار في صفحة الدخول، وإضافة وحذف ودجات لوحة التحكم، وإخفاء بعض الصناديق في صفحات التحرير، وإزالة بعض عناصر قائمة لوحة التحكم، وإضافة أنماط CSS في الأماكن التي تريد. ليست ميزات هذه الإضافة بقوة الإضافة Ultimate Branding، وقد يُربِك المستخدمَ وجود كل الإعدادات المتعلقة بهذه الإضافة في صفحةٍ وحيدةٍ، لكنها مجانية وتملك وظائف تشمل تقريبًا كل وظائف الإضافات المجانية المتوفرة. Admin Menu Editor إذا كان ما تريده هو إضافة أو حذف أو إعادة ترتيب أو تعديل عناصر قائمة لوحة تحكم ووردبريس، فإضافة Admin Menu Editor تُسهِّل عليك الأمر. الميزة التي أحبها كثيرًا هي السماح لك بتعديل النص لكل عنصر من قائمة لوحة التحكم، فلو كنت تبني موقعًا لعميلٍ سيستعمل "المقالات" لنشر الأخبار، فيمكنك تغيير كلمة "مقالات" في قائمة لوحة التحكم إلى "أخبار". تعمل هذه الإضافة بشكلٍ مشابه كثيرًا لصفحة "تحرير القوائم" في ووردبريس. يمكنك أيضًا إعادة ترتيب عناصر القائمة، أو إخفاؤها من المستخدمين الذين لا يملكون الامتيازات اللازمة للدخول إليها. تسمح لك النسخة المدفوعة من الإضافة بنقل عناصر القوائم الفرعية إلى قوائم رئيسية أخرى، وهذا قد يفيدك إن كنت تحذف الكثير من عناصر قائمتين رئيسيتين وتريد دمج ما تبقى منهما. Post Type Archive Link أحد الأشياء التي تزعجني في ووردبريس هو مدى صعوبة إضافة رابط إلى أرشيف نوعٍ مخصصٍ من المنشورات (custom post type) إلى قوائم التنقل. الطريقة الوحيدة لفعل ذلك هي معرفة رابط URL لأرشيف النوع المخصص من المنشورات ثم إضافته كرابط مخصص… لكن ذلك صعبٌ عليك إن لم تكن تألف طريقة توليد ووردبريس للروابط. تحل إضافة Post Type Archive Link هذه المشكلة، إذ تضيف مكانًا لنوع المنشورات المخصص إلى قائمة لوحة التحكم، مما يسمح لك بإضافة رابط لكل نوع منشورات في قائمة التنقل. إن كنتَ تستعمل ووردبريس كنظام إدارة محتوى ولديك عدِّة أنواع مخصصة من المنشورات، فستفيدك هذه الإضافة كثيرًا. Media Library Assistant إذا احتوى موقعك على الكثير من ملفات الوسائط التي عليك إدارتها بطريقةٍ أكثر فعاليةً من الطريقة الافتراضية، فستساعدك إضافة Media Library Assistant في ذلك. حيث تسمح لك بإضافة تصنيفات ووسوم إلى ملفات الوسائط وتعرض أيضًا معلومات حول كل ملف وسائط في صفحة "مكتبة الوسائط"، مثل أيّة منشورات تستعمل الصورة كصورة بارزة، مع رابط للمنشور. قد تستفيد من هذه الإضافة في حال احتجت إلى تبديل أو إزالة صورة وكنتَ تعرف اسم ملف الصورة لكنك لم تذكر أين رفعتها. Login Logo هذه الإضافة بسيطة للغاية، وقد برمجها أحد مطوري ووردبريس نفسها (Mark Jaquith)، تسمح إضافة Login Logo لك بتغيير الشعار في صفحة تسجيل الدخول الخاصة بووردبريس بنسخ ملف اسمه login-logo.png إلى مجلد wp-content. كل ما عليك فعله هو تفعيل الإضافة، ثم رفع الملف وسيظهر شعارك بدلًا من شعار ووردبريس. عندما تحاول الوصول إلى هذه الإضافة في “دليل الإضافات”، فستجد تحذيرًا يقول لك أنَّ هذه الإضافة لم تُحدَّث منذ أكثر من سنتين، لا تقلق من ذلك: فهذه الإضافة بسيطة جدًا ولا حاجة لتحديثها، وقام بتطويرها -كما أشرنا-مطوِّر يمكنك أن تثق به. Dashboard Widget Order قد تكون "ودجات" لوحة التحكم مفيدةً للغاية، فهي تعطي المستخدمين معلوماتٍ حول موقعهم، وتسهِّل لهم إنشاء محتوى جديد، وتساعدهم في البدء باستخدام ووردبريس. لكن أحد الأشياء التي أجدها مزعجةً هو أنَّك لا تستطيع تحديد الترتيب الافتراضي لتلك الودجات. يمكنك حذفها أو إضافتها، لكنك لن تستطيع إعادة ترتيبها ما لم تكتب شيفراتٍ معقدة. تحل إضافة Dashboard Widget Order هذه المشكلة، لكنها تعمل في بيئة متعددة المواقع لكنها تسمح لك بسرعة أن تعيد ترتيب الودجات في لوحة التحكم، وهذا يعني أنَّه في كل مرة يُنشَأ فيها مستخدمٌ جديدٌ في شبكتك، فستعلم تمامًا كيف ستبدو لوحة التحكم بالنسبة إليهم. Dashboard Feeds إذا كنتَ تُنشِئ مواقع لعملاء ليسوا مطوري ويب وليسوا مهتمين بووردبريس، فهنالك احتمالٌ كبيرٌ أنَّك ستحذف ودجت "أخبار ووردبريس"، لكن تستطيع فعل ما هو أكثر فائدةً، ألا وهو وضع ودجت أخبار أخرى! تسمح لك إضافة Dashboard Feeds بفعل ذلك: أضف ما تشاء إضافته من تغذية RSS وستملأ هذه الإضافةُ لوحةَ التحكم بودجت لكلٍ منها. إذا كنتَ تُنشِئ موقعًا ذا مجالٍ معيّن، فربما تُضيف أخبارًا من نفس المجال. أو إذا أردت أن تحمِّس مستخدمين وعملائك بتصفح محتوى الموقع، فيمكنك إضافة تغذية RSS من موقعك نفسه! الخلاصة يُسهِّل تخصيص لوحة تحكم ووردبريس العمل كثيرًا للعملاء والمستخدمين، ويمكن أن يساعدك في نشر علامتك التجارية، وذلك بعرض معلوماتٍ عنها، أو إظهار محتوى من موقعك. إن استعملتَ الإضافات السابقة، ستتمكن من إنشاء لوحة تحكم رائعة لمستخدميك وعملائك التي تعكس مدى احترافية عملك في تعديل مواقعهم. هل خصصت لوحة التحكم في موقعك؟ ما هي التغييرات التي تجريها عادةً؟ هل هنالك تخصيصات تفعلها لعملاء محددين؟ أخبرنا ذلك في التعليقات. ترجمة -وبتصرّف- للمقال Customizing the WordPress Admin Experience for Novice Clients لصاحبه Rachel McCollin.
  20. هذا هو الدرس الأخير من هذه السلسلة، ففي الدرس الأول قمنا بتصميم الواجهة باستخدام برنامج الفوتوشوب، وفي الدرس الثاني قمنا بتحويل التصميم إلى نموذج HTML5، أمّا في هذا الدرس فسوف نقوم ببناء قالب ووردبريس كامل وجاهز للاستخدام. إذا كان هذا هو أول درس تتابعه من هذه السلسلة فدعني أخبرك قليلًا عنها. أردنا في هذه السلسلة بناء قالب ووردبريس كامل، وكما ذكرت سابقًا فهذا هو الدرس الثالث والأخير من هذه السلسلة. وقلنا بأنّ اسم القالب سيكون "Typo" وبأنه سيعتمد بشكل كلي على فن Typography من دون استعمال أي صور حتى يكون التركيز بالكامل على المحتوى. اضغط هنا لمعاينة القالب بشكله النهائي. ملفات قالب الووردبريس بما أنّ القالب بسيط فسوف نقوم بإنشاء القالب باستخدام ملفات القوالب المعتادة والمألوفة، كما أنّه سيتم تقسيم نموذج HTML5 الذي قمنا بإنشائه سابقًا على ملفات القالب من أجل إنشاء الصفحات المختلفة للقالب. سنقوم أيضًا بنسخ جميع الصور وملفات CSS إلى مجلد القالب. ملف Style.css الخاص بالقالب Theme Name: Typo Theme URI: http://blog.spoongraphics.co.uk/ Description: A premium theme by Chris Spooner of Blog.SpoonGraphics. Version: 1.0 Author: Chris Spooner Author URI: http://blog.spoongraphics.co.uk/ body, div, h1, h2, h3, h4, h5, h6, p, ul, ol, li, dl, dt, dd, img, form, fieldset, input, textarea, blockquote { margin: 0; padding: 0; border: 0; } body { background: #dedede url(images/bg.jpg); font-family: 'Droid Serif', serif; font-size: 14px; line-height: 24px; color: #666; } قمنا في بداية الملف بإضافة مجموعة من التفاصيل التي تخص القالب حتى يتعرف عليه الووردبريس، كما أننا قمنا بنسخ بعض التنسيقات الموجودة في نموذج HTML5 الذي أنشأناه سابقًا. ملف Header.php <!doctype html> <html> <head> <meta charset="UTF-8"> <title><?php wp_title('&laquo;', true, 'right'); ?> <?php bloginfo('name'); ?></title> <link href="<?php bloginfo('stylesheet_url'); ?>" rel="stylesheet" /> <link href="http://fonts.googleapis.com/css?family=Droid+Serif:400,400italic" rel="stylesheet" /> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <!--[if lt IE 9]> <link href="<?php bloginfo('template_url); ?>/css/ie.css" rel="stylesheet" /> <![endif]--> <!--WP generated header--> <?php wp_head(); ?> <!--End WP generated header--> </head> <body> <div id="container"> <header> <h1><a href="<?php echo get_option('home'); ?>" title="Return to the hompage">Typo</a></h1> <nav role="navigation"> <ul> <li><a href="<?php echo get_option('home'); ?>">Home</a></li> <?php wp_list_pages('title_li=' ); ?> </ul> </nav> </header> قمنا بنسخ الجزء الأول من الشيفرة البرمجية الموجودة في ملف index.html الخاص بالنموذج إلى ملف header.php. فقد قمنا بنسخ كل شيء ابتداءً من Doctype وانتهاءً بمحتويات الوسم <head> ووضعناه في ملف header.php، بعد ذلك أضفنا بعض الوسوم الخاصة بقوالب ووردبريس، وكمثال على ذلك فقد قمنا بإضافة <? ;()php wp_title?> لإظهار عنوان التدوينة أو الصفحة و<? ;('php wp_list_pages('title_li?> لعرض قائمة بجميع الصفحات، فالقيمة title_li استخدمت لإزالة الإعداد الإفتراضي الذي يقوم بإظهار العنوان "Pages" أعلى القائمة. ملف Index.php <?php get_header(); ?> <div id="content" role="main"> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <article <?php post_class(); ?>> <h2 class="post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <? php the_content(''); ?> <ul class="postinfo"> <li><?php the_time('jS F Y'); ?></li> <li>Posted in <?php the_cetegory(', '); ?></li> <li><a href="<? php the_permalink(); ?>">Continue Reading &raquo;</a></li> </ul> </article> <?php endwhile; ?> <nav id="pagination"> <ul> <li class="older"><?php next_posts_link('Older posts'); ?></li> <li class="newer"><?php previous_posts_link('Newer posts'); ?></li> </ul> </nav> <? php else : ?> <article class="nothing"> <h2>Nothing Found</h2> <p>Sorry, but you are looking for something that isn't here</p> <p><a href="<?php echo get_option('home'); ?>">Return to the homepage</a></p> </article> <?php endif; ?> </div> <?php get_sidebar(); ?> <?php get_footer(); ?> قمنا بعد ذلك بنسخ الشيفرات البرمجية من عند نهاية ما هو موجود في ملف header.php وحتى بداية القائمة الجانبية، بعدها أضفنا حلقة ووردبريس (WordPress loop) لنتفحص فيما إذا كان هناك محتوى/تدوينات أم لا. وإذا كنت تذكر ففي ملف HTML الثابت الذي أنشأناه سابقًا قمنا بوضع 3 تدوينات بنصوص عشوائية، ولكننا الآن لن نحتاج لها لأن الووردبريس سوف يعرض التدوينات باستخدام الكود الموجود بين while وendwhile، ففي داخل هذه الحلقة تبقى بنية HTML موجودة ولكن العناصر التي تحتاج أن تكون متغيرة/ديناميكية (dynamic) استُبدِلت بوسوم PHP مناسبة، فعلى سبيل المثال فإنّ الكود <? ;()php the_permalink?> سوف يعرض عنوان URL الخاص بالتدوينة داخل وسم <a> وأمّا الكود <? ()php the_category?> سوف يقوم بعرض فئة التدوينة. وبالنسبة للمحتوى العشوائي فإنه يمكن استبداله بوسم واحد وهو <? ;()php the_content?> بحيث سيقوم الووردبريس بإدخال كل المحتوى المحفوظ في قاعدة البيانات من محرر النصوص بدل ذلك الوسم. أمّا في أعلى وأسفل هذا الملف فقد قمنا باستدعاء ملفات القالب للحصول على صفحة كاملة، فالوسم <? ;()php get_header?> يقوم بمناداة وإدخال ملف header.php، بينما يقوم الوسم <? ;()php get_sidebar?> بمناداة وإدخال ملف sidebar.php وهكذا بالنسبة لجميع الملفات. ملف Sidebar.php <aside id="sidebar"> <section id="about"> <h3>About me</h3> <p><?php echo get_option('omr_about_excerpt');?> <a href="<?php echo get_option('omr_about_link');?>">Find out more &raquo;</a></p> </section> <section id="categories"> <h3>Categories</h3> <ul> <?php wp_list_categories('show_count=0&title_li=&hide_empty=0&exclude=1'); ?> </ul> </section> <section id="social"> <h3>Social</h3> <ul> <?php if( !get_option('omr_social-one') ) { ?> <?php } else { ?> <li><a href="<?php echo get_option('omr_social-one_url');?>"><?php echo get_option('omr_social-one');?></a></li> <?php } ?> <!-- more custom tags for theme settings page --> <?php if( !get_option('omr_social-six') ) { ?> <?php } else { ?> <li><a href="<?php echo get_option('omr_social-six_url');?>"><?php echo get_option('omr_social-six');?></a></li> <?php } ?> </ul> </section> <section id="latest"> <h3>Latest Posts</h3> <ul> <?php query_posts('showposts=6'); if ( have_posts() ) : whitle ( have_posts() ) : the_post();?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; else: ?> <li>No posts found</li> <?php endif;?> <?php wp_reset_query();?> </ul> </section> <section id="search" role="search"> <h3>Search</h3> <form action="<?php bloginfo('url'); ?>/" method="get"> <fieldset> <input type="text" id="searchbar" placeholder="I'm looking for&hellip;" name="s" /> <input type="submit" id="searchsubmit" value="Search" /> </fieldset> </form> </section> </aside> الجزء التالي هو القائمة الجانبية بحيث تكون عناصره بين وسمي <aside>. نفس القاعدة تنطبق على أي محتوى عشوائي بحيث يتم استبداله بوسم PHP بحيث يتم ادخال المحتوى بشكل ديناميكي. ومن الأمثلة على ذلك <? ;()php wp_list_categories?> مع مجموعة من المتغيرات لتخصيص مخطّط الصفحة (layout). في هذا القالب هناك الكثير من الوسوم المخصصة التي تسمح للمستخدم بتخصيص القالب كما يريد باستخدام صفحة إعدادات خاصة، فجميع الوسوم التي تبدأ بـ _omr تقوم باستدعاء إعدادات مخصصة مثل جزء About وروابط الشبكات الاجتماعية. ملف Footer.php <footer> <ul id="credits"> <li class="wordpress"><a href="http://wordpress.org">Powered by WordPress</a></li> <li class="spoonghraphics"><a href="http://blog.spoongraphics.co.uk">Theme by SpoonGrahpics</a></li> </ul> <p id="back-top"><a href="#">Back to top</a></p> </footer> </div> <!-- <?php echo get_num_queries(); ?> queries. <?php timer_stop(1); ?> seconds. --> <!--WP generated footer--> <?php wp_footer(); ?> <!--END WP generated footer--> </body> </html> ملفات Archive.php وSearch.php <footer> <ul id="credits"> <li class="wordpress"><a href="http://wordpress.org">Powered by WordPress</a></li> <li class="spoonghraphics"><a href="http://blog.spoongraphics.co.uk">Theme by SpoonGrahpics</a></li> </ul> <p id="back-top"><a href="#">Back to top</a></p> </footer> </div> <!-- <?php echo get_num_queries(); ?> queries. <?php timer_stop(1); ?> seconds. --> <!--WP generated footer--> <?php wp_footer(); ?> <!--END WP generated footer--> </body> </html> البنية الرئيسية للصفحة يتم إنشاؤها باستخدام header.php ،index.php ،sidebar.php وfooter.php، ولكن index.php تُستخدم فقط في الصفحة الرئيسية (إذا كانت هناك تدوينات ليتم عرضها على الصفحة الرئيسية). هناك بدائل لـ index.php يتم استخدامها لخصائص متعددة في المدونة مثل تصفح التدوينات بناءً على ترشيح (filter) معين (كالترشيح حسب الفئة أو التاريخ أو حتى حسب الكاتب)، أو عند تصفح التدوينات بناءً على نتيجة بحث معينة. هنا يأتي دور archive.php وsearch.php، فمحتوى هذين الملفين يشبه إلى حد كبير محتوى ملف index.php باستثناء أنّ هذين الملفين يحتويان على عناوين إضافية لوصف المحتوى المعروض على الصفحة. ملفات Page.php وSingle.php <?php get_header(); ?> <div id="content" role=''main"> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <artic1e <?php post_c1ass(); ?>> <h2 c1ass="post-title"><?php the_title(); ?></h2> <?php the_content("); ?> </article> <?php endwhile; ?> <?php endif; ?>> </div> <?php get_sidebar(); ?> <?php get_footer(); ?> <?php get_header(); ?> <div id="content" role=''main"> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <artic1e <?php post_c1ass(); ?>> <h2 c1ass="post-title"><?php the_title(); ?></h2> <?php the_content("); ?> </article> <?php endwhile; ?> <?php endif; ?>> </div> <?php get_sidebar(); ?> <?php get_footer(); ?> عندما يتم تصفّح تدوينة أو صفحة واحدة فإنّ ملفات index.php ،archive.php أو search.php يتم استبدالها بملفات page.php أو single.php. هذه الملفات أيضًا متشابهة ولكن التخطيط الخاص بها عادةً لا يحتوي على بعض الخصائص مثل رابط العنوان (يصبح العنوان نص عادي وليس رابط)، معلومات التدوينة، اقرأ المزيد وروابط ترقيم الصفحات (pagination) لانّ هذه الأمور لم تعد مطلوبة ومهمة عند تصفح المحتوى أو التدوينات بشكل فردي. كما أنّ ملف single.php يحتوي على قسم التعليقات وقد تمت إضافته باستخدام وسم <? ;()php commentstemplate?>. ملف Comments.php <?php // Do not delete these lines if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) die (‘Please do not load this page directly. Thanks!'); if ( post_password_required() ) { ?> <p c1ass="nocomments">This post is password protected. Enter the password to view comments.</p> <?php return; } ?> <div id="comments"> <h3><?php comments_number('No Comments‘, '1 Comment’, '% Comments’ );?></h3> <?php if ( have_comments() ) : ?> <ol class="commentlist"> <?php wp_list_comments('avatar_size=&type=comment'); ?> <div class="pagination"> <p class="prev"><?php previous_comments_link(‘Older comments‘) ?></p> <p class="next"><?php next_comments_link(‘Newer comments‘) ?></p> </diV> <?php endif; ?> <?php if ( comments_open() ) : ?> <div id="respond"> <h3>Leave a response</h3> <form action="<?php echo get_option('siteurl'); ?> /wp-comments-post.php" method="post" id="commentform"> <fieldset> <label for="author">Name:</label> <input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" /> <label for="email">Email:</label> <input type=“text" name="email" id="email" value="<?php echo $comment_author_email; ?>" /> <label for="url">Website:</label> <input type="text" name="url" id="url" value="<?php echo scomment_author_url; ?>" /> <label for="comment">Comment:</label> <textarea name="comment" id="comment” rows="" cols=""></textarea> <input type="submit" class="commentsubmit" value="Submit" /> <?php comment_id_fields(); ?> <?php do_action('comment_form', $post->ID); ?> </fieldset> </form> <p class="cancel"><?php cancel_comment_reply_link('Cancel Reply'); ?></p> </div> <?php else : ?> <h3>Comments are now closed.</h3> <?php endif; ?> </div><!--Comments--> يمكنك القول بأنّ ملف comments.php هو أحد أكثر الملفات التي يمكن إعادة استخدامها في كل القوالب التي تصنعها لأنّ هذا الملف ومحتوياته لا يتغير كثيرًا. جميع التعليقات يتم إنشاؤها وإظهارها في الصفحة باستخدام وسم واحد فقط وهو <? ;()php wplistcomments?> ثم تحتاج إلى بعض تنسيقات CSS لتنسيق المحتوى، وفي نهاية الملف يوجد نموذج كتابة التعليقات. خاتمة يمكنك بعد إنشاء جميع ملفات القاب أن تقوم برفعها واختبارها على مدونة ووردبريس. حاول بعد ذلك تعديل بعض الإعدادات وإضافة بعض المحتوى (كتابة تدوينةأو تعليق مثلًا) حتى تتأكد أنّ كل شيء يعمل كما هو مطلوب. كما رأيت فعملية بناء قالب ووردبريس تتطلب نسخ ولصق العديد من الأكواد، وإذا كنت تبحث عن أي وسم لاستخدامه يمكنك اللجوء إلى موقع WordPress Codex فهو يحتوي على جميع الوسوم التي يمكنك استخدامها. يمكنك معاينة القالب من هنا. ترجمة -وبتصرف- للمقال: Create a Typography Based WordPress Blog Theme لصاحبه: Iggy.
  21. إن كنت تستعد لإطلاق موقع جديد، عليك أن تعلم أن إنشاء صفحة Coming Soon "سننطلق قريبا" متكاملة يعد العماد الأساس لتوفير دفعة بداية قوية حتى يتم إطلاق موقعك بزخم كبير عوض أن يمر مر السحاب بعيدا عن أعين المتتبعين. من حسن الحظ، يعد القيام بذلك أمرا سهلا عكس ما يبدو عليه من الصعوبة، لتحصل على تفاعل كبير من الزوار في يوم إطلاق موقعك ما عليك إلا أن تقوم ببعض التخطيط الدقيق والقليل من العمل الجاد. سنتطرق وإياكم في مقال اليوم إلى كيفية إنشاء صفحة "سننطلق قريبا" في ثلاث خطوات بالتفصيل، ما سيخولك القدرة على تحديد الأمور التي يجب أن تركز عليها بغرض الرفع من النتائج المرجوة من يوم إطلاق موقعك. الخطوة الأولى: تحديد الأهداف والمقاييس (Metrics) يعد تحديد هدف ما الخطوة الأولى قبل البدء في أي مشروع، بطبيعة الحال تسري هذه القاعدة أيضا على مشروعك لإنشاء صفحة "سننطلق قريبا". يمكن أن يكون لهذه الصفحة أثر كبير على إطلاق موقعك رغم أنها تظهر بشكل مؤقت فقط، لذى يجب عليك الحذر من عدم إنشائها على أتم وجه. لعلك لاحظت أني لم أتساءل حول هدفك من هذا المشروع، فهو واضح وضوح الشمس: تريد الحصول على زيارات سواء تعلّق الأمر بالمعجبين، العملاء أو سفراء علامتك التجارية (brand ambassadors). لتصل إلى هذه النتيجة عليك بناء خط تواصل بينك وبين أكبر عدد ممكن من الزوار. رغم تحمسك لإخبار الزوار بكل الأمور الرائعة التي ستقدمها على موقعك يجب أن تتذكر أن الحصول على معلومات اتصالهم يعتبر أكثر أهمية وذلك حتى تتمكن من التواصل معهم متى أردت. في هذا الصدد، عليك بالاختيار ما بين: بناء قاعدة متتبعيك على مواقع التواصل الاجتماعي (social media). بناء قائمة بريدية (email list). يمكن لاتخاذ هذا القرار أن يكون صعبا للغاية، هنالك العديد من الحجج التي تدعم أن بناء قائمة بريدية يجب أن يكون خيارك الأول. إضافة إلى كون المنافسة ستكون أقل (يعني ستصل رسالتك إلى بريد المُستقبل ولا توجد علامات تجارية أخرى تنافسك عبر إعلاناتها هناك مثلما هو عليه الحال مع الشّبكات الاجتماعية)، تتميز القوائم البريدية بسهولة التحكم كما أنك تستطيع تتبع مردوديتها من ناحية معدلات التحويل (conversion) بسهولة أكبر، كما يمكنك أن تقوم في أي وقت بتحويل المعجبين إلى متتبعين على مواقع التواصل بمجرد الحصول على معلوماتهم. ليس من الضروري أن تختار أحد الخيارين على حساب الآخر، عليك فقط بتحديد أحدهما كهدف أولي ثم القيام بتبسيط هذا الهدف إلى مقاييس (metrics) واضحة يمكنك الوصول إليها ثم تحرِّرُها على شكل "تصريح بالأهداف" (statement of intent). على سبيل المثال: هدفي هو بناء قائمة بريدية من 5000 مشترك أو أكثر خلال الحملة التي تسبق إطلاق الموقع، والتي ستستمر من الإثنين 29 يونيو إلى الإثنين 28 سبتمبر (يوم الإطلاق). سأعمل على تحويل %3 من الزوار الفريدين (unique visitors) إلى مشتركين في القائمة البريدية، ما يعني أنه يجب أن أقوم بجذب 167 000 زائر فريد خلال حملتي التي تسبق إطلاق الموقع. لاحظ استخدامي لأسلوب متفائل من خلال قولي: "سأعمل"، لا ضير في التحلي ببعض الثقة في النفس. الخطوة الثانية: إنشاء الصفحة بعد تحديدك الأهداف التي تبتغي تحقيقها، عليك إنشاء ما سيساعدك على الوصول إليها بشكل عملي. كما هو الأمر بالنسبة للعديد من الأمور على ووردبريس، يبتدأ العمل على إنشاء صفحة "سننطلق قريبا" من خلال اختيارك للملحق المناسب. هنالك العديد من الخيارات المتاحة أمامك، لتسهيل الأمور، سأعمل على حصرها في خيارين اثنين: Coming Soon يوفر ملحق Coming Soon نسخة مجانية تحتوي العديد من الخصائص فضلا عن نسخة مدفوعة رائعة. بعد تجربتي لكلتا النسختين في مشاريع مختلفة أصبح هذا الملحق هو المفضل لدي نظرا لسهولة الاستعمال فضلا عن تعدد الخصائص. WP Maintenance Mode تم تنصيب وتفعيل هذا المُلحق حوالي 300 000 مرة، يمكننا القول أن هذا الملحق أكثر شهرة من سابقه. يتسم WP Maintenance Mode بسهولة الاستخدام، سرعة الإعداد فضلا عن وضعه لأهم الخصائص بين يديك على طبق من فضة. يبقى القرار لك، يمكن الاختيار بينهما حسب احتياجاتك الخاصة فكلاهما كفيلان بالقيام بالعمل على أتم وجه. الخطوة الثالثة: صياغة الرسالة تشكل صفحة "سننطلق قريبا" تحديا إضافيا، فما إن يراها الزائر ويستوعب مضمونها سيعرف أنه لا يوجد أي شيء في الموقع ليطلع عليه ومن ثم سيسارع بالمغادرة، لذا من غير المحتمل أن يستغرق أكثر من ثانية أو ثانيتين في تفحصها ما يستوجب عليك عدم إضاعة الوقت، يجدر بك التركيز على الأهم فقط. يتوجب عليك إيصال رسالتك بسرعة واختصار، سواء كنت تبتغي بناء قائمة بريدية أو الحصول على متتبعين في المواقع الاجتماعية حاول أن تقدم مضمون رسالتك بشكل محَفِّز وجريء: من الواضح أن للمحفزات المادية قدرتها الخاصة على الجذب والإقناع. أثناء صياغتك مضمون رسالتك، يجب عليك أن تتقبل فكرة أن لا أحد من زوارك سيكون بقدر حماسك واهتمامك بما لديك لتقوله، عليك بالاختصار والتركيز: تقدم صفحة "سننطلق قريبا" التالية عروض البيع التي سيوفرها الموقع بشكل جيد للغاية في أقل عدد ممكن من الكلمات. عندما يتعلق الأمر بالتسجيل في الموقع، لا تكثر من الخيارات المتاحة للمستخدمين. أنصحك بأن تكتفي بالتسجيل باستخدام البريد الإلكتروني كبداية، بمجرد حصولك على انتباهه اِعرض عليه مُتابعتك على مواقع التواصل الاجتماعي. إن أردت أن تقدم إمكانية الاطلاع على محتواك في مواقع التواصل الاجتماعي يمكنك استخدام بعض الأزرار الواضحة بكل سلاسة في مكان ما على صفحتك، لن يكون لها أي تأثير سلبي في أغلب الأحيان: الخطوة الرابعة: إطلاق صفحة "سننطلق قريبا" يتطلب تطوير موقع إلكتروني الكثير من الوقت، لذا من البديهي أن تستخدم هذا الوقت لصالحك. يضعك القيام بذلك في موقف أقوى حينما يحين موعد الإطلاق. خير البر عاجله يساعد إنشاؤك لصفحة "سننطلق قريبا" مبكرا خلال مرحلة ما قبل الإطلاق على إتاحة الوقت الكافي لتوفير الزخم ودفعة الانطلاق الضروريين. يمكن أن تتراوح مدة عرضك لهذه الصفحة بين 6 و12 شهرا ما يعتبر أمرا مألوفا، عليك فقط أن تتذكر ضرورة الحفاظ على اهتمام وتفاعل الزوار خلال المرحلة السابقة للإطلاق. خذ على سبيل المثال قصة تحضير إطلاق Mint.com على لسان Noah Kagan: من أكثر الحقائق روعة والتي يمكن أن نستقيها من قصة إطلاق Mint.com هي أنهم أصبحوا أكبر حجما من كل منافسيهم مجتمعين حتى قبل إطلاقهم للمنتج، هنا تتجلى فائدة العمل المتقن والمتفاني خلال المرحلة التي تسبق إطلاق المُنتج. أهمية الترويج قبل إطلاق الموقع بمجرد توفير صفحة "سننطلق قريبا" على موقعك والبدء في جذب اهتمام بعض الزوار، قد يتبادر إلى ذهنك أن هذا كل ما في الأمر ولم يبق عليك إلى الاسترخاء ما يعتبر أمرا خاطئا. يمكنك أن تضاعف جهودك من خلال العمل في الاتجاه المعاكس عن طريق استخدم شبكات التواصل الاجتماعي، شبكة معارفك والتواصل الشخصي من أجل توليد حركة الزوار إلى صفحة "سننطلق قريبا" الخاصة بموقعك، أي عليك بالقيام بتحويل (converting) الأشخاص الذين عرفوا بموقعك من الجهة المعاكسة إلى صفحتك. تتصف هذه العملية بالاستمرارية، كما يجب أن تقوم بالرجوع دائما إلى التصريح بالأهداف الأصلي لتحدد إن كنت على الطريق الصحيح، إن لم تكن كذلك، من الجلي أن هنالك بعض التغييرات الإيجابية التي يجب اتخاذها. خلاصة قمنا في هذا المقال بالتطرق لمجموعة من النقاط، أهمها يتجلى في إدراك أن إنشاء صفحة "سننطلق قريبا" متكاملة يتسم بالتركيز الكبير. ضع نصب عينيك بناء قائمة زوار، تجميع المعلومات والتواصل مع العملاء المحتملين حتى قبل إطلاق منتوجك. إليك فيما يلي تذكيرا بالخطوات الثلاث التي أسلفنا الذكر: حدد أهدافك. أنشئ صفحتك. أطلق صفحتك. تجنب تضييع الوقت والجهد في الجانب التقني واجعل من السرعة حليفا لك، ثم ركز على الترويج كثيرا. عندما يحين أخيرا الوقت لإطلاق موقعك يمكنك أن تقوم بذلك بالضربة القاضية. هل سبق لك تجربة إنشاء صفحة "سننطلق قريبا"؟ هل توصلت إلى التقنية التي تعمل أفضل من الأخريات؟ شاركنا رأيك في التعليقات أسفله. ترجمة بتصرف للمقال: How to Build the Perfect Coming Soon Page for WordPress in Just 3 Steps لصاحبه: Tom Ewer.
  22. تحدثنا في السابق عن بضع خطوات يمكنك تطبيقها لزيادة أمان وحماية موقعك العامل بسكربت ووردبريس الشهير. صحيحٌ أنّ نواة ووردبريس آمنة للغاية، ولكن يجب عليك تثبيت عدّة إضافات وملحقات إضافية لزيادة مستوى أمان موقعك. سنتحدّث في هذا الدرس عن أهم إضافات الأمان والنسخ الاحتياطي التي يمكنك تثبيتها وتفعيلها على سكربت ووردبريس الشهير. لماذا قد أحتاج إضافة للحماية؟بشكلٍ عام، تقوم إضافات الحماية والأمان بتوفير طبقة إضافية من الحماية ضدّ هجمات Bruteforce والهجمات الأخرى والبرمجيات الخبيثة التي قد تصيب موقعك، يمكنها أيضًا أن توفّر لك عدّة أدوات يمكنك استخدامها لتقليل المخاطر الأمنية المحيطة بك، كما توفّر بعض الأدوات للمراجعات اليدوية الدورية أيضًا. هناك إضافات أخرى للنسخ الاحتياطي تمكّنك من استرجاع موقعك بسرعة في حال ما إذا تمّ اختراقه. لهذا، سنتطرّق الآن إلى أهم الإضافات للحماية والأمان والنسخ الاحتياطي التي يمكنك استخدامها. iThemes Security تعتبر هذه الإضافة شهيرةً جدًا عندما يتعلّق الأمر بمجال أمان ووردبريس. كانت هذه الإضافة تدعى بالسابق "WP Security" ولكن تمّ تغيير اسمها. توفّر لك هذه الإضافة عدّة طرق لحماية موقعك. في الواقع، تقوم إضافة iThemes Security بالعديد من الأمور التي ذكرناها بالدروس السابقة تلقائيًا، مثل تغيير اسم المستخدم الرئيسي ورابط صفحة تسجيل الدخول، إزالة وسم generator والمزيد. كما تعرض عدّة أدوات للحماية مثل فحوصاتٍ دورية لملفّات موقعك للبحث عن الثغرات الأمنية والملفّات الخبيثة إن وجدت، مما يحسّن من أمان موقعك، كما أنّها تقوم بحظر المستخدمين الذين يفشلون بتسجيل الدخول لأكثر من مرّة عن طريق الـIP، وتحظر ربوتات الاختراق الشهيرة، وتفرض على المستخدمين اختيار كلمات مرورٍ قويّة.. والمزيد. توفّر إضافة iThemes Security ميزات التنبيه، حيث يمكنها أن تقوم بتنبيهك عندما يتم إجراء تغييراتٍ ما دون صلاحيات. يمكنها أن تلتقط الروبوتات التي تحاول اختراقك ويمكنها أن ترسل رسالة بريدٍ إلكتروني في حال التقطت أيًّا منها. توفّر الإضافة ميّزة النسخ الاحتياطي كذلك، حيث أنّها قادرة على أخذ نسخة احتياطية من جميع ملفّات موقعك وتدويناتك التي نشرتها، ويمكنها استعادتها في أيّ وقتٍ تريده. هناك إصدارٌ مدفوع من الإضافة كذلك ويوفّر ميّزاتٍ أكثر. All in One WP Security & Firewall خيارٌ آخر متوفّر أمامك هو إضافة All in One WP Security & Firewall، تتميز هذه الإضافة بسهولة تثبيتها وإعدادها مما يجعلها خيارًا جيَدًا للمدونين الجدد. تتضمن أيضًا نظام تقييم للحماية يحدد لك مدى أمان موقعك بوضعه الحالي. يمكنك من هناك تفعيل أو تعطيل مميزاتٍ معيّنة للأمان والحماية في موقعك حسبما تريده. تسمح لك هذه الإضافة المجانية كذلك بإعداد العديد من إجراءات الحماية بمجرّد بضع ضغطات، مثل تغيير اسم المستخدم "admin"، التعرّف على المستخدمين الذين يمتلكون أكثر من حساب وتفعيل أداة تقوية كلمات المرور. كما تحتوي الإضافة على ميزة تمنع هجمات Bruteforce على موقعك عبر حظر محاولات تسجيل الدخول الفاشلة لأكثر من مرّة. يمكنك أيضًا فرض تسجيل الخروج على حسابٍ معيّن، تتبع سجل النشاط الخاصّ به والمزيد. تتضمن الإضافة أيضًا مزايا حماية قواعد البيانات والملفّات، بالإضافة إلى إمكانية إنشاء ملفّ htaccess. عبرها وعمل النسخ الاحتياطية لملفّ wp-config.php. هناك ميزة أخرى مهمّة بهذه الإضافة وهي ميّزة الجدار الناري، حيث تسمح لك بتعديل ملفّ htaccess. لتمنع المخترقين حتّى من الوصول إلى الشفرة الخاصّة بموقعك. كما أنّها تحتوي على فاحص ملفّات، الحماية من نسخ النصوص، حماية ضد هجمات السخام (Spam)، تحديثات تلقائية والمزيد. Sucuri Security Sucuri Security هي إضافة أخرى شائعة لحماية ووردبريس. تسمح لك ميزة SiteCheck المُضمّنة بالتحقق من حالة موقعك الحالية وفحصه لإيجاد الثغرات الموجودة به بالإضافة للبحث عن البرمجيات الخبيثة إن وجدت. تمكّنك الميزة كذلك من البحث عن جميع أنواع الثغرات، مثل ثغرات حقن قواعد البيانات، محاولات التصيّد الاحتيالي، إعادة التوجيه المشبوهة.. إلخ، كما يمكنها أن تلتقط أكواد جافاسكربت وPHP الخبيثة إن وجدت. تستخدم الإضافة أكثر من واجهة تطبيق برمجية واحدة (API) لفحص موقعك، أيّ أنّها تستخدم أكثر من قاعدة بيانات للشفرات الضارّة والخبيثة الموجودة على الإنترنت للتأكد من أنّ موقعك لا يحتوي على أحدها، مما يوفّر فحصًا شاملًا لموقعك، تتضمن هذه المصادر الخارجية أسماءً عريقة مثل Norton, McAfee.. إلخ. هناك بعض المزايا الموجودة بالإضافة والتي توفّر الحماية لمسار رفع ملفّات الوسائط الخاصّ بموقعك، حيث تقيّد الوصول إلى مجلّديّ wp-content وwp-includes، تتحقق من إصدارات PHP ووردبريس وتعطّل محرر الإضافات والقوالب من لوحة التحكم. Wordfence Security تحدّثنا من قبل عن إضافة Wordfence Security، وقلنا أنّها من أهم إضافات الحماية لسكربت ووردبريس. بمجرّد تثبيتها على موقعك فإنّها ستقوم بعملية فحصٍ شامل للشفرة المصدرية للتأكّد من أنّها مطابقة للشفرة المصدرية الخامّة المنشورة من موقع ووردبريس الرئيسي، إذا اكتمل الفحص بنجاح، فإنّ الإضافة تقوم بعدها تلقائيا بتفعيل خيارات الحماية لزيادة أمان موقعك. هناك إصدار مدفوع ومجاني من الإضافة، كلاهما يعتمدان على منصّة "Wordfence Cloud"، مما يعني أنّ عملية الفحص وتفعيل الجدار الناري بالواقع تجريان على خواديم الشركة المطوّرة للاستضافة وليس على خادومك مما يقلل من الحمل الموجود عليه. توفّر هذه الإضافة دعمًا لأكثر من موقع ووردبريس في آنٍ واحد، تسجيل الدخول عبر الهاتف المحمول، دعم للإضافات الشهيرة مثل WooCommerce، الاستيثاق الثنائي، فرض كلمات المرور القوية، فحص الملفّات والمزيد. تتضمن الإضافة أيضًا جدارًا ناريًا لحماية موقعك من الروبوتات، البرمجيات الخبيثة وهجمات Bruteforce. بمجرّد تثبيتها فإنك ستكون قادرًا على حظر المهاجمين واتصالات الشبكات المشبوهة، وكلّه في الوقت الحقيقي (Real time). BruteProtect تمّ شراؤها مؤخرًا من قبل شركة Automattic (الشركة المطوّرة لووردبريس)، إضافة BruteProtect هي أحد الحلول الأمنية التي يمكنك استخدامها لصدّ هجمات Bruteforce بالتحديد. توفّر الإضافة أدواتٍ لمراقبة الهجمات الحالية على موقعك في حال حصولها بالوقت الحقيقي بالإضافة إلى التحديث التلقائي لنواة ووردبريس في موقعك. الإضافة ليست مجهّزة لحمايتك ضد الهجمات الأخرى، بل فقط ضدّ هجمات Bruteforce فلا تعتمد عليها لوحدها. Acunetix WP Security Acunetix WP Security هي إضافةٌ أخرى مجانية لفحص موقعك بسهولةٍ ويسر. تمكّنك من إعداد صلاحيات الملفّات، تأمين قاعدة البيانات، إخفاء إصدار ووردبريس الحالي الذي تستخدمه عن أعين المخترقين، تغيير اسم المستخدم admin والمزيد. تتوافق الإضافة مع مواقع ووردبريس المتعددة (multisite) وعمليات النسخ الاحتياطي، كما تتضمّن أداةً تعمل بالوقت الحقيقي لعرض من يتصفّح موقعك حاليًا وماذا يتصفّحون. Bulletproof Security آخر إضافة ووردبريس سنتحدث عنها هي إضافة Bulletproof Security. توفّر هذه الإضافة العديد من المزايا التي توفّرها الإضافات الأخرى مثل ملفّات htaccess. ، حفظ نسخة احتياطية من قاعدة البيانات، سمات مختلفة لواجهة الإضافة والمزيد. يتضمّن الإصدار المدفوع منها المزيد من المميزات مثل التثبيت بنقرة واحدة، الاستعادة التلقائية، جدار ناري يتعامل مع عناوين الـIP للمستخدمين، مسجّل للأخطاء، حامٍ من هجمات Bruteforce، حظر عناوين IP معيّنة والمزيد. أهمّية إضافات النسخ الاحتياطيبجانب إضافة قويّة للحماية والأمان، فإنّه يجب عليك استخدام إضافةٍ أخرى لعمليات النسخ الاحتياطي، معظم هذه الإضافات السابق ذكرها يتضمّن الميّزتين بالواقع مما يسهّل عليك الأمر، ولكن لا تنسى بتاتًا استخدام النسخ الاحتياطي. القيام دوريًا بعمل نُسخ احتياطية من موقعك هو أمرٌ مهم لخطّة أمان كاملة، وإلّا فكيف تتوقع أن تقوم باسترجاع موقعك في حال تمّ اختراقه مثلًا؟ هناك العديد من الإضافات الجيّدة للنسخ الاحتياطي مثل VaultPress ،WordPress Backup to Dropbox و BackupBuddy. تتنوّع هذه الإضافات ما بين المدفوعة والمجانية، ولكنّها مفيدة لضمان عدم فقدان أيّ شيء مهم يتعلّق بموقعك. الخاتمةصحيحٌ أنّه يمكنك القيام بالعديد من الأمور يدويًا لتحسين حماية ووردبريس، ولكن استخدام الإضافات قد يوفّر عليك الكثير من الوقت ويوفّر لك الكثير من المميزات، خاصةً لو كنتَ تمتلك أكثر من موقع ووردبريس واحد. الإضافات السابق ذكرها يجب أن تؤدّي المهمّة المطلوبة بالنسبة لك ويمكنك تجريبها جميعًا لتصل إلى أفضلٍ واحدةٍ منها بالنسبة لك. في الدرس الأخير من هذه السلسلة سنتحدث عن أهمية تحديث ووردبريس وإضافاته لزيادة أمان موقعك. ترجمة -وبتصرف- للمقال The WordPress Developer’s Guide to Security: Security & Backup Plugins لصاحبته Brenda Barron.
  23. تعرفنا في الدرسين الماضيين عن مفهوم حاويات لينكس (LXC) ومبدأ عملها ثم شرعنا في كيفية البدء في استعمالها. سنعرج في هذا الدرس إلى كيفية استغلال مختلف نقاط ومراحل دورة حياة حاويات لينكس (LXC) لإدراج بعض من الإضافات (hooks) التي تقوم بإجراء مهمة ما. إضافات إدارة دورة التشغيل بدءًا من أوبنتو 12.10، أصبح من الممكن تعريف إضافات (hooks) تُنفَّذ عند نقاط محددة من دورة تشغيل الحاوية: الإضافات التي تحدث قبل التشغيل تُنفَّذ من مجال أسماء المضيف قبل أن تُنشَأ طرفيات أو نقاط وصل الحاويات؛ إذا أُجري أي وصل في هذه الفترة، فيجب أن يُنظَّف في إضافة تحدث بعد إيقاف التشغيل. الإضافات التي تحدث قبل الوصل تُنفَّذ في مجال أسماء الحاوية، لكن قبل أن يوصل جذر نظام الملفات؛ سينظف أي وصل لنظام الملفات في هذه الفترة تلقائيًا عند إيقاف تشغيل الحاوية. إضافات الوصل هي إضافات تنفذ بعد وصل أنظمة ملفات الحاوية، لكن قبل أن تُنفِّذ الحاوية pivot_root لتغيير جذر نظام ملفاتها. الإضافات التي تحدث بعد إيقاف التشغيل ستنفَّذ بعد إيقاف تشغيل الحاوية. إذا أعادت أيّة إضافة خطأً، فسيلغى تشغيل الحاوية، لكن أي إضافة تحدث بعد إيقاف التشغيل ستنفَّذ، ستُسجَّل أيّة مخرجات تولد من السكربت بأولوية التنقيح (debug). رجاءً راجع صفحة دليل lxc.container.conf لصيغة ملف الضبط التي سيحدد الإضافات؛ يمكن أن تأتي بعض أمثلة الإضافات في الحزمة lxc لتخدم كمثال حول طريقة كتابة إحدى تلك الإضافات. سطر الأوامر لدى الحاويات عدد مضبوط من «أسطر الأوامر» (consoles)؛ أحدها موجودٌ دائمًا في ‎/dev/console؛ الذي يظهر في الطرفية عندما تُشغِّل lxc-start ما لم تحدد الخيار ‎-d؛ يمكن إعادة توجيه ناتج خرج ‎/dev/console إلى ملف باستخدام ‎-c console-file في الأمر lxc-start؛ يمكن تحديد عدد إضافي من أسطر الأوامر باستخدام المتغير lxc.tty المضبوط عادةً إلى 4؛ يمكن أن تظهر أسطر الأوامر تلك في ‎/dev/ttyN (حيث N أكبر أو تساوي 1، وأصغر أو تساوي 4)؛ ولتسجيل الدخول إلى console 3 من المضيف، فنفِّذ الأمر: sudo lxc-console -n container -t 3 إذا لم تحدد الخيار ‎-t N، فسيتم اختيار سطر أوامر غير مُستخدَم؛ للخروج منه، استخدام عبارة الخروج Ctrl-a q؛ لاحظ أن عبارة الخروج لا تعمل في سطر الأوامر الناتج عن lxc-start دون الخيار ‎-d. استكشاف الأخطاء التسجيل إذا حدث شيء ما خاطئ عند تشغيل حاوية، فإن أول خطوة هي الحصول على سجل كامل من LXC: sudo lxc-start -n C1 -l trace -o debug.out هذا سيؤدي إلى جعل lxc يسجل في أعلى درجة إسهاب، التي هي trace، وسيكون ملف التخزين هو ملف باسم «debug.out»، إذا كان الملف debug.out موجودًا مسبقًا، فستُضاف معلومات السجل الجديد إليه. مراقبة حالة الحاوية هنالك أمران متوفران لمراقبة تغيرات حالة الحاوية: lxc-monitor الذي يراقب حاويةً أو أكثر ﻷي تغيرات في الحالة، حيث يأخذ اسم الحاوية مع الخيار ‎-n كالعادة؛ لكن في هذا الحالة، يمكن أن يكون اسم الحاوية تعبيرًا نمطيًا من نمط POSIX للسماح بمراقبة مجموعة من الحاويات؛ يستمر lxc-monitor بالعمل ويعرض تغيرات حالات الحاويات؛ أما lxc-wait فينتظر تغيِّرًا محددًا في الحالة ثم ينتهي تنفيذه؛ على سبيل المثال: sudo lxc-monitor -n cont[0-5]* هذا سيعرض جميع تغيرات الحالة لأي حاوية تطابق التعبير النمطي؛ بينما: sudo lxc-wait -n cont1 -s 'STOPPED|FROZEN' سينتظر إلى أن تتغير حالة الحاوية cont1 إلى STOPPED أو FROZEN ثم ينتهي. الوصل من الممكن في أوبنتو 14.04 الوصل (attach) إلى مجال أسماء حاوية، أبسط طريقة هي تنفيذ: sudo lxc-attach -n C1 الذي سيبدأ صدفة موصولة لمجال الحاوية C1، أو داخل الحاوية؛ آلية عمل الوصل هي معقدة جدًا، مما يسمح بوصل مجموعة فرعية من مجالات أسماء (namespaces) الحاوية ونمط الحماية (security context)، راجع صفحة الدليل لمزيدٍ من المعلومات. درجة إسهاب init في الحاوية إذا أكمل LXC بدء تشغيل الحاوية، لكن فشل إكمال تنفيذ init فيها (على سبيل المثال، لم يُعرَض محث الدخول)، فمن المفيد طلب درجة إسهاب أكبر من عملية init، فلحاوية upstart: sudo lxc-start -n C1 /sbin/init loglevel=debug يمكنك أيضًا بدء تشغيل برامج مختلفة عن init، على سبيل المثال: sudo lxc-start -n C1 /bin/bash sudo lxc-start -n C1 /bin/sleep 100 sudo lxc-start -n C1 /bin/cat /proc/1/status واجهة LXC البرمجية API يمكن الوصول إلى غالبية وظائف LXC عبر واجهة برمجية (API) مُصدَّرة من liblxc التي تكون ارتباطاتها متوفرة لعدة لغات برمجية بما فيها بايثون، و lua، وروبي، و go. ما يلي هو مثال عن استخدام ربط بايثون (المتوفرة في حزمة python3-lxc)، التي تُنشِئ وتبدأ حاوية، ثم تنتظر إلى أن يوقف تشغيلها: # sudo python3 Python 3.2.3 (default, Aug 28 2012, 08:26:03) [GCC 4.7.1 20120814 (prerelease)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import lxc __main__:1: Warning: The python-lxc API isn't yet stable and may change at any p oint in the future. >>> c=lxc.Container("C1") >>> c.create("ubuntu") True >>> c.start() True >>> c.wait("STOPPED") True الحماية يربط مجال الأسماء المعرفات (ids) إلى الموارد؛ لكنه لا يوفر للحاوية أي معرِّف يمكنه أن يشير إلى المورد، لذلك يمكن أن يُحمى المورد؛ وهذا هو أساس بعض الحماية الموفرة لمستخدمي الحاوية؛ على سبيل المثال، مجال أسماء IPC معزول تمامًا؛ لكن مجالات أسماء أخرى فيها بعض «التسربات» (leaks) التي تسمح للامتيازات بأن تُستخرَج بشكل غير ملائم من الحاوية إلى حاوية أخرى، أو إلى المضيف. افتراضيًا، تُشغَّل حاويات LXC بسياسة AppArmor التي تقيّد بعض الأفعال، تفاصيل دمج AppArmor مع LXC موجودة في قسم «AppArmor» في الدرس السابق، الحاويات دون امتيازات تربط الجذر في الحاوية إلى مستخدم دون امتيازات في المضيف، وهذا يمنع الوصول إلى ملفات ‎/proc و ‎/sys التي تمثل موارد المضيف، وغيرها من الملفات المملوكة من الجذر في المضيف. الثغرات في استدعاءات النظام ميزة أساسية من مزايا الحاويات أنها تشارك النواة مع المضيف؛ وهذا يعني أنه إذا حوت النواة على أيّة ثغرات في استدعاءات النظام (system calls)، فيمكن أن تستغلها الحاوية؛ وبعد أن تتحكم حاوية بالنواة، فيمكنها أن تسيطر سيطرةً كاملةً على أي مورد معروف للمضيف! بدءًا من أوبنتو 12.10، يمكن أن تقيَّد الحاوية من مرشِّح seccomp، إن Seccomp هو ميزة جديدة في النواة التي تُرشِّح استدعاءات النظام التي يمكن أن تُستخدَم من المهمة وأولادها؛ بينما يتوقع الوصول إلى إدارة سهلة ومحسنة للسياسة في المستقبل القريب، لكن تحتوي السياسة الحالية على قائمة بيضاء بسيطة لأرقام استدعاءات النظام؛ يبدأ ملف السياسة برقم الإصدار (الذي يجب أن يكون 1) في أول سطر ونوع السياسة (الذي يجب أن يكون whitelist) في ثاني سطر؛ وتُلحَق بقائمة أرقام، كل رقم في سطر. سنحتاج عادةً لتشغيل حاوية بتوزيعة كاملة إلى عدد كبير من استدعاءات النظام؛ لكن لحاويات البرامج، يمكن أن نقلل عدد استدعاءات النظام المتوفرة إلى رقم قليل؛ وحتى للحاويات التي تشغل توزيعات كاملة يمكن الحصول على فوائد أمنية إذا حذفت -على سبيل المثال- استدعاءات النظام المتوافقة مع 32 بت في حاوية 64 بت؛ راجع صفحة دليل lxc.container.conf للمزيد من التفاصيل حول كيفية ضبط الحاوية لتستخدم seccomp؛ لن تُحمَّل افتراضيًا سياسة seccomp. مصادر كتاب «Secure Containers Cookbook» يشرح كيفية استخدام أنماط الحماية لجعل الحاويات أكثر أمانًا. مشروع LXC مُستضاف في linuxcontainers.org. مشاكل LXC الأمنية مذكورة ومناقشة في صفحة وكي «LXC Security». ترجمة -وبتصرف- للمقال Ubuntu Server Guide: LXC.
  24. واحد من أكثر الأشياء المفيدة في ووردبريس ما يسمى بالوسوم الشرطية (Conditional Tags)، حيث ستمكنك من البرمجة بسهولة وفهم الكود الذي تكتبه كأنك تقرأ نص باللغة الإنجليزية. سنقوم في هذا الدرس بدراسة طريقة عمل الوسوم الشرطية مع إيضاح بعض النقاط الخفية والمبهمة مع قائمة بأكثر الوسوم الشرطية المفيدة وسنختم ببعض الأمثلة إن شاء الله. كيف تعمل الوسوم الشرطيةالوسوم الشرطية هي دوال خاصة بووردبريس تقوم بإرجاع قيمة صح أو خطأ (boolean) إعتمادا على معطيات مختلفة. يوجد حوالي 50 وسما شرطيا في ووردبريس، ولذلك سنقوم باختيار أكثرها استعمالا وأكثرها جديرة بالاهتمام وإلا سوف تسبب لنا الكثير من التعقيد. مفيدة()is_single سيتم إرجاع قيمة صحيحة إذا كانت الصفحة الحالية متكونة من تدوينة واحدة فقط من أي نوع ماعدا التدوينة مع المرفقات. ويتم ذلك عن طريق تمرير رقم التدوينة أو عنوانها كمعامل (parameter).()is_page سيتم إرجاع قيمة صحيحة إذا كانت الصفحة معروضة (غير مخفية).()is_singular مشابهة لـ ()is_single، لكنها تعود بقيمة صحيحة إذا تم عرض تدوينة تحتوي على مرفقات، وهي مشابهة لـ ()is_single() || is_page() || is_attachment حيث أن || تعني "أو".()is_archive سيتم إرجاع قيمة صحيحة إذا كانت الصفحة الحالية عبارة عن أرشيف مهما كان نوعها.()is_main_query سيتم إرجاع قيمة صحيحة إذا كان الاستعلام الحالي هو الاستعلام الرئيسي لهذه الصفحة.مبهمة ومخادعة()is_admin سيتم إرجاع قيمة صحيحة إذا كُنت في منطقة الإدارة من موقع ووردبريس، بعض الأشخاص يعتقد أن هذا الوسم لمعرفة هل المستخدم الحالي من المدراء أم لا، وهذا الأمر خاطئ.()is_dynamic_sidebar سيتم إرجاع قيمة صحيحة إذا كان الشريط الجانبي الحالي (ويدجت أو مناطق) لديه أية ودجات مفعلة.()is_home هذا الوسم مربك قليلا، سوف تعتقد للوهلة الأولى أنه لمعرفة هل أنت في الصفحة الرئيسية أم لا مثل http://www.example.com. لكن هذا ليس صحيح لأن هذا الوسم لمعرفة هل أنت في صفحة الرئيسية للتدوينات أم لا لأنه في بعض الأحيان قد تكون الصفحة الرئيسية للموقع ليس هي نفسها للتدوينات.()is_front_page سيتم إرجاع قيمة صحيحة إذا كانت الصفحة التي أنت فيها هي الصفحة الرئيسية سواء أن كانت هي نفسها للتدوينات أو صفحة تابعة للمدونة.قمنا بعرض جزء فقط من الوسوم الشرطية، إذا أردت المزيد يمكنك زيارة القائمة الكاملة. بعض الإستخدامات للوسوم الشرطية في ووردبريسهنالك الكثير من الإستخدامات للوسوم الشرطية وسنقوم الآن باستعراض أشهرها وأكثرها استعمالا. استخدام الوسوم الشرطية في القوالبتستخدم الوسوم الشرطية بكثرة في تطوير القوالب، ففي بعض الأحيان هنالك عنصر يظهر في كل الصفحات لكن هنالك حالات أو صفحات لا تريد أن يظهر بها. على سبيل المثال، لنقل أنك لا تريد أن يظهر التاريخ على الصفحات لكنك تريده أي يظهر على جميع التدوينات، فيمكنك القيام بهذا عن طريق هذه الشِفرة: /* الوسط: داخل ملف single.php */ <?php if ( ! is_page() ): ?> <span class="meta-date"> <?php the_date(); ?> </span> <?php endif; ?>ملاحظة حول الوسوم الشرطية والقالب الهرميإن القالب الهرمي مشابه بالأساس لـشجرة القرار التي يمكنك بناؤها باستعمال الوسوم الشرطية. ويمكنك أيضا وضع كامل القالب في index.php واستخدام هذه الوسوم لعمل ما يعمله القالب الهرمي. في الحقيقة فعل هذا الأمر ليست فكرة فريدة وجيدة، لكن معرفة أن هذا ممكن ومحاولة استعمال الوسوم الشرطية والقالب الهرمي سوف يساعدك على فهم الإثنين معا حسب رأيي. ولفهم هذا الأمر أكثر أنظر لهذا المخطط: إدراج ورقة أنماط خاصة أو ملفات جافا سكريبتفي بعض الأحيان سوف تحتاج إلى صنع صفحة مخصصة في موقعك بها الكثير من التأثيرات و الخصائص، ولتحقيق هذا سوف تحتاج إلى الكثير من التأثيرات والسكريبات والتي يجب أن تكون في صفحة واحدة فقط لأن تحميل كل هذه التأثيرات والسكريبات في جميع صفحات الموقع سوف يزيد من حجمه ويجعله أبطأ، ويمكن القيام بذلك عن طريق الوسوم الشرطية كما في المثال: add_action( 'wp_enqueue_scripts', 'wpshout_special_page' ); function wpshout_special_page() { if ( is_page( 'special-page' ) ) { wp_enqueue_script( 'special_js', get_stylesheet_directory_uri().'/special.js' ); wp_enqueue_style( 'special_css', get_stylesheet_directory_uri().'/special.css' ); } }هنا قمنا بعمل إدراج بشكل عادي، لكننا قمنا بربط عملية الإدراج بشرط: إذا لم تكن الصفحة الحالية "صفحتنا الخاصة"، التأثيرات وأوراق الأنماط و السكريبتات لن يتم تحميلها. لاحظ أن ()is_page ستقوم باختبارين: الأول للتأكد من أن المشاركة من نوع صفحة.والثاني هل لصفحة special-page اسم للطيف، معناها هل هي slug ؟ ويقصد بها أن الرابط يحتوي على عنوان الصفحة مثلا في هذا الرابط، سيكون slug هو wordpress-203. ولاختبار هذا قمنا بتمرير 'special-page' إلى ()is_page كمعامل.إن التأكد من هذين الشرطين يجعلنا نرفض وضع السكريبتات وأوراق الأنماط سوى لصفحة واحدة مخصصة. ()is_admin يمكن استخدامه أيضا فهو حالة أخرى حيث تحتاج الإضافات للقيام بعمليات اختبار مماثلة. ملاحظة عن الوسوم الشرطية والحالة العامةالوسوم الشرطية تستطيع الوصول إلى الحالة العامة (Global State) لووردبريس (طريقة عمل الأشياء في الخلفية) وهذه الحالة يجب أن يتم وضعها قبل أن تستطيع استخدامها، لكن لا يمكنك الاعتماد كليا على استعمال الوسوم الشرطية حتى تتأكد أن عملية المصنع الخاصة بووردبريس قد فعّلت الإجراء (action) المسمى posts_selection. (هنا لائحة الكاملة بالإجراءات المفعلة من قبل ووردبريس وترتيبها). هذا يعني أن بعض الإجراءات التي يتم استخدامها عادة لا يمكن استخدامها بالتوازي مع الوسوم الشرطية، ومن أشهر هذه الإجراءات: setup_theme، init، register_sidebar و pre_get_posts. ومع ذلك، حوالي نصف الخُطّافات (hooks) وجميع القوالب تعمل جيدا بعد أن يتم تحميل الوسوم الخاصة بالقوالب، وسوف تكون مفيدة جدا هناك. في أغلب الوقت لن تكون هذه مشكلة لك، لكنه من الجيدة أن تعرف ما يمكنك فعله وما لا يمكنك، فهذا الأمر لن يزعجك سوى لمرة واحدة في كل 50 مرة تستخدم فيها الوسوم الشرطية. الوسوم الشرطية: تعلمها، استخدمها، وأحبهاإن الدوال الشرطية لووردبريس واضحة للغاية و مفيدة جدا و تستعمل في كل مكان، وآمل أن تستخدمها وأن تكون مفيدة لك في جميع الحالات عندما تحتاجها و تتحدث مع نفسك مثل : "نعم، أريد فعل هذا لكن ليس في هذه الحالة ..." أو "لكن أريدها فقط أن تظهر عندما ..." وغيرها، وسوف تبرز لك قوة ووردبريس كما هي. ترجمة وبتصرف للمقال: WordPress’s Conditional Tags لصاحبه David Hayes.
  25. ووردبريس هو منصة رائعة لإدارة المحتوى. إذا كنت تملك أيّ محتوى يأتي في شكل وحدات شبيهة بالمقالات (أو ما شابهها مثل منتجات) فلا أجد سببا يدفعك لعدم استخدام ووردبريس. قد يكون التعاون باستخدام سكربت ميديا ويكي سهل أيضا، واستخدام دروبال مع أنظمة الشركات يعد أمرا سهلا وشائعا، لكن ووردبريس له مكانته أيضا في هذا المجال، وهو في رأيي، يوفر تجربة تحرير أفضل. أحد الطرق لجعل المحتوى في ووردبريس يعمل بشكل أفضل هو إضافة معلومات إضافية له (metadata). قد يكون الأمر على شكل تصنيفات خاصة (taxonomies) أو على شكل بيانات تستخدم لهدف واحد (custom fields). ماهو الحقل المخصص في ووردبريس؟إذا أردت أن تستخدم معلومات محددة متغيرة لكل مقال ما (أو شيء شبيه بمقال كمنتج)، هنا تستطيع استخدام الحقول المخصصة في ووردبريس. "الحقول المخصصة" لها تسميتان مختلفتان في ووردبريس، غالبا ما يطلق عليها خصائص المنشور أو المعلومات الجانبية (post metadata) أو post_meta وعادة ما يطلق عليها باسم الحقول المخصصة، وهذه الترجمة الرسمية التي يستخدمها فريق ترجمة ووردبريس العربي. نحن نضيف الحقول المخصصة عندما نريد أن نخزن خصائص إضافية لمنشور ما. منشورات ووردبريس تأتي بالعديد من الخصائص الإضافية بشكل مسبق: تاريخ النشر، كاتب الموضوع، آخر وقت تّم التعديل عليهم. لكنك قد تريد المزيد، مثلا تريد أن تضيف عنوانا ثانويا للمنشور، أو تريد أن تضيف ملخص المنشور تصميم منفرد. ووردبريس يقوم بتخزين هذه المعلومات في قاعدة البيانات، وباستخدام دوال معينة نقوم بتحديدها وتخزينها واسترجاعها. الحقول المخصصة تنفرد عن خيارات الموقع site_settings حيث أنّ لهم علاقة بالمنشور وليس بالموقع ولكن كلاهما يعملان بنظام عنوان وقيمة key/value pair يتم استخارجهم من قاعدة البيانات عبر دوال محددة، لذا إن كانت لك تجربة بنظام خيارات الموقع Settings API فلن تواجه مشكلة في فهم الحقول المخصصة. كيف أضيف الحقول المخصصة لمنشور؟هناك العديد من الطرق التي تستطيع استخدامها لإضافة الحقول المخصصة، الواجهة الافتراضية للتعامل مع الحقول الخاصة في ووردبريس قديمة ولم يتم تحديثها منذ مدة، ورغم أنها تخدم الهدف إلا أنها بعيدة عن المثالية. الجزء المضاف في الأسفل "ما بعد الأساسيات" سيدخل في التفاصيل حول خيارات أخرى تستطيع اللجوء لها من أجل التحكم في الحقول الخاصة، لكن سنقوم الآن بفهم الواجهة الأصلية فحسب، لأنها ستكون موجودة دوما في كل المواقع. في شاشة التعديل على منشور ستجد صندوق "خصائص إضافية"، وستقوم أنت بتعديل الحقول المخصصة فيه. لا داعي لنمر على كامل معلومات تكوين الصندوق، ستقوم ببساطة باختيار الاسم (أو تضيف واحدا جديدا في حال لم تقم بالأمر من قبل). من ثم تقوم بإضافة القيمة، إضغط على الزر ولقد قمت بإضافة الحقل إلى منشورك، محفوظا مع بقية عناصرك. إظهار الحقول المخصصة في منشوراتكلتستخدم الحقول الخاصة في منشوراتك أمامك عدة دوال، وتسمياتهم تختلف حسب طريقة تكلم الناس عنهم، الدوال الأساسية هي كالتالي: ()the_meta: مثل كل دوال ووردبريس التي تبدأ بـ _the فدالة ()the_meta الهدف منها طبع المعلومات (echo) حتى لا تقوم بالأمر يدويا. تستطيع استخدامها عندما لا تريد أن تغير أيّ شيء بالمعلومات التي تريد طباعتها. لكنها تبدو لي غبر مفيدة لأنها لا تتيح لك أيّ تحكم بهيكلة المعلومات التي تحصل عليها، كما أنها تقوم بطبع كل المعلومات للصفحة.()get_post_meta: هي الدالة التي أستخدمها أنا طوال الوقت، المتغير الأول (parameter) الذي تحتاجه هو معرف (ID) المنشور، المتغير الثاني هو اسم الحقل الذي تريد جلبه، والثالث هو Boolean في حال كنت تريد القيمة على شكل string أو array مصفوفة (true من أجل string وfalse ل array).()get_post_custom: عمل بشكل شبيه جدا لـ ()get_post_meta لكنها تختلف في التسمية، الفرق أنك تقوم بتمرير ID المنشور له فحسب (بشكل اختياري أيضا) وسيقوم بإرجال كل القيم المخصصة للمنشور على شكل array.ما بعد الأساسيات: كيفية تحسين واجهة الحقول المخصصةأحد نقاط ضعف ووردبريس من ناحية الحقول المخصصة هو الصندوق الذي تستخدمه للتعديل عليها، فكما أسلفنا الذكر، الصندوق ليس مفيدا لتلك الدرجة، لذا أنت تملك الفرصة لتحسين التجربة لمستخدميك وزبائنك. الدوال التي تحتاجها للتعامل مع الحقول الخاصةحتى الآن، فقد تعلمنا كيف نسترجع الحقول الخاصة فحسب، مهمة أخرى ستقوم بها عند التطوير هي تعديل أو حذف المعلومات. من أجل هذه المهمة يقدم ووردبريس 3 دوال بسيطة للقيام بالأمر وهي: ()add_post_meta : هي الطريقة التي تستخدمها لإنشاء الحقل لأول مرة، تقوم بتمرير ID المنشور لها واسم الحقل المخصص (meta_key) والقيمة التي تريدها، وبشكل اختياري تستطيع تحديد أن يجعل ووردبريس تلك القيمة فريدة من نوعها. addpostmeta($postid, $metakey, $meta_value, $unique = false) ()update_post_meta : يمكن أيضا استخدام هذه الدالة لإنشاء حقل مخصص جديد، لذا هي تملك القدرة لتحل مكان ()add_post_meta في حال لم تكن واثقا أن الحقل جديد أو لا فتستطيع استعمالها، أول ثلاث خيارات هم نفس خيارات ()add_post_meta والخيار الأخير هو القيمة السابقة، وهو أمر لم استخدمه من قبل حقا ولكن قد يكون مفيدا في حال كنت تملك الكثير من القيم لاسم واحد (key). updatepostmeta($postid, $metakey, $metavalue, $prevvalue='') ()delete_post_meta : هي كما تتوقع تماما، وخياراتها مثل البقية تماما، عدى أن الخيار الأخير (قيمة الحقل) هي قيمة اختيارية تستطيع أن لا تحددها. deletepostmeta( $postid, $metakey, $meta_value = '' ) شرح كيفية استخدام هذه الدوال داخل لوحة التحكم هو خارج نطاق المقال، لكنك تستطيع استعمالها عبر إنشاء صندوق جديد، واستخدام الدوال اللازمة وحفظ المعلومات أثناء حفظ المنشور. استخدام إضافات مصممة لتحسين تجربة الحقول الخاصةهناك العديد من الإضافات الرائعة التي تقوم بتحسين واجهة الحقول الخاصة، أشهرها في نظري هي Pods و Advanced Custom Fields. تقوم هذه الإضافات باستخدام custom post type لإنشاء حقول جديد تعمل بمثابة حقل مخصص. أداة أبسط وأقوىالطريقة التي استخدمها عادة والتي تختلف عن البقية هي إضافة CMB2 فهي تتيح لك تحكم عبر الشفرة البرمجية (عكس الإضافات الأخرى التي تتطلب منك إنشاء الحقول عبر واجهة). استخدام هذه الطريقة للبناء بدل الطريقة التقليدية الذي يوفرها ووردبريس هو أمر مختلف تماما وتجربة رائعة. لن تحتاج لكتابة دوال كبيرة لبناء صناديق لحقول مخصصة ثم محاولة حفظها فهي تقوم بكل شيء بشكل أوتوماتيكي. كل ما عليك القيام به هو وضع الملفات في قالبك أو إضافتك أو تنصيب الإضافة والعمل مع دوالها من قالبك، لشرح أكبر لها اقرأ التوثيق المرفق لها. يجدر الذكر أنّ الإضافة مترجمة للعربية بنسبة 93% (بتاريخ هذا اليوم) ويعتبر هذا دعما ممتازا للعربية لذا الشكر لكل من ساهم في ترجمتها (تستطيع الانضمام لهم عبر موقع Transifex). قوة الحقول المخصصة في ووردبريسكما أسلفنا الذكر، الحقول المخصصة تعتبر جزءا مهما في تطوير استخدامك لووردبريس. استخدام الأمور المبنية في ووردبريس لنشر المحتوى أمر جيد، ولكن الحقول المخصصة هي ما تسمح لإضافات مثل WooCommerce و Easy Digital Downloads بإضافات مميزات قوية لووردبريس. ترجمة -وبتصرف- للمقال: Everything You Should Know about WordPress Custom Fields لصاحبه: DAVID HAYES.