اذهب إلى المحتوى

البحث في الموقع

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

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

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

نوع المحتوى


التصنيفات

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

التصنيفات

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

التصنيفات

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

التصنيفات

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

التصنيفات

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

التصنيفات

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

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجنتو
    • بريستاشوب
    • أوبن كارت
    • دروبال
  • الترجمة بمساعدة الحاسوب
    • omegaT
    • memoQ
    • Trados
    • Memsource
  • برامج تخطيط موارد المؤسسات ERP
    • تطبيقات أودو odoo
  • أنظمة تشغيل الحواسيب والهواتف
    • ويندوز
    • لينكس
  • مقالات عامة

التصنيفات

  • آخر التحديثات

أسئلة وأجوبة

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

التصنيفات

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

ابحث في

ابحث عن


تاريخ الإنشاء

  • بداية

    نهاية


آخر تحديث

  • بداية

    نهاية


رشح النتائج حسب

تاريخ الانضمام

  • بداية

    نهاية


المجموعة


النبذة الشخصية

  1. إذا كنت تستخدم ووردبريس لفترة، أو حتى إذا كُنت مستخدمًا جديدًا، فغالبًا ما ستحتاج في وقت ما أن تجري بعض التعديلات في النص البرمجي لموقعك. قد يكون أي شيء، مثل إضافة خاصية أساسية إلى موقعك لا تتطلب إضافة كاملة plugin، أوإنشاء قالب فرعي child theme، وهذا فقط غيض من فيض. لكن توقف ها هنا! هناك بعض القواعد الأساسية التي يجب معرفتها فيما يتعلق بتعديل النص البرمجي في ووردبريس، بالإضافة إلى بعض المناطق التي يجب تفاديها تمامًا. وهذا ما سنتناوله في مقالنا. قاعدة عامة: إياك أن تعدّل في البنية الأساسية لووردبريس (WordPress Core) ربما قد تكون سمعت تلك العبارة الخالدة مرارًا من متمرسي ووردبريس: “لا تعدّل في البنية الأساسية" “Don’t hack core". ما يعنيه هذا هو أنك يجب ألا تلمس الملفات الأساسية، وهي الملفات المسؤولة عن عمل ووردبريس. لم هذا؟ حسنًا، هناك العديد من الأسباب، لكن دعنا نكتف باثنين من أهمها هنا: عدم ضمان استمرارية موقعك مستقبلًا. إذا أجريت تعديلات في بنية ووردبريس، فإنك تخسر القدرة على التحديث مع المحافظة على تعديلاتك. أي ببساطة، عندما يصدر تحديث جديد وتضغط على زر التحديث لينطبق على موقعك (لأنك شخص منظم يحافظ على تحديث موقعه بانتظام)، فإن تعديلاتك سيتم الكتابة فوقها بالتحديث. مما يضطرك لإعادة كتابتها، وهذا مضيعة للوقت في رأيي. توجد بالفعل إضافة متاحة لهذا. عندما تعدل في بنية ووردبريس، فإنك تفعل بالضبط ما تفعله الإضافات: تغيير، أو إضافة إلى الطريقة التي يعمل بها ووردبريس. بالتالي الإضافات هي طريقة أفضل بكثير في تحقيق ما تريد فعله بدلًا من تعديل البنية الأساسية. إذًا الآن تعرف لم لا يجب تعديل البنية الأساسية، دعنا نر ما المتاح تعديله بأمان. بنية ملفات ووردبريس هذه لقطة توضح بنية ملفات موقع ووردبريس نموذجي. سترى أن هناك ثلاث مراحل عليا من المجلدات ومجموعة من الملفات. المجلدات المسماة wp-admin وwp-include محظورة، يجب ألا تلمس شيئًا هناك. أما مجلد wp-content فإنه يحوي القوالب، الإضافات، وأي صورة أو مستند نصي رفعتها على الموقع. ويمكنك أن تجري تعديلات على قالبك الخاص عن طريق ملف functions.php. وبالنسبة لملفات المستوى الأعلى، فالملف الوحيد المسموح بالتعديل فيه هو ملف wp-config.php. سنغوص في بعض الأمثلة لكيفية تعديل كلا الملفين لاحقًا، لكن دعنا نتحدث عن بعض من أفضل الممارسات قبل أن نفعل. أفضل الممارسات لتعديل ملفات ووردبرس يأتي ووردبريس مع محرر قوالب وإضافات كجزء من الخواص الأساسية. يمكنك أن تجده في موقعك من الشريط الجانبي: المظهر > المحرر أو Appearance > Editor ألقِ نظرة عليه إذا أحببت، ثم بعدها انس أمره تمامًا، لأنك لن تستخدم محرر ووردبرس لأي شيء. في الحقيقة، أود أن تحذف هذه الخاصية تمامًا من ووردبرس لسببين: هذا المحرر ليس محررًا نصّيّا برمجيًا كامل الوظائف، ويمكن بسهولة ارتكاب أخطاء تنتج عنها "شاشة الموت البيضاء". حين تضغط على زر الحفظ، ليس هناك زر للرجوع. ليس هناك إمكانية لإعادة المحاولة. معظم محررات النصوص البرمجية الجيدة تُتيح لك إمكانية التّراجع عن التغييرات التي أجريتها في حال لم تعمل كما يجب. إذًا، ما هو البديل؟ حسنًا، إذا أردت استخدام محرر نص برمجي، فستحتاج دراية بـ FTP . FTP هو اختصار لـ File Transfer Protocol بروتوكول نقل الملفات. ولنشرح ذلك بأنه عبارة عن نقل الملفات من جهازك إلى خادم الويب الذي يوجد عليه موقعك. ستحتاج للاتصال بموقعك عن طريق عميل FTP، ثم تحمّل نسخة من الملف الذي تريد تغييره، أجرِ التغييرات ثم ارفعه إلى الخادم، وسيحل محل النسخة القديمة في الخادم. بعض محررات النصوص البرمجية – Coda على سبيل المثال– يسمح لك بتعديل الملفات مباشرة على الخادوم. والبعض الآخر يسمح باستعراض تعديلاتك (عادة لملفات HTML وCSS فقط). إذا كان محرر النص البرمجي الخاص بك يفعل هذا، فمن المستحسن أن تحفظ نسخة من الملف الأصلي باسم جديد (وليكن filename_old.php مثلًا). بهذه الطريقة، إذا ارتكبت أي خطأً لا تستطيع الرجوع فيه، فيمكنك ببساطة حذف الملف المعدّل، وإعادة تسمية النسخة الاحتياطية التي أنشأتها إلى اسمها الأصلي وكل شيء سيكون على ما يرام. حان الوقت لتعديل بعض ملفات ووردبريس سنجري بعض التعديلات البسيطة على ملفين wp-config.php وfunctions.php وهي ملفات غير تابعة للقالب، غالبًا ما ستحتاج إلى تعديلها. تعديل ملف wp-config.php ملف wp-config.php هو واحد من أهم الملفات في موقع ووردبريس الخاص بك. ولا يأتي مع النسخة الأساسية لووردبريس؛ إذ أنك تنصب ملفًا يُدعى wp-config-sample.php. ويُنشأ ملف wp-config.php أثناء عملية التنصيب (تحديدًا عند إدخال معلومات قاعدة البيانات الخاصة بموقعك)، أو يمكنك ببساطة إعادة تسمية ملف wp-config-sample إلى wp-config وإضافة معلومات قاعدة البيانات إلى الملف. ستجد كلّا الملفين في الجذر الأساسي لمسار الويب. إذا أتممت عملية التنصيب (لقطة لها بالأسفل)، بما في ذلك إعدادات قاعدة البيانات الخاصة بالموقع، فإنك بالفعل قد أنشأت ملف wp-config.php. الآن، دعنا نفتحه في محرر النص البرمجي المفضل لديك لنجري بعض التغييرات. مثال نص برمجي مفيد: تعطيل التحديثات التلقائية كانت التحديثات التلقائية جزءًا من ووردبريس منذ الإصدارة رقم 3.7. ولا يفضل الجميع هذه الخاصية، إذ يودون لو أنهم يغلقونها. كل ما تحتاجه لفعل هذا هو إضافة ذلك السطر إلى ملف wp-config.php الخاص بموقعك. /* تعطيل تحديثات ووردبرس الة */ define( 'WP_AUTO_UPDATE_CORE', false ); عندما أضيف نصًا برمجيًا إلى ملف wp-config، فإنني أتأكد دومًا من وضعه في مكان يسهل الرجوع إليه عند الحاجة. انظر إلى السطر 85 في ملف wp-config.php (من السهل الوصول إليه باستخدام محرر النص البرمجي)، ستجد هذه الجملة: /* That's all, stop editing! Happy blogging. */ بمعنى: /* هذا هو المطلوب! توقف عن التعديل. نتمنى لك التوفيق في موقعك! */ إنني أضع جميع تعديلاتي قبل ذلك السطر مباشرة. وبهذا أستطيع العثور على جميع التعديلات التي أجريتها في مكان ثابت مع كل موقع أعمل عليه. فقط تأكد من حفظ نسخة احتياطية من الملف قبل أية تعديلات. تعديل ملف functions.php ملف functions.php يسمح لك بتعديل وظائف ووردبريس. إذ يعمل هذا الملف كإضافة، فينشء خصائص ومزايا جديدة في موقع ووردبريس الخاص بك. وعادة ما تجد الملف موجودًا في مجلد القالب الخاص بك في المسار /wp-content/themes/yourthemename/ (حيث yourthemename هو اسم القالب). إذا لم تمتلك واحدًا، يمكنك بسهولة إنشاءه؛ فقط تأكد من أنك تضعه في القالب المٌفعّل. إذا بدأت بملف جديد، فستحتاج لبداية نص PHP مستخدمًا php?>. وعلى عكس ملف php التقليدي، فإنك لن تحتاج لإغلاق النص البرمجي (في الواقع، تقل احتمالية الأخطاء إذا تركته مفتوحًا). وستجد بالأسفل مثالين للخصائص التي يمكنك إضافتها إلى ملف functions.php خاصتك ملحقة بالنص البرمجي، لا تنس أنه من المستحب إضافة التعديلات الكبيرة عن طريق قالب فرعي. مثال نص برمجي مفيد: إضافة دعم المُصغّرات thumbnails إذا كان قالبك لا يدعم المُصغّرات، فيمكنك إضافة النص البرمجي التالي إلى ملف functions.php الخاص بك: add_theme_support( 'post-thumbnails'); لاستخدامه في قالبك، فقط أضف هذا السطر من الكود إلى الحلقة loop حيث تريد للمُصغرات أن تظهر: <?php the_post_thumbnail(); ?> مثال نص برمجي مفيد: تخصيص طول الاقتباسات الطول الافتراضي للاقتباسات في ووردبريس هو 55 كلمة، ولكن يمكنك تعيين طول الاقتباس حسبما تريد عن طريق إضافة ذلك النص البرمجي إلى ملف functions.php الخاص بك: //وظيفة تخصيص طول المقتبس custom_excerpt_length($length) { return 20; } add_filter('excerpt_length', 'custom_excerpt_length'); فقط كل ما تحتاجه تغيير رقم "20” إلى عدد الكلمات التي تريدها. الخاتمة والآن قد أصبحت تعرف القواعد الأساسية بخصوص تعديل ملفات البنية الأساسية لووردبريس. أتمنى أن تكون قد استمتعت بالمقال. وبالطبع نود معرفة آرائكم ونسر بالإجابة على ما يلتبس عليكم في التعليقات. مُترجم بتصرف من مقالة How to Edit Your WordPress Website Without Hacking Core Files لصاحبها Tom Ewer.
  2. إن اختيار نظام الألوان المثالي ليس بالمهمة الصعبة. كل ما تحتاجه هو الأدوات الصحيحة لعملك وعينك لتبدأ التصميم. لا يمكنني تطوير عينيك لاختيار الألوان، لكنني أستطيع اقتراح مجموعة من أدوات الألوان المفيدة والتي من المحتمل أن تحسن ذوقك عند استخدامها. جميع هذه الأدوات مجانية 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
  3. يُعَد استخدام مواقع ووردبريس لعشرات الإضافات أمرًا شائعًا، وشهدت في بعض الحالات مواقعًا تستخدم مئات الإضافات، لذلك يجب سؤال نفسك في مرحلة معينة "هل أستخدم الكثير من إضافات ووردبريس؟"، خصوصًا عند رغبتك بعمل موقعك بسلاسة وسرعة. سوف نجيب في هذا المقال عن التساؤل السابق ونشرح لماذا يُعَد استخدام الكثير من الإضافات أمرًا سلبيًا من الناحية النظرية. لماذا يوجد نقاش حول عدد الإضافات التي يجب استخدامها إذا استخدمت ووردبريس لمدة معينة؛ فهذا يعني أنك قد جربت العديد من الإضافات (ربما جربتهم على مجموعة مواقع مختلفة) التي يتميّز به ووردبريس، وأنك قد جعلت منه خيارًا لعدد ضخم من المواقع حول العالم، فهناك آلاف الإضافات المجانية، ومع ذلك يمتلك البعض نسخًا مدفوعة منها تُقدم ميزات إضافية، حيث يُمكن للإضافات تغيير طريقة عمل ووردبريس. لا توجد مشكلة في استخدام العديد من إضافات ووردبريس المختلفة، ولكن في بعض الحالات يُمكن لإضافة ما أن تؤثر سلبًا على موقعك، فعند كل تثبيت وتفعيل لإضافة، فأنت تُضيف أسطرًا برمجيةً جديدةً لووردبريس، وإذا كنت مبرمجًا تعمل في كتابة البرامج، فأنت تعلم أن البرامج والشيفرات التي تكتبها يُمكن أن تتضمن مشاكل وثغرات برمجية، وهذا نفسه ينطبق على الإضافات في ووردبريس. من الناحية النظرية، فكلما استخدمت عددًا أكبر من الإضافات، زادت احتمالية تعارض وظائف هذه الإضافات وزاد الخطر باحتواء موقعك على ثغرات. تتجلى الأخطاء الناتجة عن تعارض الإضافات بتوقف بعض الصفحات أو ظهورها بشكل مختلف عن المتوقع أو حتى توقف الموقع كاملًا. سوف تظهر مشاكل أخرى ترتبط بأداء الموقع وهذا ما سنتكلم عنه في القسم التالي من المقال، ولكن في تلخيصٍ لهذا القسم؛ لا يُؤدي استخدام العديد من الإضافات بالضرورة إلى إطالة زمن تحميل الموقع، لذلك تستطيع استخدام العدد الذي تريده من الإضافات إذا كان لديك الخبرة في انتقائها وصيانة الموقع. 3 طرق يمكن لإضافات ووردبريس أن تؤثر بها على أداء وأمن موقعك يُمكن تأثير أي برنامج تُثبته على حاسوبك على أدائه إذا كان يعمل باستمرار في الخلفية، ويُمكن تأثير البرنامج ليكون سببًا في ظهور مشاكل أمنية وهذا مرتبط بجودة الشيفرة المصدرية. ينطبق نفس المبدأ السابق على إضافات ووردبريس وهذا ما سوف نركز على شرحه هنا. طلبات HTTPS إضافية إضافة شيفرة للموقع عند تثبيت الإضافات يعني عددًا أكبر من طلبات HTTPS، حيث يُرسل المتصفح عند زيارتك لأي موقع طلبات متعددة لتحميل صفحة الموقع وما يرتبط بها من مكونات، وقد ازداد عدد هذه الطلبات في المواقع الحديثة بسبب تنوع مكونات صفحاتها. إليك مثالًا سريعًا عن طلبات HTTP التي يُرسلها المتصفح عند زيارة الصفحة الرئيسية لأكاديمية حسوب. عدد طلبات أقل يعني زمنًا أقل لتحميل الصفحة، لكنك غير قادر على التضحية ببعض الوظائف أو التصاميم في المواقع الحديثة لتحقيق ذلك، خصوصًا عندما يؤثر هذا على تجربة المُستخدم. من الناحية العملية، تستطيع امتلاك موقع لديه عدد كبير من طلبات HTTP طالما عناصره والشيفرة البرمجية مُعدة جيدًا ومُحسّنة، فبالرغم من ازدياد عدد طلبات HTTP عند ازدياد الإضافات ضمن موقعك، لكنّ هذا ليس بالضرورة أمرًا سيئًا طالما أن الشيفرة البرمجية للإضافة مكتوبة بدقة ولا تتضمن أخطاءً، وموقعك يعمل على استضافة تستطيع تحمل العدد المتزايد من طلبات HTTP دون تأثير هذا على أدائه. زيادة استدعاءات قاعدة البيانات يمتلك كل موقع ووردبريس قاعدة بيانات خاصة به تُخزِّن جميع بياناته، وعند تثبيت أي إضافة جديدة، فسوف تتصل مع قاعدة البيانات هذه وتستخدمها لتخزين إعداداتها وبيانات المُستخدم وأمور أخرى، حيث يَعتمد هذا على طبيعة عمل الإضافة، إذ يلج ووردبريس باستمرار لقاعدة البيانات للحصول على البيانات التي يحتاج عرضها على زوار موقعك، ومثل طلبات HTTP، فكلما زاد عدد هذه الاستدعاءات فمن المُحتمل أن تقل سرعة استجابة موقعك. تستطيع تحسين أداء قاعدة بيانات موقعك والتخلص من الإدخالات القديمة التي لا عمل لها لتحقيق أداء أفضل، وذلك باستخدام إضافات مجانية موجودة ضمن مستودع ووردبريس. يُعَد تحسن الأداء الناتج عن التحسينات بسيطًا، لذلك فإذا كنت تُعاني من أداء ضعيف بسبب كثرة طلبات استدعاء قاعدة البيانات، فننصحك بالبحث عن بدائل أفضل لاستضافتك الحالية. الثغرات الأمنية أكثر سبب مقنع لضرورة عدم تثبيت الكثير من الإضافات هو ارتفاع احتمالية احتواء موقعك على ثغرات أمنية، حيث يستغل المخترقون الإضافات ذات الشيفرة البرمجية الضعيفة أو التي لم تخضع لصيانة لاختراق موقعك الإلكتروني، وهذا حقيقةً أمر يجب أخذه بالحسبان كون ووردبريس هي منصة إدارة المحتوى الأكثر شعبيةً، وتوجد يوميًا أخبار عن اكتشاف ثغرات موجودة في إضافات ووردبريس. إنّ ما سبق مُحتمل الحدوث لأي برمجية كانت سواءً ووردبريس أو برنامجًا تريد تثبيته على حاسوبك، فمهما كان فريق البرمجة مُحترفًا فستكون ثمة دائمًا هفوة يُمكن استغلالها، والنصيحة الأفضل هي متابعة أخبار الثغرات الأمنية وتحديث الإضافات باستمرار، وعدم استخدام إضافات من مواقع غير موثوقة، تستطيع أيضًا اتخاذ تدابير احتياطية لرفع السوية الأمنية لموقعك باستخدام جدار ناري وتأمين الاستضافة، واختيار شركة استضافة مشهورة بأمن مُخدماتها والاستجابة الجيدة لفريق الدعم التابع لها. ما هو العدد الذي يعد كبيرا للإضافات المثبتة وثلاث طرق لتجنب المشاكل الإجابة السريعة لهذا السؤال هي أنه لا توجد قاعدة مُحددة، ولا بد من استخدام الإضافات في مواقع ووردبريس، لكن عليك استخدام ما أنت بحاجة له فقط، فمثلًا إذا كنت تمتلك عشرات الإضافات ولكنك لا تستفيد سوى من خدمات قلة منها، فلا يوجد داع للإبقاء عليها مُفعّلةً لأنها تستهلك من موارد الاستضافة وتزيد من احتمالية حدوث مشاكل توافقية. تستطيع التقليل من احتمال تأثير الإضافات على موقعك سلبيًا باتباعك النصائح التالية: اختر الإضافات ذات التقييم المرتفع وتفقّد التقييمات السلبية التي عادةً ما تُشير إلى المشاكل التي يُحتمل أن تواجهك. تأكد من تلقي الإضافة تحديثات دوريةً قبل تثبيتها. استخدم استضافة ذات أداء قوي ولديك القدرة على دفع تكاليفها. يحل استخدام الاستضافة القوية الكثير من مشاكل الأداء في معظم مواقع ووردبريس، وإذا كنت تواظب على صيانة موقعك دوريًا فيجب تُحميل صفحاتك بسرعة بغض النظر عن عدد الإضافات التي تستخدمها. تستطيع معرفة ما إذا كانت إضافةٌ ما تتلقى تحديثات دورية من خلال الاطلاع على معلوماتها ضمن صفحتها في مستودع ووردبريس، فمثلًا إذا تحققت من أي إضافة في مستودع ووردبريس، فسوف تجد كم مضى على آخر تحديث لهذه الإضافة. ننصح عمومًا بتجنب الإضافات التي مضى على تحديثها أكثر من 6 أشهر، وتستطيع أيضًا التوجه إلى قسم التطوير للإضافة والتحقق من سجل التغييرات الخاص بها. يمكننا القول أن الإضافة تكون خيارًا آمنًا إذا كانت تتلقى تحديثات دورية وذات تقييم إيجابي لأكثر من 1000 تثبيت. الخلاصة برأيي لا يوجد مشكلة اسمها عدد كبير من الإضافات المُثبتة في ووردبريس، فمعظم المواقع التي تعمل على استضافات قوية لا تعاني من أي مشاكل مرتبطة بعدد الإضافات المُفعّلة، لكن المشكلة الحقيقية هي باستخدام إضافات غير مُحدثة منذ وقت طويل، فهنا بالطبع لا يجب عليك الإبقاء على إضافة مُفعّلة طالما لا تستخدمها لأنها مضيّعة لموارد الاستضافة وتعرض الموقع لمشاكل توافقية. لا تقلق طالما يوجد لكل إضافة ضمن موقعك عمل ووظيفة تستفيد منها، وأضف إلى ذلك أنها تتلقى تحديثات دورية وتمتلك تقييمًا مرتفعًا. ترجمة -وبتصرّف- للمقال ?How Many WordPress Plugins Are Too Many لصاحبه Will Morris. اقرأ أيضًا موازنة بين أشهر إضافات المحادثة الفورية مع العملاء لمواقع الووردبريس أفضل 9 إضافات لإنشاء جداول التسعير على ووردبريس كيفية ضبط صفحة عام في إعدادات ووردبريس كيفية إضافة صورة شخصية لحساب المستخدم في ووردبريس
  4. المُحرِّر 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
  5. هل أنت مهتم بتعلم PHP وبناء قوالب وملحقات خاصة بك على ووردبريس؟ أو ربما أنت مُهتمّ بتعلّم القليل الذي يُمكنك من إدخال التّعديلات التي تحتاجها على مواقعك ومدوّناتك التي تعتمد على ووردبريس. أيّا كان وضعك، هناك أمور يجب عليك أن تعرفها قبل أن تغوص في مجال تطوير ووردبريس. سنحاول في هذا المقال إعطاءك فكرة واضحة عليها. كيف يعمل ووردبريس؟ لنفهم ماذا وكيف يمكننا التطوير في ووردبريس، سنلقي أولا نظرة سريعة على آلية عمل ووردبريس. يتكون ووردبريس من ثلاثة عناصر رئيسية: النواة الأساسية والقوالب والمُلحقات. تحتوي النواة على جميع الوظائف الأساسية التي تشكل نظام إدارة المحتوى لووردبريس، وهذه الشيفرات البرمجية تتضمن كل شيء من البنية التحتية (backend) للإدارة إلى دوال جدولة المشاركات والتأكد من قوة كلمة المرور والسماح بإنشاء مستخدمين وغيرها. في حين أن النواة الأساسية (core) مسؤولة عن البنية التحتية للموقع وكيفية التعامل معها، فإن القوالب مسؤولة عن الواجهة الأمامية للموقع وكيفية ظهوره. نستخدم إدارة ووردبريس (WordPress admin) لإنشاء المشاركات والصفحات وبقية محتوى الموقع، وأما بالنسبة لكيفية ظهور هذه الأشياء للزائر فهو أمر متروك للقالب theme، لذلك فإن هذا سيعطيك قوة كبيرة للتحكم في موقعك، فقد ترغب بتثبيت وتفعيل القوالب الموجودة أو حتى تطوير قوالبك المخصصة. أبسط طريقة لوصف المُلحقات plugins هي أنها توفر وظائف إضافية للووردبريس، ولفعل ذلك، قد تعدّل المُلحق الشيفرة البرمجية للواجهة الأمامية أو البنية التحتية للموقع، وأبسط مثال لذلك هي المُلحق الذي يضيف زر لتغريدة تويتر، وقد تُنشئ أيضا صفحة إعدادات جديدة في البنية التحتية لقائمة الإدارة والتي ستمكنك من إعداد بعض الخيارات الافتراضية لتغريدة المستخدم ويمكنها إضافة نفسها إلى الواجهة الأمامية للموقع، والتي سيكون موقعها في الغالب تحت التدوينة (post). مجالات التطوير بقدر تقدمك في تطوير ووردبريس، ستتمكن من تطوير أي واحدة من المكونات الرئيسية المذكورة أعلاه بالإضافة إلى تطبيقات مستقلة بمساعدة REST API الجديدة وسنذكر المزيد عن هذا الموضوع بعد قليل. مهما كان ما تريد فعله مع ووردبريس، أنصحك باتباع منهج في دراستك، هذه القائمة ستساعدك على التعرف على الأنظمة التي تحتاج إلى معرفتها قبل بدء تعلمك المزيد حول المجال الذي اخترته: القوالب المُلحقات REST API النواة القوالب إن تعلم كيفية عمل القوالب وتطويرها سيسمح لك باحتراف إنشاء المواقع بدءا من المواقع الصفحة الواحدة إلى مواقع المحتوي الحيوي الثقيل، وستسمح لك أيضا بالحصول على المزيد من العملاء (إذا كان هذا ما يهمك) أو حتى بيع القوالب تجاريا. يوجد العديد من مطوري القوالب الناجحين في أسواق مثل Themeforest و Mojo Marketplace وغيرها. ففي وقت كتابة هذا المقال، أشهر قالب على موقع Themeforest تم بيع 1377 نسخة منه في أسبوع أي أكثر من $81,000 في أسبوع واحد فقط! يمكنك الحصول على الكثير من الأموال إذا كنت تستطيع تطوير قالب مميزة. على الرغم من أن هذا المبلغ لا يحققه جميع مطوري القوالب، وربما لن تصبح مليونيرًا بين عشيّة وضحاها من إنشاء القوالب، لكن يمكنك الحصول على مبلغ مالي جيد من القوالب إذا كنت تقوم بالأمر بالشكل الصحيح. إذا أردت رؤية بعض الأمثلة عن القوالب الشهيرة، فألق نظرة على الأسواق التي ذكرناها أعلاه، أو على قسم قوالب ووردبربس حيث جميع القوالب مجانية، فالكثير من مطوري القوالب يصدرون أعمالهم الأولى في هذا القسم. يمكنك تعلم كيفية إنشاء قوالب ووردبريس في أكاديمية حسوب من خلال سلسلة الدروس مدخل إلى تطوير قوالب ووردبريس. الملحقات plugins بطريقة ما، تعتبر المُلحقات شريان حياة ووردبريس، فهي تحوله إلى كل شيء من منتدى إلى شبكة اجتماعية أو منصة للتجارة الإلكترونية وغيرها باستخدام ضغطة زر واحدة، فالمُلحقات تعطيك تحكمًا كاملًا بجميع جوانب نظام ووردبريس، وتسمح لك بتعديل ما تشاء، وسيساعدك هذا كثيرا عند إنشاء مواقع ووردبريس للعملاء. كما هي الحال مع القوالب، فالمُلحقات تملك أيضا أسواقا وفي العادة يتم إدارتها من نفس الشركات التي تدير أسواق القوالب. يعتبر سوق CodeCanyon على سبيل المثال أكبر سوق للملحقات حيث يملك أكثر من 4000 ملحق متاحة للشراء. على الرغم من أن المبيعات ستكون أقل من القوالب إلا أنه يمكنك ربح الكثير إذا أنشأت ملحقًا جيدًا. يملك موقع ووردبريس قسمًا للملحقات المجانية ويحتوي على أكثر من 40000 ملحق، وهو بذلك مصدر كبير للأدوات والإلهام والأمثلة على الشيفرات البرمجية المميزة (والشيفرات البرمجية السيئة للأسف). يمكنك تعلم كيفية إنشاء ملحقات وإضافات ووردبريس في أكاديمية حسوب من خلال سلسلة الدروس مدخل إلى برمجة إضافات ووردبريس. ما بين WordPress.org و WordPress.com لقد أُطلق نظام ووردبريس بطريقتين مختلفتين، حيث كانت الأولى عن طريق WordPress.com؛ أمّا الثّانية، فعبر استخدام WordPress.org، وهذا نظرًا لإمكانيّة احتساب ووردبريس موقعًا للإنترنت، ومنصّة أعمال في آنٍ واحد، حيث يمكنك إنشاء حساب مجّاني في WordPress.com، والحصول على نسخة مُستضافة من نظام ووردبريس لخدمة موقعك، بحيث ستتحمل شركة الاستضافة مسؤوليّة صيانة الخادم وتثبيت ووردبريس عليه، ممّا يوفر عليك بعض العبء، ويتيح لك التّركيز على إنشاء المحتوى. تجني WordPress.com أرباحها عبر تقاضيها لأموال مقابل ترقيتها للمزايا، فعلى سبيل المثال إذا رغبت في استخدام اسم النّطاق الخاصّ بك في WordPress.com، فستحتاج إلى دفع القليل من الرسوم، وهناك الكثير من الشّركات التي تدفع لمنصّة WordPress.com لأجل استضافة مواقع ووردبريس ضخمة، مثل: بي بي سي أمريكا (BBC America)، ومجلة نيويوركر (The New Yorker Magazine)، ومدونة ستار وورز (Star Wars) الرّسمية. بسبب حاجة ووردبريس لدعم مختلف أنواع وأحجام المواقع، تمتلك منصّتها العديد من القيود المتعلّقة بتخصيص المواقع على نحو شخصيّ، فهناك عدد محدود من القوالب التي تتحكم بتنسيق ومظهر المواقع، كما يوجد عدد قليل من الإضافات التي تُعزّز من أداء وظائفه؛ أمّا WordPress.org فهو الموقع الرّسمي لنظام إدارة المحتوى ووردبريس الذي تستضيفه بنفسك. نقصد باستضافة ووردبريس عمليّة تنزيل نسخة من برنامج ووردبريس، وتثبيته على خادم إنترنت، والذي هو بالمقابل عبارة عن حاسب يستخدم برمجيّات خاصّة تسمح له بتوفير الوصول إلى مواقع الإنترنت المُخزّنة به لجميع المستخدمين على الإنترنت، حيث يمكن لهذا الخادم أن يكون مجرّد حاسب عتيق مُلقى في مكان ما بمنزلك، أو قد يكون مركز بيانات متطوّر، ولك حريّة اختيار الخادم المناسب لموقعك حسب تفضيلك، إذ تتيح استضافتك لنظام ووردبريس بنفسك إنشاء موقع إنترنت تمتلك فيه كامل الحريّة في التّحكم؛ بالمقابل، ستقع عليك مسؤوليّة إعداد وتثبيت نظام ووردبريس، وصيانته بنفسك. 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 والمقال WordPress.org and WordPress.com من موقع wordpress.org. حقوق الصورة البارزة: Designed by Freepik.
  6. تعرف على ملحقات ووردبريس التي تُسهّل إضافة تأكيد الاشتراك المزدوج (double opt-in) إلى النشرات الإخبارية. بعد أن تطرّقنا في المقال السّابق إلى أهمية تأكيد الاشتراك المُزدوج double opt-in سنتطرّق في هذا الدّرس إلى مجموعة إضافات تٌسهّل عليك استخدامه على نشرات ووردبريس الإخبارية. توجد العديد من الطرق لإضافة تأكيد اشتراك مزدوج إلى ووردبريس، إن كنت تستعمل ملحق نشرة إخبارية (newsletter plugin) فمن المُحتمل أنه يوفر لك هذه الخاصية، فيما يلي نظرة على بعض الملحقات لإضافة تأكيد الولوج المزدوج إلى خاصيات ووردبريس. E-newsletter يوفر ملحق e-newsletter المقدم من طرف WPMU DEV إمكانية إضافة خاصية تأكيد الاشتراك المزدوج فضلا عن رسالة ترحيب أوتوماتيكية وصفحات تسجيل وإلغاء تسجيل مخصصة. يسمح لك أيضا استعمال مخصص أنماط ووردبريس (WordPress theme customizer) لتصميم نشرتك الإخبارية مُباشرة ضمن ووردبريس باستعمال واحد من سبعة أنماط مدمجة كما يُوفّر خاصيّة المعاينة المباشرة. يمكنك توفير الوقت واستخدام نفس تصميمك السّابق من خلال نسخ رسائلك السابقة، فضلا عن إمكانية إضافة وإدارة الاشتراكات، إنشاء مجموعات، إرسال نشرات إخبارية، والحصول على إحصائيات حملاتك من خلال لوحة التحكم فقط ، يمكن تخصيص الرسائل من خلال إضافة ودجت أو شيفرة مختصرة (shortcode). يُكلّف هذا المُلحق 19 دولار شهريًا. Newsletter يعد هذا الملحق أشهر ملحق مجاني للنشرات الإخبارية على ووردبريس، يوفّر كلّا من تأكيد الاشتراك الأحادي والمزدوج، يتميز بكونه نظام نشرات إخبارية متكاملا بعدد لا محدود من المشتركين والرسائل، يمكن لك استعمال النموذج المدمج أو العمل على نموذجك الخاص وتضمينه في صفحة أو استعماله كودجت. يمكن للنشرات الإخبارية أن تكون نصا عاديًا أو شيفرة HTML، كما يُوفر المُلحق إحصائيات مفصّلة للنّشرات البريدية. Email Subscribers يوفر هذا الملحق المجاني كلا من تأكيد الاشتراك الأحادي والمزدوج، كما يسمح لك بإرسال ثلاث أنواع من الرّسائل لمشتركيك: إرسال تنبيه عند قيامك بنشر مُحتوى جديد. صياغة نشرات إخبارية على شكل HTML وإرسالها يدويا للمشتركين. القيام بإنشاء وإرسال رسالة إخبارية تتضمن أحدث منشوراتك بشكل أوتوماتيكي اعتمادًا على cron job. يمكنك إضافة نموذج الاشتراك إلى الشريط الجانبي باستعمال ودجت (widget)، في صفحة أو منشور باستعمال شيفرة مختصرة (shortcode) أو في ملفات القالب الخاص بك باستعمال PHP، يمكن إرسال رسائل كنص عادي أو كشيفرة HTML . Email newsletter يسمح لك هذا الملحق بإرسال رسائل بصيغة HTML للمشتركين، المعلقين والمستخدمين المسجلين، كما يوفر كلا من تأكيد الاشتراك الأحادي والمزدوج. يمكن له أيضًا أن يتكامل مع ReadyGraph (تبقى هذه الخاصية اختيارية يمكن تشغيلها كما يمكن إيقافها) للمساعدة في بناء حركة زوار وقاعدة مستعملي موقعك. من بين الأمور المثيرة للاهتمام فيما يخص هذا الملحق أنه سيقوم بإرسال رسائل أوتوماتيكية للمستخدمين بناء على درجة نشاطهم. يمكن لك القيام بإرسال رسائل ترحيب، ملخصات أسبوعية، تنبيهات بالتحاق الأصدقاء، إلخ. كل الخصائص قابلة للتّخصيص فضلا عن إمكانية تصدير قائمتك كملف CSV . Subscribe To Comments Reloaded لقد تم بناء هذا الملحق بالاعتماد على ملحق Subscribe to Comments، حيث يسمح للمستخدمين بالاشتراك في التعليقات من خلال نظام تأكيد مزدوج، يمكنهم القيام بالتسجيل وإلغائه بالنسبة لكل منشور بشكل منفصل، كما يتضمن واجهة تحكم بها مجموعة من الأدوات لإدارة الاشتراكات، النماذج والتنبيهات فضلا عن قدرتك على إنشاء صفحة إدارة خاصة بك باستعمال الرسائل والخصائص التي قمت بإعدادها. Subscribe to Double-Opt-In Comments تم بناء هذا الملحق أيضًا بناءً على ملحق Subscribe to Comments، يسمح للمستخدمين بالاشتراك في التعليقات من خلال نظام تأكيد مزدوج، يعمل هذا الملحق على تلقي القراء تنبيهات عند نشر تعليقات جديدة على المقالات التي سبق لهم الاشتراك فيها، كما يتضمن صفحة خيارات حيث يمكن لك صياغة مضمون الرسالة، بالمقابل، أنت لا تملك أي تحكم في الاشتراكات ولا أي خصائص إدارة، تكمن جمالية هذا الملحق في بساطته. Opt-In Panda for Wordpress يستعمل هذا الملحق طريقة تأكيد اشتراك مزدوج لا تتطلب صفحة تأكيد، تسمح لقرائك بالاشتراك لولوج صفحة محتواك المحمي حيث يتم توفير خاصية تأكيد الاشتراك المزدوج، بعد القيام بتأكيد عنوان البريد الإلكتروني (بغرض إتمام تأكيد الاشتراك المزدوج) يتم عرض المحتوى دون الحاجة إلى إعادة تحميل (refresh) الصفحة. يبلغ ثمن النسخة العادية Regular license) 22$) للاستعمال مع منتوج واحد لا يقوم مستخدموك بالدّفع مُقابله، يبلغ ثمن النسخة الخاصة 110$ (Extended license) للاستعمال مع منتوج واحد مع إمكانية أن يدفع مستخدموك مُقابله. نصائح إضافية فيما يخص تأكيد الاشتراك المزدوج في حال ما إذا كنت تحتاج نصائح إضافية حول كيفية توفير وإعداد تأكيد اشتراك مزدوج إليك فيما يلي بعض الأفكار السريعة المهمة: اجعل نموذجك غاية في السهولة، لا تجعل مشتركيك يدخلون معلومات لا حاجة لك بها، ما تحتاجه فعلا هو حقلان وزر واحد: الاسم البريد الإلكتروني الضغط للقيام بالاشتراك احصل على أسمائهم الشّخصية حتى يتسنّى لتطبيق النشرات الإخبارية الخاص بك استعمالها لدى إرسال رسائل مخصصة لكل مشترك. قم بكتابة رسالة ترحيب جيدة تخبر فيها مشتركيك بتقديرك لتخصيصهم الوقت للاشتراك. قم بإهدائهم شيئا يحبونه، يعتبر تقديم بعض الهدايا المجانية ككتاب إلكتروني أو قائمة من النصائح للتحفيز على الاشتراك من بين الممارسات المنتشرة، بالنسبة للكتب الإلكترونية استعمل صيغة PDF نظرا لانتشارها وسهولة القيام بتصميم كتابك، يعتبر توفير الولوج المجاني لمقاطع فيديو مدفوعة أمرا رائجا أيضا، لا تهتم كثيرا بإخفاء الكتاب، من المحتمل أن يقوموا بإلغاء التسجيل بعد الحصول على الهدية المجانية لكن يبقى واردا أن لا يقوموا بذلك. لا تُلح على زوّارك كثيرا لكي يشتركوا، يكفي أن يعرفوا بوجود نشرة إخبارية، قد تسبب مضايقتهم بشكل مستمر بنفورهم خصوصا إن كانوا قد اشتركوا من قبل. اجعل نماذجك، صفحات الشكر، الرسائل وصفحة التأكيد واضحة وسهلة الفهم، تجنب استعمال لغة محيرة محافظا بذلك على البساطة والسلاسة قدر الإمكان. تواصل معهم في كل المراحل حتى لا يعتقدوا أن رسائلك أو نشرتك الإخبارية عبارة عن بريد مزعج ، كن حريصا على جعل خانة "المُرْسِل" من رسالتك تماما كما يتوقعه المشتركون. على سبيل المثال إن قاموا بالتسجيل في نشرة إخبارية حول أفضل وصفات الشواء لن يتوقعوا تلقي رسالة تأكيد من اسم شركة تبدو صناعية أو تجارية. ذكّرهم بأنهم قاموا بالاشتراك في نشرتك الإخبارية. في حين تعتبر مضايقة المشتركين أمرا سلبيا، يبقى تذكيرهم بأنهم اشتركوا في نشرتك أمرا مقبولا بل قد يكون مفيدا في أغلب الأحيان في عودة الزوار إلى موقعك. قم بتوفير طريقة سهلة للقيام بإلغاء الاشتراك، صدقا أعرف أنك تريد الحفاظ على كل المشتركين دون نقصان لكن الإبقاء عليهم دون رغبتهم من خلال تعسير عملية إلغاء الاشتراك أمر غير عادل ما يفرض ضرورة توفير طريقة إلغاء اشتراك سهلة وعملية، ما يحد خسارتك في فقدان مشترك دون تعدي ذلك لتكوين نظرة سلبية حول موقعك بسبب تعقيدك عملية إلغاء الاشتراك. خلاصة بالنظر إلى الفوائد الجمة لتأكيد الاشتراك المزدوج لا يوجد سبب مقنع لعدم استعماله، حيث يمكنك تجنب المخاطر المحتملة من استعمال التأكيد الأحادي فضلا عن بناء محتوى ذا جودة عالية وقائمة بريدية قَيِّمَة ما يستحق المخاطرة بإمكانية فقدان بعض المشتركين المحتملين الذين لا يريدون تكبد عناء إتمام خطوات التأكيد. ترجمة -وبتصرّف- للمقال: ADDING A DOUBLE OPT-IN TO WORDPRESS EMAILS NEWSLETTERS AND WHY IT’S BEST PRACTICE لصاحبه: BRENDA BARRON.
  7. أحد أسوأ الأمور في موسم الأنفلونزا حتمية إصابتك بالمرض. فقد يأتي زملاء العمل وهم يعانون من رشح في الأنف. أو ربما تستقل الحافلة إلى مكان عمل مشترك، فيسعل ركاب آخرون ويلمسون نفس المَسند الذي تمسك به. أو ربما كنت تعمل من منزلك "الآمن" إلا أنه من المحتمل أن ينقل لك أطفالك جراثيم خطيرة تعرضوا لها في المدرسة. بغض النظر عن المكان الذي تذهب إليه أو من تكون محاطًا بهم فقد تشعر في بعض الأحيان أنه لا يوجد مكان آمن. ولكن هذا ما يحدث عندما تعمل وتعيش بالقرب من الآخرين. إذا كان شخص واحد مصابًا فانتشار المرض مسألة وقت فقط. الأمر نفسه ينطبق على التعرض لمخاطر الثغرات العابرة للمواقع (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
  8. توجد الكثير من التطبيقات الموفِّرة للوقت وأطر عمل 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
  9. عندما أُصدر قانون حقوق الطبع والنشر الأمريكي الأصلي عام 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
  10. لا شك أن شركة أدوبي (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
  11. واحدة من أبرز قوى ووردبريس مكتباته التي تحتوي على المئات من دوال PHP، وهذه الدوال لديها وظائف متعددة من كتابة روابط التدوينات والمشاركات داخل الإضافة إلى استرجاع اسم مستخدم كاتب التدوينة والاستعلام عنه في قاعدة البيانات. فإذا لم تفهمهم، ستكون العناصر الأساسية للووردبريس مثل the_post غريبة بالنسبة لك، وسيكون الكود التي تكتبه مليئا بالأخطاء والغرابة. وفي نفس الوقت، عند محاولة استعمال المئات من الدوال ذات أسماء غير نظامية يمكن أن يسبب الإرباك لقارئها، لذا سأقوم اليوم بإعطائك مبدأين أساسيين لفهم دوال ووردبريس. هذه المبادئ المنطقية تطبق بشكل واسع (إذا لم يكن عالميا) على مكتبات الدوال، والتي سوف تعطيك نظرة خاطفة على وظيفة دالة ووردبريس معينة. 1. دوال _get تقوم بإرجاع أشياء و دوال _the تطبع أشياءهذا ملخص بسيط لآلية عمل هذين الدالتين: دوال _get تقوم بإرجاع قيمة، مما يسمح لك بالتعامل معها في تعليمات برمجية لاحقة. دوال _the تقوم بطباعة قيمة في صفحة HTML في المكان الذي تم استدعاؤها فيها.ولتوضيح ذلك، لنلق نظرة على الكود المصدري لدالتين، دالة ()the_ID و دالة ()get_the_ID: function get_the_ID() { post = getpost(); return !empty(post ) ? $post->ID : false; } function the_ID() { echo get_the_ID(); }باختصار، إن دالة ()get_the_ID تقوم بإرجاع مُعرف الرقمي للتدوينة، وأما return فهي تعني: قُم بإعطاء القيمة لمن طلبها”، وعندما تحصل على هذه القيمة، يمكنك القيام بأي شيئ بها، مثلا تقوم بضربها في 3، قسمتها على 2، وغيرها حسب البرنامج، (بالمناسبة إذا كنت تتساءل على بقية الشِفرة البرمجية فإن معناها قُم بإرجاع المُعرف، أو قُم بإرجاع false إذا لم تجد التدوينة التي يجب أن تحصل على مُعرفها). لنفترض أنك ترد تعديل صفحة php، لنأخذ ملف index.php للقالب على سبيل المثال، وتريد أن تقوم بطباعة عنوان التدوينة في الصفحة، هذه بعض الخيارات لتفعل ذلك: <h1><?php get_the_title(); ?></h1> <!-- لن يتم طباعة أي شيئ --> <h1><?php the_title(); ?></h1> <!-- طباعة عنوان التدوينة داخل عنصر h1 --> <h1><?php echo get_the_title(); ?></h1> <!-- طباعة عنوان التدوينة داخل عنصر h1 --> <h1><?php echo 'My title: ' . get_the_title(); ?></h1> <!-- طباعة ": My title" وعنوان التدوينة داخل عنصر h1 -->سيكون مفيدا أن تعرف هذه العلاقة التي تُعقد عبر مكتبة دالة ووردبريس مع استثناء أن ()the_post تقوم بشيء مهم لكنها لا تطبع أي شيئ. 2. داخل أو خارج الحلقة التكراريةالحلقة التكرارية هي النواة التقنية الأساسية لووردبريس، بعض الدوال يجب أن يتم استدعاؤها داخل الحلقة التكرارية، وبعضها لا يجب ذلك، فمثلا هذا المثال يوضح لك ما معناه "دالة داخل الحلقة": //خارج الحلقة التكرارية if ( have_posts() ) : while ( have_posts() ) : the_post(); // داخل الحلقة التكرارية، محتويات التدوينة تكون هنا endwhile; endif; // خارج الحلقة التكرارية مرة أخرىللتمييز بين “دالة داخل الحلقة” و “دالة خارج الحلقة”، سنقوم باستخدام التشبيه لتفسير مكان الحلقة داخل الووردبريس: لنتخذ ووردبريس كمصنع سيارات! ووردبريس هو مصنع السيارات. المشاركات والتدوينات هي السيارات. الحلقة التكرارية هي خط التجميع في المصنع.دعونا نشرح العلاقة بين هذه المصطلحات بمزيد من التفاصيل: خط التجميع تدخل داخله أجزاء السيارات خامة لتخرج سيارة كاملة. بنفس الطريقة، الحلقات التكرارية هي مواد المشاركات الخامة (محتوى المشاركة والبيانات التعريفية) تدخل لتخرج صفحة HTML جاهزة.والآن دعونا نشرح الجزء المهم: كل عملية تقوم بتغيير أو تقوم باسترداد معلومات حول السيارات يجب أن تكون في خط التجميع، ويجب أن يتم الإعلان عن أية سيارة ستعمل بطريقة أخرى، فالعمليات التي لا تعمل على السيارات يجب أن لا تكون في خط التجميع. وبالمثل، كل دالة تقوم باسترداد أو تغيير أو عرض لخصائص التدوينة أو المشاركة يجب أن تكون إما داخل الحلقة التكرارية أو يجب أن يتم إعطاء معرف التدوينة أو المشاركة للتعامل معها كمعامل (paramter) للدالة. الدوال التي لن تعمل عن التدوينات/المشاركات لا يجب أن تكون داخل الحلقة التكرارية. عمليا هذا يعني: إن دوال _the وأغلب دوال _get_the تفترض معرفة التدوينة/المشاركة الحالية لذا سيعملون فقط داخل الحلقة التكرارية. أما في خارج الحلقة التكرارية، يجب إخبار دوال _get_the على أية تدوينة ستعمل، أي يجب تمرير معرفة التدوينة. الدوال التي لا تستخدم لاسترداد أو تغيير أو عرض لخصائص التدوينة/المشاركة يجب أن لا يتم استدعاؤها في الحلقة التكرارية.على خط التجميع: دالة _the_title التي تعمل فقط في الحلقات التكرارية. بالنسبة لآلة الطلاء فإنه يجب على الآلة أن تعرف الكثير من المعلومات حول السيارات قبل البدء بطلائه، ولهذا السبب ستجد هذه الآلة في خط التجميع تحصل على معلومات السيارة الحالية بهذه الطريقة و سوف تكون في المكان الصحيح لطلاء السيارة في الوقت المناسب في المصنع. آلة الطلاء في هذه الحالة هي دالة _the_title، فهي تعمل فقط داخل الحلقة التكرارية، وهي تقوم بطلاء الموقع الذي صممه المصنع لعمل عنوان التدوينة الحالية. لتكون قادرا على الإشارة إلى عنوان تدوينة في موقع ربما يمتلك أكثر من 1000 تدوينة ومشاركة يجب أن نعلم أية تدوينة نريدها بالضبط، والدالة التي تقوم ببساطة بطباعة عنوان التدوينة (بدون خيارات أخرى) لن تؤثر كثيرا خارج سياق الصفحة التي صممت من تلك التدوينة. لذلك فالطريقة الوحيدة لتعمل دالة ()the_title هو وضعها داخل الحلقة التكرارية، مثل الآلة الطلاء التي لا يجب أن تكون في بهو المصنع. داخل أو خارج خط التجميع: ()get_the_title، دالة داخل أو خارج الحلقة التكرارية. دعونا نفترض أنك تريد معرفة لون طلاء لسيارة، وهذا الأمر سيكون ذا أهمية داخل خط التجميع، وفي هذه الحالة سوف تقوم ببناء آلة تقوم بإعطائك لون السيارة التي تمر من أمامها. لكن قد ترغب أيضا بإرسال فريق مراقبة الجودة إلى منطقة الشحن للحصول على لون سيارة معينة، لذلك سوف يحتاج الفريق إلى معرفة أية سيارة سيقومون بتفقدها، وإلا لن يستطيعوا إخبارك بأي شيئ. بكلمات أخرى، يمكنك فعل هذا داخل أو خارج خط التجميع، لكن إذا كنت في الخارج، يجب عليك أن تقوم بخطوة إضافية لتحديد أية سيارة أنت مهتم بها. فمثلا دالة ()get_the_title التي تعمل داخل الحلقة التكرارية بدون إدخال معطيات، أو خارج الحلقة مع إدخال مُعرف التدوينة، كما يلي: get_the_title(); // يتم استدعاؤها داخل الحلقة التكرارية، تقوم بإعطائك عنوان التدوينة الحالية. // استدعاؤها خارج الحلقة لن يفيد. get_the_title(‘121’); // داخل أو خارج الحلقة التكرارية، تقوم بإعطائك عنوان التدوينة مع المُعرف 121.خارج خط التجميع: ()wp_enqueue_script، دالة خارج الحلقة التكرارية. حتى الآن تحدثنا كثيرا حول خط التجميع في المصنع، ومع ذلك، قد يحتوي المصنع أيضا على مستودع ومكتب الاستقبال وقسم الشحن والمكاتب الإدارية وغيرها. ولا أي إدارة من هذه الإدارات تحتاج إلى معرفة أية سيارة يتم العمل عليه الآن، وأنت بالتأكيد لا تريد وضع المكاتب الإدارية مع خط التجميع. وهذا هو نفس الحال مع دالة ()wp_enqueue_script التي لا تفيد داخل الحلقة التكرارية، فهذه الدالة تستعمل لمعرفة أن صفحة ما تم صنعها بواسطة مصدر خاص للووردبريس أو لا. ملفات جافاسكريبت ليست جزءً من التدوينة تم صنعه بواسطة الحلقة التكرارية، فهو لا يتفاعل مع التدوينات بنفس الطريقة التي لا يتفاعل فيها مكتب الحسابات مع السيارات، فعندما توجد شحنة سيارات جاهزة، سوف يتأكد هذا القسم من أن الشحنة لديها فاتورة ملتصقة بها، لكنه بالتأكيد لا يعقل أن يتم إلصاق الفاتورة على أرض المصنع. لذلك لا تقم باستخدام دالة ()wp_enqueue_script في الحلقة التكرارية، وسيكون أفضل لو وضعتها في ملف functions.php للقالب أو للإضافة. قم بالبرمجةحسنا حاولت تسهيل هذا الأمر عن طريق استعمال جميع معرفتي عن مصانع السيارات، و من الأرجح أنني قمت بتوسيع منطقة التشبيهات داخل دماغي، لكن أرجو أنني علمتكم بعض المفاتيح الرئيسية التي سوف تمكنك من الدخول إلى عالم دوال ووردبريس وأنت مطمئن، وإذا كان لديك أي سؤال أو تعليق، فيسرنا أن نسمعه في التعليقات في الأسفل، وإذا أعجبك هذا المقال، أرجو أن تقوم بمشاركتها مع أصدقاءك. ترجمة -وبتصرف- للمقال: Two Key Principles for Understanding WordPress Functions لصاحبه Fred Meyer. حقوق الصورة البارزة: Business vector designed by Freepik.
  12. أصبحت الفترة التي تزامنت مع ظهور الوسائل والطرق الجديدة التي يحاول المطورون استخدامها لإقناع الزائرين بالصور المتخصصة والمحتوى الديناميكي وإضافة الفيديو فترةً مهمة لتحميل صفحة الموقع ومصدر قلق دائم لمطوري الويب، خاصةً تلك الوسائط التي تحتاج وقت كبير في التحميل. وقد يظهر هذا القلق واضحًا عند إضافة أي محتوى جديد على اختلاف نوعه إلى صفحة الموقع، وهنا يتطلب من الموقع الخاص بك إنشاء طلبيات 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
  13. كثيرًا ما سمِعتَ بأنك تستطيع صنع مجموعتك الخاصة من الأيقونات في فوتوشوب، او بإمكانك البحث عنها على الإنترنت، ولكن ماذا إن أخبرتك بأنك تستطيع الوصول إلى مكتبات كبيرة من الأيقونات مباشرةً في فوتوشوب؟ نود اليوم أن نقدم لك هذه الإضافة في فوتوشوب. أولًا: مجموعة FlatIcon أكثر من 10,000 شكل متجه تضاف مباشرةً إلى فوتوشوب. ثانيًا: مجموعة Pixel 2 Vector تعرّف على أكبر مجموعة من الأيقونات المستخدمة في فوتوشوب بالمجان! ثالثًا: مجموعة Creative Market الوصول المباشر لمحتوى التصميم المميز من Creative Market. بإمكانك إيجاد المزيد على موقع blogging.com، وبإمكانك إيجاد مكونات إضافية اكثر من المتجهات في فوتوشوب: هذه القائمة تحتوي على أفضل الإضافات لفوتوشوب: تصميم المواقع الإلكترونية، والفُرَش، وأنماط الرسم، وتعديلات الألوان، وسير العمل، والفلترة، والمؤثرات الخاصة والتحجيم. ترجمة -بتصرف- للمقال ‎Access vector icons لصاحبه Zsolt Mathe
  14. حين تفكر في المشكلات المحتملة التي يمكن أن تتسبب فيها الإضافات لموقع ووردبريس الخاص بك، ستفكر على الأرجح في الإضافات رديئة البرمجة التي تؤدي إلى مشكلات في الأداء وثغرات أمنية، أليس كذلك؟ أو ربما تكون قد قرأت شيئًا مؤخرًا عن الإضافات المزيفة وأصبحت قلقًا بشأن موثوقية إضافاتك والمشكلات الأمنية التي قد تتسبب فيها. لكن هناك مسألة أخرى تتعلق بالإضافات عليك أن تدركها حين تضيف إضافات جديدة لموقعك، أو حتى حين تقوم بتحديث الإضافات الموجودة: تعارض الإضافات من الرائع أن هناك عشرات الآلاف من الإضافات التي صممها مطورون مختلفون، كلها صنعت لتلبية حاجاتٍ مختلفة. لكن لا شيء يضمن أن ما صنعه أحد المطورين لن يتعارض مع شيءٍ آخر على موقعك. تنشأ هذه التعارضات في العادة بسبب: تعارض بين إضافتين تعارض بين القالب الخاص بك وبين إضافة جديدة أو إضافة محدثّة تعارض بين إضافة ونسخة إصدار ووردبريس الحالية للموقع تظهر أعراض تعارض الإضافات عادةً في إحدى صورتين: إما أن يبدأ موقعك في التصرف بغرابة، تحديدًا حين تتوقف الإضافة عن العمل بالطريقة التي يجب أن تعمل بها – أو حين تطل "شاشة الموت البيضاء" برأسها البغيض بعد آخر تحديثٍ أو أحدث تثبيتٍ لإضافةٍ جديدةٍ. إذا ما حدث ذلك لأحد مواقع الووردبريس الخاصة بك، عليك أن تعرف كيف تشخِّص المشكلة وتتصرف بسرعة لعلاج الموقف. يقدم لك الدليل التالي الخطوات التي تحتاجها لتحديد تعارض إضافات ووردبريس ومن ثم تقوم بإصلاح موقعك. كما يتضمن الدليل أيضًا بعض النصائح لتجنب تكرار ذلك التعارض في المستقبل. كيف تشخص مشكلة تعارض إضافات ووردبريس وتحلَّها تقدم ووردبريس ومستودعات الإضافات الأخرى تفاصيل ومواصفات تقنية وتقييمات عملاء كثيرة جدًا لكل إضافة أو قالب لسبب وجيه. ذلك لأنهم يتوقعون أن يطَلع العملاء على هذه المعلومات لاتخاذ قرار واعٍ بشأن اختيار الإضافات المناسبة لمواقعهم. لهذا الأمر أهمية خاصة بالنسبة لأولئك المستخدمين الذين لا يستطيعون فحص البرامج، ويريدون أن يعرفوا إن كانت هناك مشكلات محتملة عليهم الانتباه لها. انتبه جيدًا للتفاصيل المهمة عند مراجعة إضافة جديدة أو قالب جديد في ووردبريس في المثال السابق، يمكنك أن ترى أن كل صفحة إضافة تعطي المستخدم فرصةً كافيةً للتأكد من أن المطور يتابع تحديث الإضافة مع تحديثات ووردبريس. كما يتمكن المستخدم أيضًا أن يرى ما يقوله الآخرون عن الإضافة في قسم "التقييمات والمراجعات"، بالإضافة إلى التعرف على نوعية المشكلات التي واجهتهم في قسم "الدعم". في هذا القسم ستكتشف مشكلات تعارض الإضافات المعروفة قبل أن تحدث على موقعك. لكن لعل تلك المشكلات الناتجة عن تعارض الإضافات لم يُعلن عنها. ماذا تفعل في تلك الحالة إذا ما توقفت إضافةٌ عن العمل أو ظهرت رسالة خطأ على موقعك أو ظهرت لك شاشة الموت البيضاء؟ إليك السيناريوهات الثلاثة التي ستجد نفسك في أحدها على الأرجح، وما الذي عليك فعله حيالها: السيناريو الأول: الموقع يعمل لكن الإضافة لا تعمل إذا كانت إحدى الإضافات على موقعك لا تعمل مطلقًا، أو لا تعمل بكفاءةٍ، لكنك لا تزال قادرًا على الوصول إلى ووردبريس وإلى موقعك، ابحث عن تحديثٍ للإضافة. لعل شيئًا ما متعلقًا ب 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
  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. توجد الكثير من المقالات التّتي تتحدّث عن ترجمة إضافات Plugins ووردبريس، إلّا أنّ القليل منها يتطرّق لتفاصيل عمليّة التّرجمة عندما تكون مهمَّة يوميّة. مالّذي يحدُث عند تغيير جزء من الشّفرة البرمجيّة Code؟ مالّذي يحدُث عند إضافة سلاسل محارف Strings جديدة؟ مالّذي يحدُث عند تحديث إضافة إلى إصدار جديد؟ هذه هي نوعيّة الأسئلة الّتي سيُجيب عليها هذا المقال. سنتطرَّق، خطوة بخطوة، كيف نعمل من أجل أن تكون الإضافات الجديدة أو المُحدَّثة جاهزةً للتّرجمة إلى أيّ لغة. يتوفّر ووردبريس بلغات عدّة: تُضَمَّن في نظام ووردبريس لإدارة المحتوى قابليّةُ الاستخدام بأيّ لغة، على الرّغم من أنّ لغة الواجهة الافتراضيّة هي الإنجليزية الأميركية (التّرميز en_US). إنشاء إضافةأوّل ما يجب تنفيذه هو إنشاء إضافة. سننشئ إضافةً للتّطبيق عليها. يُمكنك متابعة درس مُقدّمة إلى برمجة إضافات Wordpress للمزيد حول برمجة إضافات ووردبريس. ستعمل الإضافة على كتابة نصّ تحفيزي في التّرويسة Header. أولًا أنشئ مجلَّدًا جديدًا ضمن مجلَّد الإضافات وسمِّه wp-admin-motivation. ثمّ أنشئ ملفًّا ضمن هذا المجلّد وسمِّه wp-admin-motivation.php. في ما يلي الشّفرة الّتي يجب وضعها في الملفّ: <?php /* Plugin Name: Admin Motivation Plugin URI: http://danielpataki.com Description: Shows motivational messages in the admoin bar Author: Daniel Pataki Version: 1.0 Author URI: http://danielpataki.com Text Domain: wp-admin-motivation */ function get_motivation_text() { $motivation = array( 'You are awesome', 'This website is boss', 'You look great today', 'Your earlobes are well rounded, good job!' ); shuffle( $motivation ); return $motivation[0]; } add_action( 'admin_notices', 'show_motivation_text' ); function show_motivation_text() { $text = get_motivation_text(); echo "<p id='wp-admin-motivation'>$text</p>"; } add_action( 'admin_enqueue_scripts', 'motivation_assets' ); function motivation_assets($hook) { wp_enqueue_style( 'motivation-styles', plugin_dir_url( __FILE__ ) . 'styles.css' ); }تخلِط الدّالّة الأولى ()get_motivation_text مصفوفة Array من العبارات التّحفيزيّة باستخدام دالّة shuffle الموجودة في PHP، ثمّ بعد الخلط تختار العبارة الأولى من المصفوفة. يُمكن عدّ دالّة ()get_motivation_text وسيلةً لتوزيع العبارات التّحفيزيّة عشوائيًّا. نربُط في الخطوة التّاليّة بين دالّة ()show_motivation_text والخطّاف Hook المسمَّى admin_notices. تحصُل دالّة ()show_motivation_text على عبارة تحفيزيّة عشوائيّة عن طريق ()get_motivation_text ثمّ تطبع العبارة داخل فقرة ذات معرّف wp-admin-motivation. تكون العبارة التّحفيزيّة، بالوصول إلى هذه النّقطة، مرئيّة؛ ولكنّنا سنغيّر موضعها لتكون إلى جانب تبويب خيّارات/مساعدة (Options/help). نستخدم CSS لهذا الغرض. تكتفي بعض الإضافات بوضع بضعة أسطر CSS في التّرويسة، إلّا أنّ الطّريقة الصّحيحة للتّعامل مع CSS هيّ إدراج الأسطُر ضمن الطّابور Queue؛ وذلك عن طريق ربط دالّة ()motivation_assets بالخطّاف admin_enqueue_scripts وإدراج CSS في الطّابور هناك. يحدّد النّمط مواضع النّصّ مع أخذ اتّجاه الكتابة من اليمين إلى اليسار Right-to-left, RTL في الحسبان. #wp-admin-motivation { float: right; padding-right: 15px; padding-top: 7px; margin: 0; font-size: 11px; } .rtl #wp-admin-motivation { float: left; padding-left: 15px; }الإضافة جاهزة الآن للعمل. المشكل الوحيد هو أنّ العبارات التّحفيزيّة تستخدم الإنجليزيّة فقط. إن أردت استخدام لغة أخرى فسيتطلّب الأمر إنشاء إضافة مماثلة وإبدال العبارات الإنجليزيّة بعبارات اللّغة المستهدفة. تخيّل أنّك تُريد استهداف عشرين لغةً، يعني هذا أنّك ستحتاج لعشرين إضافة لا يوجد فرق بينها سوى في العبارات المعروضة. الكثير من الجهد المهدور، لا بدّ من وجود وسيلة أخرى. تدويل Internationalizing إضافةيهدف تدويل الإضافات في الأساس إلى جعلها جاهزةً لتُترجَم. يتطلّب التّدويل تغليفَ سلاسل المحارف Strings في دوالّ خاصّة تُسخدَم لتحميل التّرجمات الصّحيحة. توجد العديد من دوالّ التّدويل إلّا أنّنا سنأخذ فقط واحدةً منها، وهي دالّة ()__، ونترك البقيّة إلى أن نفهم المثال. تأخذ الدّالّة ()__ معطييْن: النّص الّذي نُريد ترجمته ونطاق النّصّ Text domain. في ما يلي الصّيغة العامّة لاستخدام هذه الدّالّة: <?php $greeting = __( 'Hello There!', 'text-domain' ); ?>نحصُل بعد استخدام دالّة ()__ على ترجمة النّصّ إن كانت موجودة، وإلّا فإنّ الدّالّة تُعيد النّصّ الأصليّ. تستخدم الدّالّةُ اللّغةَ الحاليّة لتحديد التّرجمة المطلوبة. يُمكنك الانتقال بين لغات ووردبريس في الإعدادات. تُطبَّق اللّغة المُختارة في الإعدادات على جميع التّرجمات. نأتي الآن لنطاق النّصّ، حتّى تكتمل عندنا الصّورة. نطاق النّصّ هو طريقة لتجميع التّرجمات مع بعض. لدى القالب Theme الّذي تستخدمه نطاق نصّ خاصّ به، نفس الشّيء بالنّسبة لجميع الإضافات. تجعل نطاقات النّصوص من التّفريق بين التّرجمات عمليّةً أيسر. يجب أن يكون نطاق النّصّ، بالنّسبة للإضافات، مطابقًا لاسم مجلّد الإضافة. يعني هذا، في مثالنا، أنّ نطاق النّصّ يجب أن يكون wp-admin-motivation. كلّ ما ياوجّب علينا فعله، من أجل تدويل الإضافة، هو تغليف سلاسل المحارف بالدّالّة ()__. $motivation = array( __( 'You are awesome', 'wp-admin-motivation'), __( 'This website is boss', 'wp-admin-motivation'), __( 'You look great today', 'wp-admin-motivation'), __( 'Your earlobes are well rounded, good job!, 'wp-admin-motivation')' );تنفيذ التّرجماتجعلنا في الخطوة السّابقة سلاسل المحارف جاهزةً للتّرجمة، لكن لحدّ الآن لا توجد أيّ ترجمات على الموقع. يجب أن نخبر ووردبريس أين توجد ترجمات الإضافة. الطّريقة المعياريّة لذلك هي إنشاء مجلّد فرعيّ باسم lang ضمن مجلَّد الإضافة. أنشئ مجلّد lang الآن وأضف الشّفرة التّاليّة في الملفّ الرّئيس للإضافة حتى يعرف ووردبريس أين توجد التّرجمات: add_action('plugins_loaded', 'wan_load_textdomain'); function wan_load_textdomain() { load_plugin_textdomain( 'wp-admin-motivation', false, dirname( plugin_basename(__FILE__) ) . '/lang/' );تعدّ دالة ()load_plugin_textdomain أساسيّةً هنا ويجب أن تُستدعى من دالّة مربوطة بالخطّاف plugins_loaded. أوّل معطى لدالّة ()load_plugin_textdomain هو اسم نطاق النّصّ الّذي تحدّثنا عنه سابقًا، الثّاني مهجور Deprecated، والثّالث هو مجلّّد اللّغة. ستكون أسماء ملفّات التّرجمات على صيغة plugin_name-locale.mo. حيثُ plugin_name اسم الإضافة وlocale المحلّيّة. سنرى في ما بعد كيفيّة إنشاء هذه التّرجمات. تذكّر، في الوقت الحاليّ، أنّك يجب أن تضع ملفّات التّرجمات هنا. ملحوظة: المحليّة Locale هي مجموعة من المُعطيات تحدّد لغة المستخدم، دولته، وأيّ تفضيلات خاصّة قد يودّ المستخدم رؤيتها في لغة الواجهة. سنختار ترجمة العبارات التّحفيزيّة الموجودة في الإضافة إلى اللّغة العربيّة؛ لذا سيكون المفّ باسم wp-admin-motivation-ar.mo. بالوصول إلى هذه النّقطة سيعمل كلّ شيء بالطريقة المرجوَّة، ينقُصُنا فقط إنشاء التّرجمات. إنشاء التّرجماتتوجد طُرُق متعدّدة لإنشاء ترجمات إلّا أنّ النّتيجة في النّهاية متطابقة. ستحصُل على ملفّين، أحدهما بامتداد po. والآخر بامتداد mo. الأوّل يُمكن للأشخاص قراءته، ويُمكنك فتحه بأيّ محرّر نصوص والتّعديل عليه. أمّا الملفّ ذو الامتداد mo. فهو نتاج تحويل ملفّ po. إلى صيغة مقروءة بالنّسبة للآلة، ذات حجم أصغر بكثير إلّا أنّه لا يمكن للإنسان قراءتها. في ما يلي مثال على ملفّ PO غير مُترجَم. توجد في أعلى الملفّ معلومات أساسيّة عن التّرجمة، المترجِم والمشروع؛ تليها سلاسل محارف تُمكن ترجمتها متبوعة بأماكن التّرجمات المنتظَرة. msgid "" msgstr "" "Project-Id-Version: WP Admin Motivation 1.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-04-27 13:09+0100\n" "PO-Revision-Date: 2015-04-27 13:09+0100\n" "Last-Translator: Daniel Pataki <contact@tastique.org>\n" "Language-Team: Daniel Pataki <hello@danielpataki.com>\n" "Language: Hungarian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-KeywordsList: __;_e\n" "X-Poedit-Basepath: .\n" "X-Poedit-SearchPath-0: ..\n" #: ../wp-admin-motivation.php:20 msgid "You are awesome" msgstr "" #: ../wp-admin-motivation.php:21 msgid "This website is boss" msgstr "" #: ../wp-admin-motivation.php:22 msgid "You look great today" msgstr "" #: ../wp-admin-motivation.php:23 msgid "Your earlobes are well rounded, good job!" msgstr ""الصّيغة العامّة للأسطُر في ملفّ التّرجمة هي التّاليّة: #: مسار الملفّ الّذي توجد به السّلسلة:رقم السّطر حيثُ توجد السّلسلة msgid "السّلسة المطلوبة ترجمتها" msgstr "التّرجمة"قد تظنّ أنّ كون أماكن تواجد السّلاسل مذكورة مباشرةً بعد ذكر رقم السّطر الّذي تتواجد به يجعل من إنشاء وصيّانة ملفّات التّرجمة أمرًا شاقًّا. لهذا السّبب توجد أدوات مخصًّصة للمساعدة. تُساعد أدوات المدير Admin tools في توليد ملفّات po. للإضافات الموجودة في مستودع ووردبريس. كما يُمكن أيضًا إنشاء ملفّات po. عبر البرنامج الرّائع Poedit. نزّل Poedi وشغّله؛ انقُر على File (ملفّ) ثمّ New catalog (مسرَد جديد). أدخل المعلومات المطلوبة في النّافذة المنبثقة. لا تهتّم بطقم المحارف (Charset) وصيّغ الجمع (Plural forms)؛ سنكتفي الآن بالمعلومات الأساسيّة. انتقل إلى تبويب Sources paths (مسارات المصادر). يُخبر مربَّع Paths (المسارات) Poedit أين يجب عليه البحث عن السّلاسل القابلة للتّرجمة ذات العلاقة بالمسار القاعديّ (Base path). سنضع التّرجمات ضمن مجلَّد فرعيّ في الإضافة؛ يعني هذا أنّ لدينا خيّارين لإعداد المسارات في Poedit: ضبط المسار القاعديّ Base path على القيمة /.. (المجلَّد الأب) وإعطاء القيمة . (المجلَّد الحاليّ) لمربَّع المسارات Paths.ضبط قيمة المسار القاعديّ Base path على قيمة المجلَّد الحاليّ . وقيمة مربَّع المسارات Paths على المجلَّد الأب /...يُخبر الخيّار الأوّل Poedit أنّ الشّفرة البرمجيّة للإضافة موجودة في المجلَّد الأب لمجلَّد اللّغة lang؛ أي أنّ البرنامج سيذهب للمجلَّد الأب ويبحث في ذلك المجلَّد. أمّا الخيّار الثّاني فيقول إنّ المجلَّد الّذي يوجد به الملفّ الحاليّ هو مجلَّد اللّغة؛ وأنّ الملفّات الّتي يجب التّحقّق منها توجد في المجلَّد الأعلى، لذلك استخدمنا /.. في مربَّع المسارات Paths. سنعتمد في هذا الدّرس الخيّار الثّانيّ. الخطوة التّاليّة هي ضبط الكلمات المفتاحيّة في تبويب Sources keywords (الكلمات المفتاحيّة للمصادر). نحدّد في هذا التّبويب أسماء دوالّ التّرجمة المستخدَمة. في المثال هنا نحتاج فقط لإضافة دالّة __. في أغلب الحالات ستحتاج لإدراج دالتّيْن إلى ثلاث؛ راجع التّرجمة المتقدّمة أدناه. لم يبق إلّا الموافقة على البيانات المُدخَلة. سيطلُب منك البرنامج مكان حفظ الملفّ؛ اختر مسار المجلَّد lang إن كنت اعتمدت الخيّار الثّاني في إعداد المسارات أعلاه. سيبحث Poedit في ملفّات الإضافة ويعثُر على السّلاسل الجاهزة للتّرجمة. يُمكنك بعدها ترجمة هذه السّلاسل إلى اللّغة الّتي تُريد. احفَظ الملفّ بعد الانتهاء من التّرجمة وسيولّد Poedit ملفّ MO في مجلَّد lang. تجب إعادة تسميّة ملفّ MO (اسم الملفّ في الإعداد الافتراضيّ هو default.mo) ليوافق الصّيغة الّتي ناقشناها سابقًا؛ أي أن اسم الملفّ، في المثال لدينا، هو wp-admin-motivation-ar.mo. بالنّسبة لملفّ PO فلايهمّ اسمه كثيرًا، إلّا أنّ من الأفضل تسميّته بنفس الطّريقة لكي تعرف بسهولة أيّ ملفّ PO يوافق ملفّ MO إذا كانت توجد الكثير من الملفّات في مجلَّد اللّغات. ستظهر العبارات التّحفيزيّة باللّغة العربيّة؛ بعد وضع ملفّ اللّغة في مجلَّد اللّغات ضمن الإضافة وتفعيل اللّغة العربيّة في إعدادات ووردبريس. صيّانة التّرجماتيبدو تحديث التّرجمات صعبًا للوهلة الأولى، إلّا أنّه ليس كذلك. صحيحٌ أنّ ملفّ PO يحوي رقم السّطر الّذي توجد به السّلسلة المُترجمَة، لكن ووردبريس لا يعتمد على أرقام الأسطُر عند استخدام ملفّ PO. الهدف من استخدام الملفّ والسّكر الّذيْن توجد بهما سلسلة المحارف المُترجَمة هو مساعدة المترجِم بحيث يُمكن النّظر إلى مكان وجود العبارة ومن ثمّ ترجمتها حسب السّيّاق الّذي وردت فيه. لن تحتاج إلى ملفّات التّرجمة إن كانت التّعديلات الّتي تُجريها تقتصر على الشّفرة البرمجيّة الّتي توجد بها سلاسل المحارف الجاهزة للتّرجمة دون أن تعدّل على هذه الأخيرة. ما أفعله عادةً هو إنشاء ملفّ POT ثمّ أحدّثه في كلّ مرة أحدّث فيها الإضافة، حتى ولو لم تتغيَّر سلاسل المحارف. تُشبه ملفّات POT ملفّات PO؛ إلّا أنّها لا تحتوي على أيّ ترجمات، فكلّ ما تحتويه هو الجمل والعبارات الجاهزة للتّرجمة؛ أيّ أنّها قوالب فقط. تكون التّرجمات سهلة ما دام ملفّ القالب محدَّثًا ويحوي رقم السّطر الصّحيح لكلّ سلسلة محارف. إذا احتجت إلى تحديث ملفّ لغة فكلّ ما عليك فعله هو فتحه عن طريق Poedit ثمّ النّقر على أيقونة التّحديث Update وسيُشعرك البرنامج بالسّلاسل الجديدة والمُعدَّلة ويمكنك بعدها التّعديل عليها. قبول التّرجماتمن الأمور الّتي يحدُث فيها الارتباك كثيرًا، على الأقلّ هذا ما حدث لي أولَ وهلة، هو كيفيّة إنشاء ترجمات جديدة لإضافة. كيف يُمكنني إضافة ترجماتي الخاصّة؟ كنتُ أظنّ أنّ هذه العمليّة تحدُث آليًّا، لكنّها ليست كذلك. عندما يُعجَب أحدهم بإضافة فإنّه يترجمها إلى لغته باستخدام ملفّ POT المضمَّن في الإضافة ثمّ يُرسل التّرجمة (ملفّات MO وPO) إلى مطوّر الإضافة الّذي يضعها في ملفّ lang، يُنشئ إصدارًا جديدًا ويدفعها إلى مستودع ووردبريس. عندما يتلقّى مستخدم الإضافة التّحديث تظهر الإضافة بلغة واجهة ووردبريس لديه، إن كانت ضمن اللّغات الموجوة في ملفّ lang. أستضيف كلّ مستودعاتي على Github وهو ما يسهّل على المترجمين إرسال ملفّات التّرجمة لي باستخدام طلبات السّحب Pull requests. كلّ ما عليّ فعله بعدها هو الضّغط على زرّ وإنشاء إصدار جديد من مستودع ووردبريس. التّرجمات المتقدّمةتعرّفنا في ما سبق على طريقة ترجمة سلاسل محارف قاعديّة عن طريق دالّة ()__. توجد 14 دالة ترجمة في ووردبريس يُمكن استخدامها لتدقيق ضبط ترجماتك. على الأرجح لن تحتاج إلّا إلى 3 أو 4 منها. نبدأ بالأشهر من بينها. 1- ()__هذه هي الدّالّة الأساسيّة للتّرجمة. تأخذ سلسلة محارف وتُعيد التّرجمة إن كانت موجودة. 2- ()e_نفس عمل الدّالّة السّابقة تقريبًا، إلّا أنّها بدلًا من إرجاع التّرجمة تعرضها مباشرةً. 3- ()n_تتيح هذه الدّالة وسيلة أنيقة للتّعامل مع الجموع. تأخذ الدّالّة أربعة معطيات: صيغة المفرد، صيغة الجمع، العدد الّذي على أساسه ستعرض الصّيغة (صيغة المفرد أو الجمع) ونطاق النّصّ. في ما يلي مثال سريع: <?php $messages = get_message_count(); // الاستعمال المبَسَّط: لا تُظهر الدّالة العدد الفعليّ $text = _n( 'You have one message', 'You have lots of messages', $messages, 'my-message-app' ); // في طريقة الاستعمال هذه نُظهر العدد الفعليّ للرّسائل $text = sprintf( _n( 'You have one message', 'You have %s messages', $messages, 'my-message-app' ), $messages ) ?>في هذا المثال نحصُل على عدد الرّسائل ضمن متغيّر messages ثمّ نستخدم هذا المتغيّر في دالّة ()n_ الّتي تعتمد على قيمة المتغيّر لاختيّار سلسلة المحارف الّتي تعرضها (بصيغة المفرد أو الجمع). في طريقة الاستعمال المبسَّط للدّالة لا يظهر عدد الرّسائل ضمن سلسلة المحارف المعروضة حيثُ توجد عبارتان، الأولى للعرض إذا كانت قيمة messages مفردة وتُعرَض الثّانيّة في حالة الجمع. إذا أردنا عرض العدد نستخدم عبارة s% في المكان الّذي نُريد أن يُعرض فيه العدد. بالنّسبة لملفّ PO فينبغي أخذ اللّغة الّتي نريد التّرجمة إليها في الحسبان. في أغلب اللّغات الأوروبيّة لا توجد سوى صيغة واحدة للجمع: إذا كان المعدود أكبر من أو يُساوي اثنين يُعدّ جمعا، أي أنّ هناك حالتين فقط (واحدة للمفرَد والأخرى للجمع). في اللّغة العربيّة يتغيّر المعدود حسب العدد في ما مجموعه خمس صيّغ (مفرَد، مثنَّى وثلاث حالات بالنّسبة للجمع)، إضافةً للصّيغة الّتي يكون العدد فيها يُساوي صفرا (أيّ أنّ المجموع يُساوي ستة). لمن يُريد التّفصيل في المسألة فليراجع فصل العدد والمعدود في النّحو :). لأخذ هذه التّغييرات في الحسبان عند إنشاء ملفّ التّرجمة نُخبر Poedit بعدد صيّغ الجمع الموجودة لدينا، بالنّسبة للعربيّة: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5; قبل البدء في البحث عن سلاسل المحارف نُضيف الدّالة n_ في تبويب Sources keywords (الكلمات المفتاحيّة للمصادر) حتى يتعرّف عليها البرنامج؛ إضافةً للدّالّة __ السّابقة. ملحوظة: من المهمّ جدًّا كتابة الدّالّة بالصّيغة n:1,2_ الّتي تعني أنّ المُعطى الأوّل (الرّقم 1) يعبّر عن صيغة المفرد وأنّ المعطى الثّاني لصيغة الجمع. يمكننا الآن إنشاء ملفّ اللّغة وترجمة العبارات الواردة فيه مع أخذ الجمع بالحسبان. ملحوظة: أبقِ عبارة %s في التّرجمات الّتي تحتاج ذلك، أي الّتي يكون العدد فيها اثنان فما فوق. ستُبدَل هذه العبارة بالعدد الفعليّ أثناء تنفيذ البرنامج. مثلًا إذا كان العدد بين 3 و 10 (التّبويب الرّابع في الصّورة، الّذي يحمل العنوان Form 3) فيمكن أن تكون التّرجمة “توجد لديك 3 رسائل” أو “توجد لديك 8 رسائل”. القيمة (3 و 8) ستُعرف أثناء عمل الإضافة الّتي ستضعها مكان %s. 4- ()x_تهدف هذه الدّالّة إلى الوقاية من الخلط بين الكلمات مختلفة المعنى الّتي تُكتَب بنفس الطّريقة. مثلًا إذا كنت تستخدم كلمة pair بمعنى “زوج أشخاص” وبمعنى “ربط بجهاز بلوتوث” فيُمكن أن يشتبه المعنى. لمنع الاشتباه ولمساعدة المترجم على اختيّار العبارة المناسبة في لغته استخدم دالّة ()x_. _x( 'Pair', 'A pair of people', 'my-plugin-textomaind' ); _x( 'Pair', 'As in: pairing devices', 'my-plugin-textomaind' );5- ()ex و ()nxيُشبه عمل هاتيْن الدّالتيْن عمل دالّة ()x_ أعلاه. الفرق هو أنّ ()ex_ تعرض النّتيجة مباشرةً في حين أنّ nx_ تُضيف إمكانيّة تحديد صيغة للجمع. تخليص Escaping التّرجماتتتيح الدّوال السّتّ التّاليّة إمكانيّة تخليص التّرجمة من أجل الاستخدام الآمن في نصوص HTML (الثّلاث الأخيرة) أو خاصيّاته attributes (الثّلاث الأولى). ()esc_attr__()esc_attr_e()esc_attr_x()esc_html__()esc_html_e()esc_html_xترجمات Noopتسجّل دوالّ Noop سلاسل المحارف بصيغة الجمع في ملفّ POT دون أن تترجمها. يعود السّبب في ذلك إلى أنّ العدد غير معروف سلفًا، وهو ما يعني أنّنا سنحتاج لدالّة أخرى للحصول على العدد وبالتّالي اختيّار صيغة المعدود (الجمع). لهذا السّبب نستخدم دالّة Noop ثمّ نترجم القيمة الحقيقيّة لاحقًا بعد الحصول على العدد. راجع المقال التّالي للمزيد. تستخدم الدّوال التّاليّة لهذا الغرض: ()n_noop_()nx_noop_()translate_nooped_pluralترجمة Javascriptربّما ننساءل ماذا عن سلاسل المحارف الموجودة ضمن شفرة Javascript؟ يقدّم ووردبريس الحلّ عبر دالّة ()wp_localize_script. تأخذ هذه الدّالّة ثلاثة معطيات: مِقبض Handle (معرّف) السّكريبت الّذي نُريد ترجمته، اسم كائن Object للاستخدام داخل السّكريبت ومصفوفة التّرجمة. في ما يلي مثال على ترجمة سلاسل محارف ضمن Javascript: add_action( 'admin_enqueue_scripts', 'motivation_assets' ); function motivation_assets($hook) { wp_enqueue_script( 'motivation-scripts', plugin_dir_url( __FILE__ ) . 'scripts' ); wp_localize_script( 'motivation-scripts', 'wma', array( 'section_title' => __( 'Today's motivation', 'wp-admin-motivation' ) )); }بعد إضافة التّرجمات يُمكنك استخدامها في ملفّ Javascript المُسجَّل. يجب عليك استخدام اسم الكائن ومفاتيح مصفوفة التّرجمة: jQuery.html( "<h2>" + wma.section_title + "</h2>" );خاتمةيستخدم ملايين الأشخاص لغاتِهم للتّعامل مع ووردبريس، فلمَ لا تساعدهم في عمل نفس الشّيء مع منتجاتك؟ فلا جعل الإضافات جاهزة للتّرجمة أمر صعب ولا صيّانتها تُمثّل كبير إزعاج. يُساعد تجهيز سلاسل المحارف للتّرجمة وإنشاء ملفّات po وmo الجميع كما أنّه يزيد من جودة المنتج. ترجمة بتصرّف لمقال Everything You Need to Know About Translating WordPress Plugins لكاتبه Daniel Pataki.
  17. يصف هذا الدرس كيفية استخدام إضافات أندرويد في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
  18. قد يبدو مفهوم البرمجة غرضية التوجه (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
  19. هل تريد تطوير مهاراتك في تطوير ووردبريس إلى مرحلة متقدمة؟ هل أنت مستعد لرفع مستواك في لغة 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
  20. سنناقش في هذا الدرس أهمّية تحديث كلّ شيءٍ متعلّق بموقع ووردبريس الخاصّ بك إلى آخر الإصدارات المتوفّرة وأهميّة التحديثات بشكلٍ عام، وهو من أهمّ الأمور التي يمكنك القيام بها لزيادة حماية وأمان موقعك. لماذا نقوم بالتحديث؟ السؤال الحقيقي يجب أن يكون "ولما لا"؟ يقوم مطوروا ووردبريس بإرسال التحديثات إلى المستخدمين لسببٍ معيّن في النهاية، حيث أنّ هذه التحديثات تحتوي على إصلاحاتٍ لثغراتٍ خطيرة يمكن أن يستغلها المهاجمون لمهاجمة موقعك، مما يجعل التحديث ضرورة لا مفرّ منها. أنواع التحديثات قبل أن نتابع، من المهمّ أن نفهم أنواع التحديثات المختلفة المتوفّرة في سكربت ووردبريس. يشير Tony Perez في تدوينة حديثة إلى أنّه هناك 3 أنواع مختلفة من التحديثات: تحديثات الأمان، الترقيعات والإصدارات الرئيسية. تحديثات الأمان هي بالضبط كما تبدو عليه من اسمها. يتم إصدارها بسرعة وتحتوي فقط على بضع إصلاحاتٍ لثغراتٍ موجودة تم اكتشافها مؤخرًا. تكون هذه التحديثات عادةً على شاكلة أرقام الإصدارات مثل 4.2.1. تحديثات الترقيعات أكبر قليلًا، لا تحتوي هي الأخرى على مميزاتٍ جديدة، ولكنّها تقوم بتحديث النظام وعادةً ما تتضمن تحديثاتٍ أمنية كذلك، كما أنّه يتم إصدارها بصفة دورية ومن الممكن توقّع وقت صدور الترقيع الجديد. وأمّا عن التحديثات الرئيسية من الانتقال من الإصدار 3.9 إلى الإصدار 4.0 فهذا تحديثٌ جوهري، يحتوي مميزاتٍ جديدة وإصلاحاتٍ للمشاكل الأمنية المعروفة بالإضافة لأمورٍ أخرى، كما أنّه يتم التدوين عنها في مدونة ووردبريس وفي العديد من المواقع الإخبارية الأخرى، حيث أنّها تحديثات كبيرة ويجب على الجميع معرفتها. قد تقوم هذه التحديثات أحيانًا بتحطيم شكل موقعك بسبب عدم توافقية مع القالب الذي تستخدمه مثلًا، ولكن مع وجود نسخة احتياطية من موقعك، فيجب ألّا تكون مشكلةً بالنسبة لك. الفشل بالتحديث يعني مشكلة أعظم كما ذكرنا سابقًا، عدم قيامك / فشلك بتحديث أيّ إضافات أو قوالب ووردبريس مثبّتة على موقعك قد يعرّضك لخطرٍ كبير، وما قد لا تفهمه هو "لماذا"؟ يمكن قول نفس الأمر بخصوص القوالب والإضافات، صحيحٌ أنّها ليست جزءً من لبّ نواة ووردبريس، ولكنّها أيضًا قد تحتوي على ثغرات تمكّن المخترقين من استغلالها لاختراق موقعك، وأيضًا يتم اكتشاف هذه الثغرات كلّ فترة وتصدر تحديثات لترقيعها كلّ فترة، وعليك تثبيتها بمجرّد توفّرها. بعض السمات والقوالب تكون مبرمجة بصورة سيئة ويكون بها العديد من الثغرات ويجب عليك الانتباه إلى ذلك، كما يجب عليك تثبيت واستخدام القوالب والإضافات التي تستعملها فقط وحذف كلّ شيء لا تستعمله. إدارة تحديثات ووردبريس أفضل طريقة للتأكّد من أنّ كلّ شيء على موقعك محدّث هو جعل عملية التحقق من وجود تحديثات متوفّرة هي مهمّة روتينية أخرى على جدولك (لو لم تكن تقنيًا، فيجب عليك البحث عن استضافة تقوم تلقائيًا بتحديث جميع القوالب والإضافات والنواة الخاصّة بووردبريس)، يجب عليك التحقق من توفّر التحديثات بنفسك كلّ يوم لتجنّب أي مشاكل أمنية قد تحصل. منذ الإصدار 3.7 من ووردبريس فإنّ المنصة تسمح بالتحديث التلقائي بسهولة، بمجرّد تفعيل هذا الخيار، فإنّه هذا يعني أنّ نواة موقعك ستقوم بالتحديث تلقائيًا عند توفّر تحديثات جديدة بدون أيّ تدخّل منك. طبعًا لا يمكن فعل نفس الشيء بالنسبة للقوالب والإضافات، حيث يجب عليك القيام بتحديثها يدويًا. الخاتمة تحديثات ووردبريس مهمّة للغاية، بل ومهمّة جدًا، ومن واجبك الاهتمام بتحديث كلّ شيءٍ موجود على موقعك إلى الإصدارات الأخيرة المتوفّرة، وإلّا فإنك تترك بابك مفتوحًا للمخترقين ليخترقوك، إنّها مسألة وقت. ترجمة -وبتصرف- للمقال: The WordPress Developer’s Guide to Security: Updates لصاحبه: Brenda Barron.
  21. هل ترغب في تعلّم برمجة إضافات ووردبريس؟ هذه السّلسلة أُعدّت خصّيصًا لك. سنتعرف في هذه السّلسلة على كل ما تحتاجه لتطوير أوّل إضافة لك على ووردبريس، وفق النّهج التّالي: 1. مُقدّمة إلى برمجة إضافات Wordpress: ستتعرّف في هذا المقال على ماهية إضافات ووردبريس، الأسباب التي تدفعك إلى إنشاء إضافة، وكيف تبني أوّل إضافية بسيطة. 2. برمجة إضافات ووردبريس: الخُطّافات (Hooks) : في هذا المقال ستتعرّف على مفهوم الخّطافات في ووردبريس والتي تعد من أهم الخصائص التي يوفرها ووردبريس والتي جعلته مرنًا وقابل للتمدد بصورة قل أن تجد لها نظيرًا في برمجيات الويب. 3. استقبال وحفظ خيارات (وبيانات) الإضافة: سنتعرف في هذا الدّرس على أنسب الطّرق لحفظ الخيارات العامةللإضافة، وكيفيّة إضافة صفحة إعدادات Settings Page في لوحة التحكم تمكن المستخدم من إدخال وتعديل الخيارات الخاصة بالإضافة 4. نظرة شاملة على قاعدة بيانات ووردبريس: في هذا المقال ستتعرّف على جداول قاعدة بيانات ووردبريس ودور كل جدول بالإضافة لأهم محتوياته وارتباطه بالجداول الأخرى، بالإضافة إلى ذكر بعض الطرق التي يوفرها ووردبريس للتعامل مع البيانات. الآن وبعد أن كوّنت صورة واضحة على كيفية برمجة إضافة ووردبريس، نختم السّلسلة بمثال عملي: 5. مثال عملي لبرمجة إضافة ووردبريس- الجزء الأوّل 6. مثال عملي لبرمجة إضافة ووردبريس- الجزء الثّاني
  22. تلعب جداول التسعير دورًا هامًّا في مساعدة زوّار موقعك في رؤية ومقارنة مختلف المميّزات التي تقدّمها خططك التسعيريّة. تكمن المشكلة في أنه يمكن لهذه الجداول أن تشكّل تحديًا من ناحية التصميم وسهولة الاستخدام في ذات الوقت. يجب أن تكون الجداول بسيطة ولكن يجب أن تفرّق بشكل واضح بين ميزات وأسعار الخدمات والمنتجات المختلفة. إذا لم يتمكّن مستخدموك من رؤية قيمة المنتج أو الخدمة فورًا فعليك أن تعرف أن أموالهم لن تُغادر محافظهم. ولكن يمكن لجداول مقارنة التسعير -مع بعض استراتيجيّات التسويق الصحيحة- توفير وسيلة فعّالة لتحديد موضع إظهار حِزَمك من أجل زيادة المبيعات. لذلك سنقوم بإلقاء نظرة على أفضل الإضافات المتاحة لمساعدتك في إظهار تسعيرك بالطريقة الصحيحة في موقعك المبني باستخدام ووردبريس. 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.
  23. إذا أردت بناء موقع ووردبريس مميز وينسجم مع أهدافك الشخصية والتجارية فيجب عليك حذف بعض الأشياء المُحزّمة بشكل افتراضي مع ووردبريس. خبراء ووردبريس يملكون عادة قائمة من الأشياء لإضافتها وحذفها بشكل تلقائي والتي يقومون بها دون تردد. إذا ماذا تحتوي قائماتهم؟ القائمة التالية تحتوي على ما يمكنك فعله لجعل موقعك يعمل ويبدو أفضل من السابق. 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.
  24. إذا كنتَ تعد موقعًا ليستخدمه أشخاصٌ غير متخصصين في التقنية، فسيساعد تخصيص لوحة تحكم ووردبريس في تسهيل إدارتهم لموقعهم ولتعاملهم مع المحتوى. أغلبية المواقع التي أُنشئها تكون لعملاء ليسوا معتادين على التعامل مع ووردبريس وليس لديهم الوقت الكافي لتعلمه كي يديروا موقعهم، لذلك أجنح إلى تخصيص لوحة التحكم لتسهيل عملهم. وعادةً أضيف علامتي التجارية إلى لوحة التحكم كي أذكرهم مَن الذي طوّر الموقع لهم. التعديلات والتخصيصات التي أجريها تختلف بناءً على احتياجات كل عميل، لكنها تتضمن عادةً واحدًا أو أكثر من ما يلي: إضافة علامتي التجارية إلى صفحة تسجيل الدخول بوضع الشعار الخاص بي. إضافة علامتي التجارية إلى صفحات لوحة التحكم، بدءًا من أشياءٍ بسيطة مثل تغيير نص الترويسة (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.
  25. هذا هو الدرس الأخير من هذه السلسلة، ففي الدرس الأول قمنا بتصميم الواجهة باستخدام برنامج الفوتوشوب، وفي الدرس الثاني قمنا بتحويل التصميم إلى نموذج 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.
×
×
  • أضف...