Hello our valued visitor, We present you the best web solutions and high quality graphic designs with a lot of features. just login to your account and enjoy ...

<none>

Hello our valued visitor, We present you the best web solutions and high quality graphic designs with a lot of features. just login to your account and enjoy ...

CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
1 + 0 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.

أخبار تكنلوجيا

رقم الخبر عنوان الخبر التفاصيل
53,272 تقنيات ثورية لتعزيز قدرات رسومات الكومبيوترات المحمولة تطورت الكومبيوترات المحمولة بشكل كبير منذ إطلاق أولها في العام 1981 باسم Osborne 1 الذي قدم شاشة تعرض الصورة بالأبيض والأسود بقطر 5 بوصات (أصغر من معظم الهواتف الجوالة اليوم) وبذاكرته التي بلغت 64 كيلوبايت، ومعالجه الذي عمل بسرعة 4 ميغاهرتز وبوزنه الذي بلغ أكثر من 11 كيلوغراما.
53,212 "واتساب ويب" تحضر مفاجأة رائعة لمستخدميها!

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

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

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

"لا هاتف متصلا"

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

كما تضمن الإصدار الأخير من منصة واتساب ويب التجريبية الملاحظة التالية لأولئك المشاركين: "لست بحاجة إلى إبقاء هاتفك متصلاً لاستخدام واتساب ويب وتطبيق الحاسب وPortal". ويشير أيضاً الإصدار التجريبي إلى أنه يمكن استخدام ما يصل إلى أربعة أجهزة في وقت واحد.

تسهيل حياة الناس

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

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

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

53,211 مكيف محمول يبرد الغرفة في 10 دقائق.. وهذا سعره

يعد EvaChill EV-500 من شركة Evapolar مكيفًا شخصيًا صغيرًا وقويًا وصديقًا للبيئة ومحمولًا، وذلك مقابل 99 دولارا.

وعادةً ما تكون مكيفات الهواء كبيرة الحجم ويصعب نقلها ولها بصمة كربونية كبيرة، مما يجعل درجة الحرارة الصالحة للسكن تؤثر سلبًا في البيئة، لكن تقنية التبريد تتحسن دائمًا.

ويعمل هذا المكيف بسرعة، ويخفض درجة حرارة الهواء حتى 15 درجة في 10 دقائق من خلال تشبع وسادات التبريد بالماء ونفخ الهواء من خلالها.

ويتبخر الماء وتنخفض درجة الحرارة من حولك بينما يتم أيضًا ترطيب الهواء بشكل خفيف.

صديق للبيئة

وتحد هذه العملية من استهلاك الطاقة، لذا لا يتطلب EvaChill EV-500 قدرًا من الكهرباء تقريبًا مثل مكيف الهواء التقليدي.

وحتى أن الخراطيش البديلة مصنوعة من مركب معدني قابل للتحلل البيولوجي تمامًا ولا يضر بالبيئة.

ويعتبر مكيف الهواء الشخصي المحمول هذا بديهيًا للغاية، وقد فاز حتى بجائزة Red Dot Design في عام 2019.

ويتم إعداده بزر واحد ويصدر ضوءًا أزرق ناعمًا أثناء عمله، وإلى جانب تقليل درجة حرارة الغرفة، يقوم EvaChill EV-500 أيضًا بتصفية جزيئات الغبار لتحسين جودة الهواء.

وزنه كيلو غرام

ولا داعي للقلق أيضًا بشأن انتشار البكتيريا أو العفن بفضل خراطيش التبريد غير العضوية القابلة للاستبدال بنسبة 100 في المئة.

وبوزن أقل من كيلوجرام واحد وبأبعاد 6.5×6.5×6.5 إنشات، يمكنك حمل مكيف الهواء الشخصي EvaChill EV-500 مع الخراطيش القابلة للتبديل أينما ذهبت وتبريد أي غرفة تجد نفسك فيها.

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

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

53,210 إدارة عملية الاختبار في الووردبريس

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

  • إنشاء بيئة اختبارية sandbox: تُستخدَم هذه الآلية لاختبار التغييرات المطبقة على قالب الووردبريس وملف التنسيق الخاص به، حيث تسمح بتعديل القالب على الحاسوب دون الإخلال بالموقع الأساسي. وهذه البيئة تُقيِّد خيارات التعديل على الموقع، بحيث لا يمكن التعديل إلا على ملف CSS، أما بقية الإضافات البرمجية والأدوات في الووردبريس، فلا يمكن التعديل عليها، مما يعني أنّ هذه الآلية مخصَّصة فقط لتعديل مظهر صفحات الموقع.

  • إخفاء منطقة الاختبار: حيث يُقيَّد الوصول للموقع المخصَّص لاختبار التغييرات، والموجود على خادم موقع الويب، وهذا يتطلب المعرفة المسبقة بملفي htaccess.، وApache، وتسمح هذه الطريقة بتطبيق التغييرات على الإنترنت مباشرةً دون ظهورها للعامة.

  • تثبيت الووردبريس على الحاسوب: يٌثبَّت الووردبريس وهو في موضع الاختبار، على الحاسوب الشخصي مع إجراء بعض التعديلات، بحيث يُختَبر محليًّا قبل رفعه على خادم الويب. وتسمح هذه الطريقة بالتحكم الكامل بالووردبريس، حيث تُستَخدَم الإضافات البرمجية، وملفات القالب template files، والقوالب themes، ويعاد تصميم كلّ شيء بطريقة تحاكي العمل على الإنترنت، دون اللجوء إلى استخدام عرض الحزمة bandwidth، أو المعاناة من سرعة الإنترنت. ويوجد طريقتان للتثبيت، وهما: تثبيت نسخة جديدة على الحاسوب، أو تثبيت موقع ووردبريس موجود حاليًّا. وسنتطرق لآلية نقل الووردبريس إلى موقع الويب بعد الانتهاء من هاتين الطريقتين.

إنشاء بيئة اختبارية

يُطلق مصطلح البيئة الاختبارية على الصندوق الرملي الذي يلعب الأطفال بداخله، ويشكّلون القلاع الرملية فيه. بحيث يكمن وجه الشبه بين هذا الصندوق والبيئة الاختبارية، في أنّ كلّ ما يحدث داخل الصندوق لا يؤثِّر أبدًا على الواقع. والبيئة الاختبارية في نظام الووردبريس هي نسخة طبق الأصل من صفحة موجودة فعليًّا، حيث تُحفَظ هذه النسخة على القرص الصلب hard drive، وتطبّق عليها التعديلات لتغيير شكلها الخارجي، دون ظهور هذه التعديلات على الموقع مباشرةً، وتُرفع هذه التغييرات على الموقع بعد التأكّد من ملاءمتها.

يستخدِم نظام الووردبريس عدّة ملفّات قالب template files لإنشاء مجموعة عروض views على الموقع. ويوجد عمومًا، قالب لعرض الصفحة الرئيسية، وقالب لعرض منشور مُنفرِد، وقالب لعرض منشورات متعدِّدة. حيث تُستخدَم هذه القوالب الثلاثة في التصنيفات، و صفحات البحث، وصفحات الأرشفة. كما يوجد ملف CSS خاص بكل قالب من القوالب السابقة، وهو مختلِف عن الآخر، لذلك لابد من إضافة الملفات الثلاثة في صندوق الاختبار عند تغيير المظهر العام للموقع، وذلك يتحقق باتباع الخطوات التالية:

  • اختيار القالب theme المراد تعديله، من لوحة التحكم، من ثم اختيار تبويب المظهر Appearance.
  • عرض أحد القوالب التالية:
    • قالب عرض الصفحة الرئيسية.
    • قالب عرض المنشور المنفرِد.
    • قالب عرض المنشورات المتعدِّدة.
  • التوجه إلى المتصفح، واتباع الخطوات التالية:
    • اختيار ملف file، ومن ثم اختيار حفظ باسم save as.
    • تسمية الصفحة المراد حفظها باسم القالب الذي اُختير عرضه في الخطوة الثانية.
    • حفظ ملف الصفحة في المجلد الخاص بالبيئة الاختبارية.
  • نسخ ملف التنسيق style.css الموجود في مجلد القالب theme، إلى المجلد الخاص بالبيئة الاختبارية.
  • فتح الملفات الثلاثة بمحرر نصوص، وإجراء التعديل التالي:
<style type="text/css" media="screen> @import url('/wp-content/themes/yourtheme/style.css'); </style>

إلى:

<link rel="stylesheet" type="text/css" media="screen" href="style.css" />

بعد هذه الخطوة تُنسَخ العناصر المرتبطة بالصفحات، مثل: الأيقونات، وصور الخلفية، وعلامات التنقيط bullets، وغيرها من العناصر، إلى المجلد الخاص بالبيئة الاختبارية، ويمكن الوصول لتلك العناصر من خلال فتح ملف التنسيق CSS، واتباع روابط العناصر الموجودة بداخله، ومن ثم تنزيلها، وحفظها في مجلد فرعي داخل مجلد البيئة الاختبارية، مثل:

header { margin:5px; padding:10px; background:url(images/background.jpg).... }

لاختبار نجاح العملية تُفتح إحدى الصفحات الموجودة في هذا المجلد بنقرتين لتُُستعرض في المتصفح، فإذا عُرضت العناصر بتناسق كما في الأصل فهذا يعني نجاح العملية، أما إذا عُرضت العناصر بطريقة غير منسقة فهنا يجب التأكد من ربط صفحات التنسيق css.

أصبحتَ الآن تمتلك نسخةً خاصّةً للتعديل عليها واختبار التغييرات الخاصة بالمظهر. وتحتاج للبدء باستخدام البيئة، إلى فتح برنامجين، وهما: محرر النصوص لفتح ملف style.css، والمتصفِّح لفتح الصفحة التي ستعمل عليها في العرض (الصفحات الثلاثة التي حُفِظت في البداية). حيث تُطبَّق التغييرات اللازمة على الملف style.css، ومن ثم يُحفَظ الملف، وأخيرًا تُحدّث الصفحة في المتصفح لمشاهدة التغييرات. وتُكرَّر الخطوات السابقة من أجل الصفحتين الباقيتين.

نصائح لاستخدام البيئة الاختبارية

تحتوي النقاط التالية على بعض النصائح للعمل في البيئة الاختبارية.

انسخ الملفات نسخا احتياطيا دوريا

انسخ الملفات نسخًا احتياطيًّا إلى مجلد احتياطي قبل أيّ تعديلٍ مهم، أو اضغط المجلد الذي يحوي الملف قبل تعديله، باستخدام برنامج ضغط لملفات بصيغة zip مثلًا. يُعَدّ المجلد المضغوط بمثابة نسخة احتياطية لكامل المجلد الأصلي، وفي حال حصل خلل في الملفات، فمن السهل استرجاع النسخة السليمة.

تعقب عناصر HTML في الملف الخاص بالقالب

افتح ملف الصفحة المراد تعديلها، في محرر النصوص، وأضف تعليقًا عند بداية ونهاية كلّ عنصر من عناصر لغة HTML، وذلك لتصبح عملية التعديل والتنسيق أكثر دقةً وسهولة.

دون الملاحظات

يُنصَح بتدوين ملاحظات حول التعديلات المحورية قبل تطبيقها، فإذا حدث خطأ ما بعد تطبيق التعديلات، فيصبح من السهل مراجعة الملفات المُعدَّلة، وفهم طبيعة التعديل.

دون الملاحظات داخل الملفات

يُنصَح بكتابة ملاحظات وتعليقات أمام كل كود عند تعديله في الملف البرمجي، وذلك لتسهيل فهم التعديل وتتبعه لاحقًا.

اجعل التعديلات على مراحل صغيرة نسبيا

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

تجنب التعديل على ملف القالب

عدل في البداية على ملفات التنسيق فقط ولا تُجري أية تعديلات على ملف الـ HTML، أما إذا كنت تنوي انشاء قالب جديد لإطلاقه للعامة، فيجب عليك عند تعديل ملفات القالب تعديلها بكل دقة وعناية؛ أما إذا كان التعديل فقط لموقعك فعدِّل على الملف في البيئة الاختبارية ثم انقله لملف القالب في النظام.

نقل الملفات من البيئة الاختبارية إلى القالب في النظام

تُنقَل التغييرات بعد اختبار نجاحها، إلى قالب الووردبريس، وذلك باتباع الخطوات التالية:

  • ارفع ملف style.css المعدَّل إلى مجلد القالب، واستبدل القديم به.
  • ارفع كل الصور والرسوم إلى مجلد القالب، أو إلى مجلد فرعي بداخله.
  • افتح موقعك من المتصفح، إذ ستُطبَّق التعديلات تلقائيًّا.
  • اعكس التعديلات على ملفّات القالب في موقعك المقابلة لأي ملفات تعدلها في البيئة الاختبارية.
تثبيت مدونة أخرى
  • ثبِّت نظام الووردبريس مجددًا، وغيّر البادئة في ملف wp-config.php، وهي البادئة التي تبدأ بها أسماء الجداول ضمن قاعدة البيانات table prefix.
  • انتقل إلى الخيارات options، ومن ثم كتابة writing، وبعدها أزل علامة الاختيار من حقل تحديث الخدمات Update Services.
  • لا تخبِر أحدًا بعنوان صفحتك الجديدة.

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

إخفاء منطقة الاختبار

تُستَخدَم ملفات htaccess. على خادم الويب أباتشي Apache، لإخفاء مجلد الاختبار عن العامة. حيث يخزِّن ملف htaccess. الأوامر، والتنقلات اللازمة عند حدث معيّن، ويمكن استخدام ملف إعدادات أباتشي httpd.conf في الأباتشي، أو أي أداة أخرى، كما يُطبَّق ملف htaccess. فقط على المجلد المراد إخفاءه، حيث سيختفي هو وكل المجلدات الفرعية الموجودة بداخله، مما يسمح لك بتقييد الوصول إلى مجلد مخصص. ويجب التنويه إلى أنّ هذه الطريقة صالحة فقط مع الخوادم التي تدعم ملفات htaccess.، أما في حال عدم تيقّنك من دعم موقعك لهذه الخاصية، تواصل مع شركة الاستضافة، فمن المحتمل أن تكون موجودة ولكنك لا تملك صلاحيات استخدامها، وبالتالي عليك التواصل مع شركة الاستضافة أيضًا.

تحتاج عند استخدام ملف htaccess.، إلى إدخال التعليمات الإرشادية للخادم، وإعلامه بآلية التعامل مع الأحداث، ليستطيع من خلالها تقييد ومنع الوصول إلى موقع الاختبار، وذلك بتطبيق خطوات مرتّبة ضمن المجلد أو المكان الذي يحوي تثبيت الووردبريس، كما يأتي:

  • أنشِئ ملفًا فارغًا باستخدام محرر النصوص، وعدّل اسمه ليكون htaccess.
  • تحتاج إلى المعلومات التالية:
    • المسار الكامل للمجلد الذي لا يمكن الوصول له من العامة، فمثلًا المسار http://example.com/public_html/ يمكن الوصول له، أما المسار http://example.com/privatel/ فلا يمكن الوصول له، لذلك ستستخدِم المسار الثاني.
    • اسم المنطقة المحمية secured area، مثل: Enter Password، أو Secure Area، وهذه ليست ضرورية.
  • اكتب في ملف htaccess. ما يلي:
AuthUserFile /full/path/of/directory/.htpasswd AuthName "Security Area" AuthType Basic require valid-user

وبعدها غيّر كلًا من المسار الكامل للمجلد /full/path/of/directory/، والمنطقة المحمية Security Area، بما يقابلهما في موقعك وِفقًا للملعومتين المذكورتين.

  • احفظ ملف htaccess.، وارفعه إلى المجلد المراد إخفاءه، ويكون هذا مكان تثبيت الووردبريس أو المدونة، مثل: /wordpress/، أو blog.
  • استخدِم لوحة التحكم cPanel، أو البرتوكول Telnet، أو أي أداة أخرى، للوصول للوحة موجه الأوامر command panel الخاصة بالخادم، واذهب إلى المسار المعرف ضمن AuthUserFile.
  • أَدخِل الأمر التالي: htpasswd -c .htpasswd user_name، حيث أن user_name هو اسم المستخدم المصرح له بالوصول.
  • أَدخل كلمة المرور بعد تنفيذ الأمر السابق، وتحقق منها بإدخالها مرةً ثانية.
  • احفظ اسم المستخدِم وكلمة المرور في مكان آمن.

احذف كلمة المرور وملف htaccess. عندما يصبح الموقع جاهزًا لإطلاقه للعامة، ويُنصَح بحذف رابط الوصول الافتراضي لخدمة Ping-o-Matic، حيث ستتسبب هذه الخدمة بنشر المنشورات الاختبارية للعامة ولكن دون الوصول للموقع.

تثبيت نظام الووردبريس على حاسوبك التثبيت على الماك

اتبع التعليمات الموجودة في مقال InstallingWordPressLocallyonYourMacWith_MAMP لإعداد بيئة الخادم المحلي، من أجل اختبار الووردبريس وتطويره على الماك.

التثبيت على نظام الويندوز

يجب التأكد من صلاحيات الوصول لكل من خادم أباتشي، وMySQL/MariaDB، وphpMyAdmin، وذلك عند البدء بتشغيل نظام الووردبريس. ولتثبيت هذه الأدوات نلجأ إلى برنامج XAMPP، والذي يُثبِّت هذه الأدوات دفعةً واحدة، أي أنّ كل ما نحتاج إليه لتشغيل الووردبريس على الحاسوب هو تثبيت برنامج XAMPP، ومن ثم تشغيله.

يوجد إصداران من برنامج XAMPP، إحداهما أساسي Basic والآخر مُخفف Lite، حيث يفي الإصدار المخفف هنا بالغرض. ويتطلب تشغيل الووردبريس على الويندوز، إجراء الخطوات التالية:

  • نزّل برنامج XAMPP وثبّته.
  • يصبح المسار C:/xampplite، أو المسار C:\xampp هو المسار الافتراضي لبرنامج XAMPP بعد تثبيته.
  • شغِّل برنامج XAMPP من المسار: C:/xampplite، أو من المسار C:\xampp.
  • قد تحتاج لإعادة تشغيل الحاسوب لتبدأ خدمات أباتشي بالعمل.
  • أَدخِل الرابط http://localhost/xampp في المتصفح، للدخول إلى الخادم المحلي.
  • اضغط على phpMyAdmin الموجودة في العمود الأيسر تحت الأدوات Tools.
  • سجِّل الدخول على أنك مدير admin.
  • أَدخِل wordpress في حقل إنشاء قاعدة بيانات جديدة Create new database. -أَدخِل utf8 unicode ci في الحقل المجاور للحقل السابق. -اضغط على إنشاء create.
  • فُكّ ضغط الملف الذي يحوي نظام الووردبريس في مجلد htdocs، أي الموجود في المسار c:\xampp\htdocs.
  • افتح من داخل مجلد htdocs، ملف wp-config-sample.php، باستخدام محرّر النصوص.
  • تحتاج إلى تفاصيل الاتصال MySQL settings، وهي كما يأتي:
define('DB_NAME', 'wordpress'); // اسم قاعدة البيانات define('DB_USER', 'root'); // اسم المستخدِم لقاعدة البيانات define('DB_PASSWORD', ''); // كلمة المرور لقاعدة البيانات define('DB_HOST', 'localhost'); // اسم الاستضافة المحلية، وغالبًا تترك هكذا
  • احفظ الملف باسم wp-config.php.
  • ثبِّت الملف المعدل، وذلك بالذهاب إلى الرابط.

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

تثبيت موقع ووردبريس موجود حاليا

يقدِّم XAMPP تسهيلات تُمكنك من تثبيت الووردبريس على الحاسوب الشخصي، وبهذه الطريقة يصبح من السهل التعديل على الووردبريس الموجود حاليًّا، دون أن تظهر هذه التعديلات لزوار الموقع، حيث ستُطبق التعديلات على النظام المثبَّت على الحاسوب الشخصي، ومن ثم يُرفَع النظام بعد الانتهاء من التعديلات إلى الخادم، وبذلك تصبح التعديلات متاحةً لزوار الموقع. ويتطلب تثبيت ووردبريس الموقع على الحاسوب الشخصي، تحقيق المتطلبات التالية:

  • إمكانيّة الوصول لقاعدة بيانات الخادم.
  • إمكانية تنزيل نسخة ووردبريس على حاسوبك.
  • الإصدار الأساسي من XAMPP الخاص بالويندوز.
  • مساحةً فارغةً لاحتواء المكونات المذكورة في الأعلى.
نسخ الووردبريس نسخا احتياطيا

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

ستكون عملية النسخ الاحتياطي بطيئة، وذلك بسبب وجود قاعدة بيانات افتراضية مرفقة مع الووردبريس، والتي تحتوي على العديد من القراءات الإحصائية، مما يزيد حجم قاعدة البيانات. وأنت لست بحاجة إلى حذف هذه القراءات، ولكنها تُعَدّ فكرةً جيدة.

يمكن أخذ نسخة احتياطية من قاعدة البيانات باتباع الخطوات التالية:

  • سجّل دخول إلى PHPMyAdmin على خادم الموقع.
  • اختر قواعد بيانات Databases من واجهة التسجيل الرئيسية.
  • اختر اسم قاعدة البيانات المرتبطة بنظام الووردبريس الخاص بك.
  • اختر تصدير Export من التبويبات الموجودة أعلى الشاشة.
  • ستُعرَض قائمة من جداول قاعدة البيانات الخاصة بموقعك، في الإطار المحيط بأعلى منطقة التصدير.
  • حدِّد الجداول التي تحمل البادئة المخزّنة في ملف wp-config.php، أما في حال كان نظام الووردبريس هو المثبت فقط، فيمكنك استعمال خيار تحديد الكل select all من العمود الأيسر من اللوحة.
  • تأكد من اختيار زرّ SQL.
  • تأكد من تحديد الحقول الموجودة في الجانب الأيمن من اللوحة، وهي: Structure، وAdd AUTO_INCREMENT value، وEnclose table and field names with backquotes، وData.

  • حدِّد زر حفظ باسم Save as file، واترك حقل اسم القالب template name كما هو، واختر لا شيء None من أجل الضغط Compression، ومن ثمّ اضغط على اذهب Go، بعدها ستظهر لك إمكانية حفظ الملف.
  • احفظ الملف على الحاسوب الشخصي، وستستغرق عملية الحفظ هذه بعض الوقت، اعتمادًا على حجم قاعدة البيانات.
تنزيل نظام الووردبريس

يُستخدم برنامج FTP client لتنزيل نظام الووردبريس على حاسوبك الشخصي. حيث يجب عليك التأكد من وجود جميع ملفات النظام الأساسية، بما فيها index.php، داخل مجلد الجذر أو داخل مجلد الووردبريس، ليُصبح في الحاسوب الشخصي بعد هذه العملية، عنصرين، وهما:

  • نسخة احتياطية واحدة أو أكثر من قاعدة البيانات.
  • كلّ ملفات ومجلدات الووردبريس. وعليك الأخذ بنسخة احتياطية من الملفات وتضعها في مكانٍ آمنٍ على الحاسوب، ومن ثم تبدأ العمل على هذه النسخة في المرحلة التالية.
تثبيت XAMPP الأساسي
  • ثبِّت XAMPP على الحاسوب، حيث سيُثبَّت افتراضيًّا على المسار: c:\xampp.
  • اذهب إلى المسار C:\xampp\apache\conf، وافتح بمحرر النصوص، ملف httpd.conf.
  • ستجد في السطر 166 من ملف httpd.conf، التالي:
#LoadModule rewrite_module modules/mod_rewrite.so.
  • احذف المحرف #، واحفظ الملف، وهذا يُفعّل mod_rewrite.
  • أنشِئ مجلد داخل المسار C:\xampp\htdocs، حيث سيُخزَّن بداخله ملفات الووردبريس.
  • انقل جميع ملفّات الووردبريس المٌنزَّلة (ليس النسخة الاحتياطية لقاعدة البيانات) إلى المجلد الذي أنُشٍئ في الخطوة السابقة.
  • عدل تفاصيل الاتصال بملف MySql، وذلك كما يأتي:
define('DB_NAME', 'wordpress'); // اسم قاعدة البيانات -- made define('DB_USER', 'root'); // اسم المستخدِم لقاعدة البيانات، دعها هكذا -- define('DB_PASSWORD', ''); // كلمة المرور لقاعدة البيانات، دعها فارغة هنا -- define('DB_HOST', 'localhost'); // اسم الاستضافة المحلية، وغالبًا تترك هكذا --
  • خزّن ملف index.php الرئيسي في مجلد htdocs، أو في مجلد فرعي بداخله، مثل: /htdocs/wordpress/.
  • شغّل برنامج XAMPP، وذلك من خلال النقر على الأيقونة البرتقاليّة، والتي تحمل اسم xampp_start.exe، أو باستخدام برنامج console الموجود في:
Program Files\ApacheFriends\XAMPP\XAMPP Control Panel.
  • اضغط على الرابط في الجانب الأيسر من phpMyAdmin.
  • أنشِئ قاعدة بيانات، ويجب أن يتوافق اسمها مع الاسم الموجود في ملف wp-config.php.
استيراد النسخة الاحتياطية لملف الـ SQL

نحتاج قبل البدء بعملية استيراد ملف الـ SQL، إلى تعديله ليتلائم مع الخادم المحلي، وذلك باتباع الخطوات التالية:

  • نفتح بمحرر النصوص، الملف ذو الامتداد sql.، والخاص بالنسخة الاحتياطية لقاعدة البيانات.
  • نستبدل جميع الروابط القديمة بالروابط الجديدة، مثل: استبدال الرابط القديم: http://example.com/wordpress/ بالرابط الجديد: http://127.0.0.1/wordpress/.
  • نضغط على حفظ (save) وليس على حفظ باسم (save as).

تُستَورد قاعدة البيانات بعد تطبيق الخطوات السابقة، باستخدام لوحة myphpadmin الموجودة على الحاسوب، حيث نضغط على اسم قاعدة البيانات، ومن ثم نختار تبويب SQL، بعدها نضغط على Browse، ونختار مكان لتخزين ملفات قاعدة البيانات على الحاسوب، ثم نضغط على GO، وقد تستغرق هذه العملية بعض الوقت.

تصبح قاعدة البيانات الخاصة بك عند انتهاء العملية السابقة، جاهزةً ومتصلةً بالنظام. وإذا ظهر أي خطأ، فهذا يعني وجود خلل في عملية النسخ الاحتياطي بأي شكل من الأشكال، أو وجود خللٍ في قاعدة البيانات نفسها، ويجب حفظ ملفات قاعدة البيانات في مكان آمن، وذلك لمنع وصول الآخرين إليها. وإذا سار كل شيء على ما يرام، فيمكنك الدخول إلى مدونتك من الحاسوب الشخصي، وذلك بكتابة http://127.0.0.1/wordpress/index.php في المتصفح، أو اسم المجلد الذي يحوي ملفات الووردبريس.

وإذا ظهر الخطأ 404، فتأكد من إدخالك المسار الصحيح لملف index.php، حيث لا يجب وضع htdocs أو xampp بعد http://127.0.0.1/، وإنما فقط اسم المجلد الذي يحوي ذلك الملف. حيث سيظهر الووردبريس على الحاسوب كما لو أنه على الويب، ولست بحاجة هنا إلى استخدام محرر الووردبريس لتعديل الملفات، بل يكفي فقط استخدام محرر النصوص الخاص بك، ومن ثم التعديل كما لو كنت تُعدّل أي ملف آخر، وستظهر التغييرات بعد الانتهاء من التعديل عند تحديث صفحة الويب من المتصفح.

ترجمة وبتصرف للمقال Test Driving WordPress من موقع wordpress

53,185 تغيير مهم يطال آيفون في 2023.. ماذا سيحدث؟

تتعلق معظم الأحاديث الحالية بشأن آيفون بجهاز iPhone 13 الذي من المتوقع رؤيته في شهر سبتمبر، ويقال: إنه يأتي بشاشة مطورة وكاميرا محسّنة، لكن يمكننا أيضًا الحديث في الوقت الحالي عن بعض الشائعات والتسريبات فيما يخص جهاز iPhone 15 أيضًا.

وقال المحلل مينغ تشي كو Ming-Chi Kuo، أحد أكثر المحللين بشأن أخبار شركة آبل موثوقية في هذا المجال: إن أجهزة مودم 5G المخصصة لجهاز آيفون تبدأ بالظهور في عام 2023، في الوقت المناسب تمامًا لجهاز iPhone 15.

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

وبالنظر إلى بطء مبيعات أندرويد في سوق هواتف 5G المتطورة، فقد تضطر كوالكوم إلى التنافس للحصول على المزيد من الطلبات في السوق المنخفضة التكلفة لتعويض خسارة طلبات آبل.

وكانت سلسلة هواتف آيفون 12 هي الأولى من آبل التي تأتي بقدرات 5G، لذا فإن تحديث 2023 قد يكون أول من يحظى بخطوة كبيرة من حيث أداء 5G.

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

مثير للاهتمام

ولن تكون هذه الأخبار مفاجأة لمراقبي الصناعة، وذلك بالرغم من أن التوقيت المتوقع مثير للاهتمام.

ومنذ أن اشترت شركة آبل أعمال شرائح المودم من شركة إنتل في عام 2019، كان من الواضح أن تطوير تقنية 5G يتم داخل الشركة.

وكانت التوقعات السابقة قد أشارت إلى أن هاتف آيفون المتضمن جهاز مودم 5G من صنع آبل يمكن أن يظهر في عام 2022، لكن هذا يبدو متفائلاً الآن، حيث يقول كو: إن الرقاقات تظهر في عام 2023 على أقرب تقدير، لذلك يمكن أن يكون بعد ذلك.

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

وتستمر كوالكوم في الوقت الحالي في توفير أجهزة مودم 5G لجهاز آيفون، حيث إن جميع النماذج المتوقعة من iPhone 13 تأتي مع هذه التكنولوجيا.

53,144 العالم يتنفس الصعداء ـ سقوط بقايا الصاروخ الصيني في المحيط الهندي ذكرت السلطات الفضائية الصينية أن بقايا حطام صاروخ أطلق كجزء من جهود الصين لبناء محطتها الفضائية الخاصة، عادت اليوم الأحد إلى الغلاف الجوي للأرض. وذكر المصدر أن معظم أجزاء الصاروخ سقطت في المحيط الهندي.
53,126 مستخدمو آيفون يرفضون تتبع الإعلانات بعد  iOS 14.5

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

كذلك بدأت آبل ومنذ إصدار النظام الجديد، بفرض سياسة تسمى شفافية تتبع التطبيق App Tracking Transparency، وتبعاً لهذه السياسة، أصبحت تطبيقات آيفون وآيباد مطالبة بأخذ إذن المستخدمين من أجل استخدام تقنيات معينة مثل معرف IDFA ، وفق موقع Flurry Analytics المختص بتحليل البيانات.

4 % فقط قبلوا بالتتبع

واستناداً إلى البيانات التي نشرها الموقع فإن المستخدمين الأميركيين يوافقون على أن يتم تتبعهم بنسبة 4 % فقط من الوقت، في حين أن الرقم العالمي أعلى بكثير بنسبة 12%.

كذلك تظهر البيانات أن مستخدمي آيفون يرفضون التتبع بمعدلات أعلى بكثير مما توقعته الاستطلاعات التي أجريت قبل وصول iOS 14.5، ووجد أحد هذه الاستطلاعات أن 40 % فقط، وليس 4 %، يختارون التتبع عند المطالبة بذلك.

فيسبوك يرفض التغيير

وواجه التغيير مقاومة شرسة من شركات، مثل فيسبوك، التي بنيت مزاياها السوقية وتحقق إيراداتها من خلال الاستفادة من بيانات المستخدمين لاستهداف الإعلانات الأكثر فاعلية لهؤلاء المستخدمين.

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

ميزات عدة للنظام الجديد

يذكر أن آبل أوضحت في وقت سابق أن نظام iOS 14.5 يقدم مزايا عدة منها، حماية خصوصية المستخدمين، وتوفير خاصية في النظام تُظهر للمستخدم كل المعلومات التي سيتم تجميعها عنه.

53,125 الاجتزاءات في GraphQL وموضوع الاشتراكات في جافاسكريبت

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

الاجتزاءات

إنّ إعادة عدة استعلامات GraphQL النتيجة نفسها أمر شائع جدًا. فعلى سبيل المثال، فعند تنفيذ الاستعلام الذي يحضر تفاصيل شخص ما كما يلي:

query { findPerson(name: "Pekka Mikkola") { name phone address{ street city } } }

والاستعلام الذي يعيد جميع الأشخاص كالتالي:

query { allPersons { name phone address{ street city } } }

ستكون النتيجة نفس الأشخاص في كليهما. وعند اختيار الحقول التي ستُعاد، سيحدد كلا الاستعلامين الحقول نفسها.

في مثل هذه الحالات يمكن تسهيل الأمور باستخدام الاجتزاءات fragments. لنعرّف إذا اجتزاءً لاختيار كل حقول الشخص:

fragment PersonDetails on Person { name phone address { street city } }

يمكننا باستخدام الاجتزاء تنفيذ الاستعلامات بشيفرة مختصرة:

query { allPersons { ...PersonDetails } } query { findPerson(name: "Pekka Mikkola") { ...PersonDetails } }

لا تُعرّف الاجتزاءات ضمن تخطيط GrapQL، بل ضمن شيفرة العميل. إذ ينبغي التصريح عن الاجتزاء عندما يريد العميل تنفيذ الاستعلام.

وكمبدأ، يمكننا التصريح عن الاجتزاء داخل كل استعلام كالتالي:

const ALL_PERSONS = gql` { allPersons { ...PersonDetails } } fragment PersonDetails on Person { name phone address { street city } } `

لكن من الأفضل أن تُصرح عن الاجتزاء مرة واحدة ثم تخزنه ضمن متغيّر.

const PERSON_DETAILS = gql` fragment PersonDetails on Person { id name phone address { street city } } `

وإن صُرِّح عن الاجتزاء كما سبق، أمكن وضعه ضمن أي استعلام أو طفرة باستخدام إشارة الدولار $ والأقواس المعقوصة:

const ALL_PERSONS = gql` { allPersons { ...PersonDetails } } ${PERSON_DETAILS} ` الاشتراكات

تقدم GraphQL بالإضافة إلى الاستعلامات والطفرات، آلية ثالثة هي الاشتراكات subscriptions. حيث تُمكّن الاشتراكات العملاء من تتبع التحديثات التي قد تطرأ على الخادم.

تختلف الاشتراكات جذريًا عن أية أفكار طرحناها في المنهاج. فحتى الآن، يقتصر التفاعل بين الخادم والمتصفح على تطبيق React يعمل على المتصفح ويرسل طلبات HTTP إلى الخادم. كما تُنفَّذ استعلامات وطفرات GraphQL بالطريقة ذاتها. لكن الوضع سينقلب مع الاشتراكات. فبعد أن يسجل التطبيق اشتراكًا، سيبدأ بالتنصت على التغيرات في الخادم. حيث سيرسل الخادم تنبيهًا إلى كل التطبيقات التي سجلت اشتراكًا في حال حدث أي تغيير.

ولو أردنا التحدث بلغة تقنية سنقول أن البروتوكول HTTP لا يلائم تمامًا الاتصال من الخادم إلى المتصفح، لذا فقد استخدمت Apollo تحت الغطاء مايسمى بمقابس الويب WebSockets للاتصال بين المشتركين والخادم.

الاشتراكات من جانب الخادم

لننجز آلية اشتراك لتلقي تنبيهات عندما يُضاف شخص جديد. لا تغييرات كثيرة على شيفرة الخادم، لكن سيتغير التخطيط قليلًا على النحو التالي:

type Subscription { personAdded: Person! }

فعندما يُضاف شخص جديد، سترسل جميع تفاصيله إلى جميع المشتركين.

يحتاج الاشتراك personAdded إلى محلل. كما يجب تعديل المحلل addPerson لكي يرسل تنبيهًا إلى المشتركين. ستتغير الشيفرة على النحو التالي:

const { PubSub } = require('apollo-server')const pubsub = new PubSub() Mutation: { addPerson: async (root, args, context) => { const person = new Person({ ...args }) const currentUser = context.currentUser if (!currentUser) { throw new AuthenticationError("not authenticated") } try { await person.save() currentUser.friends = currentUser.friends.concat(person) await currentUser.save() } catch (error) { throw new UserInputError(error.message, { invalidArgs: args, }) } pubsub.publish('PERSON_ADDED', { personAdded: person }) return person }, }, Subscription: { personAdded: { subscribe: () => pubsub.asyncIterator(['PERSON_ADDED']) }, },

يحدث الاتصال في الاشتراكات باستخدام مبدأ نشر- اشتراك publish-subscribe عن طريق كائن يستخدم الواجهة PubSub. حيث ينشر إضافة شخص جديد تنبيهًا عن العملية تصل إلى جميع المشتركين وذلك بالاستفادة من التابع publish العائد للواجهة PubSub.

يسجل محلل الاشتراك personAdded جميع المشتركين وذلك بإعادته كائن مكرّر iterator object مناسب.

لنجري التعديلات التالية على الشيفرة التي تُشغِّل الخادم:

// ... server.listen().then(({ url, subscriptionsUrl }) => { console.log(`Server ready at ${url}`) console.log(`Subscriptions ready at ${subscriptionsUrl} `)})

سنجد أن الخادم يتنصت على الاشتراكات على العنوان ws://localhost:4000/graphql

Server ready at http://localhost:4000/ Subscriptions ready at ws://localhost:4000/graphql

لا نحتاج لأية تعديلات أخرى على الخادم.

يمكن اختبار الاشتراكات باستخدام أرضية عمل GraphQL كالتالي:

عندما تضغط على زر التشغيل play فوق الاشتراك، ستنتظر أرضية العمل التنبيهات التي قد تصل إلى الاشتراك.

يمكن إيجاد شيفرة الواجهة الخلفية ضمن الفرع part8-6 في المستودع الخاص بالتطبيق على Github.

الاشتراكات من جانب العميل

لكي نصبح قادرين على استخدام الاشتراكات في تطبيق React، لا بدّ من إجراء بعض التغييرات وخاصة على أوامر التهيئة. ينبغي تعديل أوامر التهيئة الموجودة في الملف "index.js" كالتالي:

import { ApolloClient, ApolloProvider, HttpLink, InMemoryCache, split} from '@apollo/client' import { setContext } from 'apollo-link-context' import { getMainDefinition } from '@apollo/client/utilities'import { WebSocketLink } from '@apollo/client/link/ws' const authLink = setContext((_, { headers }) => { const token = localStorage.getItem('phonenumbers-user-token') return { headers: { ...headers, authorization: token ? `bearer ${token}` : null, } } }) const httpLink = new HttpLink({ uri: 'http://localhost:4000', }) const wsLink = new WebSocketLink({ uri: `ws://localhost:4000/graphql`, options: { reconnect: true }})const splitLink = split( ({ query }) => { const definition = getMainDefinition(query) return ( definition.kind === 'OperationDefinition' && definition.operation === 'subscription' ); }, wsLink, authLink.concat(httpLink),) const client = new ApolloClient({ cache: new InMemoryCache(), link: splitLink}) ReactDOM.render( <ApolloProvider client={client}> <App /> </ApolloProvider>, document.getElementById('root') )

ولكي تعمل الشيفرة لابدّ من تثبيت بعض الاعتماديات:

npm install @apollo/client subscriptions-transport-ws

إنّ السبب الكامن خلف إجراء التعديلات على أوامر التهيئة، هو ضرورة امتلاك التطبيق اتصال HTTP بالإضافة إلى مقبس ويب إلى خادم GraphQL.

const wsLink = new WebSocketLink({ uri: `ws://localhost:4000/graphql`, options: { reconnect: true } }) const httpLink = createHttpLink({ uri: 'http://localhost:4000', })

تُنفَّذ الاشتراكات باستخدام دالة الخطاف useSubscription.

لنعدل الشيفرة كالتالي:

export const PERSON_ADDED = gql` subscription { personAdded { ...PersonDetails } } ${PERSON_DETAILS}` import { useQuery, useMutation, useSubscription, useApolloClient} from '@apollo/client' const App = () => { // ... useSubscription(PERSON_ADDED, { onSubscriptionData: ({ subscriptionData }) => { console.log(subscriptionData) } }) // ... }

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

سيرسل الشخص تنبيهًا إلى العميل عندما يُضاف شخص جديد، ثم تستدعى الدالة المعرّفة في الصفة onSubscriptionData وتُزوّد بتفاصيل الشخص الجديد كمعاملات.

لنوسِّع حلنا بحيث يضاف الشخص الجديد إلى الذاكرة المؤقتة لمكتبة Apollo عندما تُستقبل تفاصيله.

لكن لابدّ من الانتباه إلى عدم إضافة الشخص الجديد إلى الذاكرة المؤقته مرتين عندما يُنشئه المستخدم:

const App = () => { // ... const updateCacheWith = (addedPerson) => { const includedIn = (set, object) => set.map(p => p.id).includes(object.id) const dataInStore = client.readQuery({ query: ALL_PERSONS }) if (!includedIn(dataInStore.allPersons, addedPerson)) { client.writeQuery({ query: ALL_PERSONS, data: { allPersons : dataInStore.allPersons.concat(addedPerson) } }) } } useSubscription(PERSON_ADDED, { onSubscriptionData: ({ subscriptionData }) => { const addedPerson = subscriptionData.data.personAdded notify(`${addedPerson.name} added`) updateCacheWith(addedPerson) } }) // ... }

يمكن استخدام الدالة updateCacheWith ضمن الكائن PersonForm لتحديث الذاكرة المؤقتة:

const PersonForm = ({ setError, updateCacheWith }) => { // ... const [ createPerson ] = useMutation(CREATE_PERSON, { onError: (error) => { setError(error.graphQLErrors[0].message) }, update: (store, response) => { updateCacheWith(response.data.addPerson) } }) // .. }

يمكن إيجاد شيفرة العميل بشكلها الكامل ضمن الفرع part8-9 في المستودع المخصص للتطبيق على Github.

مسألة n+1

لنضف شيئًا ما إلى الواجهة الخلفية. سنعدل التخطيط بحيث يمتلك النوع Person الحقل friendOf الذي يدل على أي قائمة أصدقاء يتواجد الشخص:

type Person { name: String! phone: String address: Address! friendOf: [User!]! id: ID! }

يجب أن يدعم التطبيق الاستعلام التالي:

query { findPerson(name: "Leevi Hellas") { friendOf{ username } } }

وبما أنّ الحقل friendOf ليس حقلًا من حقول الكائن Person ضمن قاعدة البيانات، لابدّ من إنشاء محلل للعملية يحل هذا الموضوع. لننشئ أولًا محللًا يعيد قائمة فارغة:

Person: { address: (root) => { return { street: root.street, city: root.city } }, friendOf: (root) => { // يعيد قائمة فارغة return [ ] }},

يمثّل المعامل root الكائن الخاص بالشخص الذي تُنشأ من أجله قائمة أصدقاء، وبالتالي سنبحث ضمن كل الكائنات من النوع User على تلك التي تمتلك فيها root معرّفًا فريدًا id كالتالي root._id في قائمة الأصدقاء الخاصة به:

Person: { // ... friendOf: async (root) => { const friends = await User.find({ friends: { $in: [root._id] } }) return friends } },

سيعمل الآن التطبيق.

كما يمكن أن ننفذ مباشرة استعلامات أكثر تعقيدًا. فمن الممكن على سبيل المثال إيجاد أصدقاء جميع المستخدمين:

query { allPersons { name friendOf { username } } }

لكن هناك مشكلة واحدة في حلّنا، فهي تُرسل عددًا غير منطقي من الاستعلامات إلى قاعدة البيانات. فلو سجّلنا كل استعلام، وكان لدينا 5 أشخاص، سنرى التالي:

Person.find User.find User.find User.find User.find User.find

فعلى الرغم من أننا نفّذنا استعلامًا واحدًا رئيسيًا، فسيُنفِّذ كل شخص ضمن قاعدة البيانات استعلامًا آخر من خلال المحلل الخاص به، وهذا ما يعرف بمشكلة n+1 الشهيرة والتي تظهر بين الفينة والأخرى بشكل مختلف، وقد تتسلل إلى شيفرة المطورين دون الانتباه إليها.

يعتمد حل هذه المشكلة على الحالة التي أدت لظهورها. وعادة ما تتطلب استخدام استعلامات مشتركة بدلًا من عدة استعلامات منفصلة.

إنّ الحل الأسهل لحالتنا هي تخزين الأشخاص الذين تتواجد قائمة أصدقائهم ضمن كل كائن من النوع Person:

const schema = new mongoose.Schema({ name: { type: String, required: true, unique: true, minlength: 5 }, phone: { type: String, minlength: 5 }, street: { type: String, required: true, minlength: 5 }, city: { type: String, required: true, minlength: 5 }, friendOf: [ { type: mongoose.Schema.Types.ObjectId, ref: 'User' } ], })

وبعدها يمكننا أن ننفذ استعلامًا مشتركًا أو أن نملأ الحقول friendOf للأشخاص عندما نحضر الكائنات Person:

Query: { allPersons: (root, args) => { console.log('Person.find') if (!args.phone) { return Person.find({}).populate('friendOf') } return Person.find({ phone: { $exists: args.phone === 'YES' } }) .populate('friendOf') }, // ... }

لن نحتاج بعد التغييرات التي أجريناها إلى محلل مستقل للحقل friendOf.

لن يسبب الاستعلام allPersons مشكلة n+1 إن أحضرنا اسم الشخص ورقم هاتفه فقط:

query { allPersons { name phone } }

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

وكما يقول دونالد كنوث:

اقتباس

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

تقدم المكتبة DataLoader التي طورتها Facebook حلًا جيدًا لمشكلة n+1 بالإضافة إلى مسائل أخرى. يمكن إيجاد معلومات أكثر عن استخدامها مع Apollo من خلال الانترنت وننصح بالمقالة graphql server data loader caching batching والمقالة batching graphq queries with dataloader.

خاتمة

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

لقد أصبحت GraphQL تقنية قديمة نوعًا ما، إذ بدأت Facebbok باستخدامها منذ عام 2012، وقد خضعت بالفعل لاختبارات صعبة. تزايد الاهتمام بهذه المكتبة شيئًا فشيئًا منذ أن نشرتها FaceBook عام 2015، وقد تهدد سيطرة REST في المستقبل القريب. إنه تلاشي متوقع، لكنه لن يحصل قريبًا. وبالتالي تعلم GrapQL أمر يستحق المحاولة بكل تأكيد.

تمارين 1 الاشتراكات من جهة الخادم

أضف الاشتراك bookAdded إلى الواجهة الخلفية بحيث يعيد تفاصيل كل الكتب الجديدة للمشترك.

2 الاشتراكات من جهة العميل: القسم الأول

ابدأ باستخدام الاشتراكات من جهة العميل. أضف الاشتراك bookAdded، وأبلغ المستخدم عندما تُضاف كتب جديدة. يمكنك أن تنبه المستخدم بطرق عدة، مثل استعمال الدالة window.alert على سبيل المثال.

3 الاشتراكات من ناحية العميل: القسم الثاني

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

مشكلة n+1

جد حلًا لمشكلة n+1 في الاستعلام التالي بأي طريقة تريد:

query { allAuthors { name bookCount } }

وهكذا نكون وصلنا إلى آخر تمرين في هذا القسم وحان الوقت لرفع إجاباتك إلى GitHub. لا تنس تحديد التمارين التي أنجزت حلها ضمن منظومة تسليم التمارين.

ترجمة -وبتصرف- للفصل Fragments and Subscriptions من سلسلة Deep Dive Into Modern Web Development

53,124 النص وأسلوب الطباعة (Typography) في تصميم الرسوميات

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

ما هو عنصر النص أو أسلوب الطباعة (التيبوغرافي)؟

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

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

المبادئ الأساسية لفن تصميم النصوص

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

  1. المحارف والخطوط Typeface and Fonts: يجب الانتباه جيدًا عند انتقاء نوعية الخط المستخدم بحيث يجب أن تكون مميزة للعلامة التجارية أو للهدف من التصميم، ويجب أن نستخدم عائلة الخط ذاتها في التصاميم المتعددة للهدف ذاته مثل تصميم الهوية البصرية لعلامة تجارية وتصميم المنشورات الترويجية على مواقع التواصل الاجتماعي، مع مراعاة وزن الخط وتأثيره النفسي على القارئ حيث يختلف تأثير الخط الثخين عن سواه على سبيل المثال، ويمكن استخدام خطوط من عائلات خطية مختلفة شريطة التوافق فيما بينها. وللعلم فقط فالمحرف هو نوعية الخط فقط مثل Arial والخط هو تفصيل نوعية الخط مثل Arial Bold 12point.
  2. انسيابية السطور Leading: وهي المسافة بين السطور بحيث يجب أن تكون موحدة وغالبًا ما تكون بارتفاع أعلى من ارتفاع خط النص نفسه.
  3. التتابع Letter Spacing: وهي المسافة الموجودة بين الكلمات في النصوص العربية وبين الحروف ذاتها في النصوص اللاتينية.
  4. طول سطر النص Line length: وهو الطول المستخدم لكل سطر في النص، فلا يجب أن يكون ممتدًا من بين حافتي التصميم ولا أن يكوّن من النص عمودًا نحيفًا.
  5. الهرمية Hierarchical: وهو نفس المبدأ الخاص بالتصميم ولكنه يتعلق هنا بالنص فقط، حيث يجب ترتيب النصوص بحسب الأهمية فيكون النص الأهم هو الأثقل من ناحية الوزن البصري مثل أن يكون أكبر حجمًا وأبرز لونًا وأثخن وغير ذلك، ثم النص الذي يليه من حيث الأهمية يجب أن يكون أخف من ناحية الوزن البصري، ثم الذي يليه وهكذا.
  6. اللون Color: يساعد على زيادة بروز النص وتأثيره مع الانتباه لقواعد الألوان وتطبيق أسسه الصحيحة على النص.
  7. المحاذاة Alignment: هو التأثير الأبرز في تحسين جماليات تصميم النصوص ويجب تطبيق المحاذاة على محور معين ضمن التصميم بطريقة مدروسة.
  8. التباين Contrast: لا يتعلق الأمر هنا بتباين ألوان النص مع محيطه أو مع بقية النصوص فقط، بل ويتعلق بتباين الأحجام والمسافات والمواقع أيضًا.
أنواع الخطوط

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

الخطوط العربية

تتألف الخطوط العربية من أنواع أساسية تتفرع عنها بقية الخطوط المعروفة وهي كثيرة ومن أهمها الكوفي، الثلث، النسخ، الفارسي، الديواني، الرقعة، المغربي والحر وغيرها الكثير، وسنتعرّف تاليًا على أهمها.

  • الخط الكوفي: من أقدم الخطوط في بلاد العرب، ويمثل مظهرًا من مظاهر جمال الفنون العربية، وقد تسابق الكُتَاب في تطويره والتفنن في زخرفة حروفه، وله عشرات الأنواع المتفرعة عنه بما قد يتجاوز الخمسين نوعًا، من بينها البسيط، الفاطمي، الإيراني، المورّق، المزخرف، المعماري والكوفي المربع. هذه صور تمثل بعضًا من أنواع هذا الخط.

وهنا بعض الخطوط الحاسوبية المشتقة من الخط الكوفي.

  • خط الثلث: خط الثلث هو أصل الخطوط العربية وأجملها وأصعبها، استخدم في تزيين الجوامع والمحاريب والقباب وبدايات المصاحف، كما استخدم في عناوين الكتب، وأسماء الصحف والمجلات.

وهذه بعض الخطوط الحاسوبية المشتقة من خط الثلث.

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

وهذه بعض الخطوط الحاسوبية المشتقة من خط النسخ.

  • الديواني: يتميّز باستدارة حروفه وبمرونة التقاء الحروف وتلاصقها، فهو خط لين مطواع، وسهل الاستخدام. قام الأتراك بتطوير هذا الخط في عهد السلطان محمد الفاتح ووضعت قواعده بعد فتح القسطنطينية ببضع سنوات.

وهذه بعض الخطوط الحاسوبية المشتقة من الخط الديواني.

  • الفارسي: عُرف هذا الخط عند العرب بالخط الفارسي نسبةً للفرس وعرف عند الأتراك بخط التعليق وهو الخط الرئيسي في الهند وإيران وباكستان وأفغانستان. ويتميز بأن خطوطه ليست مستقيمة فكل الحروف بها انحناءات.

وهذا خط حاسوبي مشتق من الخط الفارسي.

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

وهذه بعض الخطوط الحاسوبية المشتقة من خط الرقعة.

  • المغربي: انتشر الخط المغربي في شمالي أفريقيا، وله عدة أنواع وهي الكوفي المغربي، الثلث المغربي، المبسوط، المجوهر والمسند.

وهذه بعض الخطوط الحاسوبية المشتقة من الخط المغربي.

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

وهذه بعض الخطوط الحاسوبية المشتقة من الخط الحر.

الخطوط اللاتينية

وهي الخطوط المستخدمة في اللغات الغربية مثل الإنجليزية والفرنسية وغيرها، ولهذه الخطوط أنواع أساسية يطلق عليها اسم عائلات الخطوط ويُشتق منها العديد من الخطوط، ومن أهم هذه الخطوط Serif وSans Serif وSlab Serif وScript وDecorative.

  1. Serif: تعد خطوط Serif تقليدية وسهلة القراءة للغاية، لذا فهي عادةً أفضل نوع من الخطوط لاستخدامها للعناوين والتصاميم الكبيرة، وهي شائعة لتصاميم شعارات العلامات التجارية، إلا أن ذلك لا ينطبق دائمًا على شاشات الهاتف المحمول. وكلمة Serif تعني تلك الأجزاء النافرة من الحروف بينما Sans Serif تعني عدم وجود تلك الأجزاء. استُخدم هذا النوع من الخطوط بما في ذلك جميع الخطوط التابعة لعائلته في العناوين و في شعارات علامات تجارية شهيرة مثل هاربرز بازار Harper’s Bazaar ومجلة إيللي Elle Magazine وجيورجيو أرماني Giorgio Armani. ومن أشهر الخطوط التابعة لعائلة Serif خطوط Garamond، Baskerville وDidot.

بعض من خطوط Serif.

  1. Sans Serif: تزايدت شعبية هذه الخطوط بصورة كبيرة في السنوات الأخيرة، وتتميز بالشخصية الرئيسية دون أي حدود نهائية زخرفية. يُنظر إلى هذه الأنواع من الخطوط على أنها من أكثر خيارات الخطوط وضوحًا وبساطة وحداثة، وتعد أفضل خط يمكن استخدامه لقراءة النص على الشاشات. يسهل على الأجهزة عرض خطوطها الواضحة والحادة، وتظهر بوضوح على الشاشة البيضاء الساطعة. وقد استخدمت هذه العائلة من الخطوط مجموعة من العلامات التجارية الشهيرة أمثال تارجت Target وباناسونيك Panasonic وجيب Jeep وتويوتا Toyota، كما بدّلت جوجل Google شعارها من خط Serif إلى خط من Sans Serif عام 2015. من أشهر خطوط هذه العائلة Futura، Graphik، Circular و GT Americ.

بعض من خطوط Sans Serif.

  1. Slab Serif: وهي فرع من عائلة خطوط Serif الشاملة التي تحدثنا عنها سابقًا. إلا أنها مربعة ومتكتّلة بشكل أكبر من خطوط Serif التقليدية، كما أنها أثخن وأكثر حداثة وتعد خيارًا جيدًا للعلامات التجارية التي تتميز بالجرأة والدرامية، ومن هذه العلامات التجارية هوندا Honda، سوني Sony وفولفو Volvo. ومن أشهر الخطوط التي تنتمي لهذه العائلة Sentinel، Adelle، Shift و Bodoni Egyptian.

بعض من خطوط Slab Serif.

  1. Script: هو خط يتميز بالرسمية والشكليات ويحاكي الكتابة بخط اليد إلى حد ما. ويتوفر منه خطوط ذات ميزات متنوعة من الخيالي والمتطور إلى العصري والمريح. يعد من أقل الخطوط استخدامًا في التصاميم كونه لا يناسب النصوص الطويلة، لكنه جيد إلى حد ما في العناوين والشعارات. ومن أشهر العلامات التي تستخدم هذه النوعية من الخطوط إنستغرام Instagram، بي إنترست Pinterest، كوكاكولا Coca-Cola وكاديلاك Cadillac. ومن أشهر الخطوط التي تنتمي لهذه العائلة Southern Aire، Milles، French Script و Billenia.

بعض من خطوط Script.

  1. Decorative: وتعني الخطوط الزخرفية، وهي مميزة في التصاميم الزخرفية والفنية أكثر مما تستخدم في النصوص والعناوين، وتستخدم في الشعارات والمنشورات الإعلانية كنوع من التزيين، وغالبًا ما تكون من أكبر عناصر التصميم لإبراز زخارفها. لها نمطان منتشران وهما النمط القديم التاريخي والحديث المستقبلي. ومن أشهر الشعارات التي استخدمت هذه الخطوط تويز آر أس Toys R Us، ليجو Lego وفانتا Fanta. ومن أشهر خطوط هذه العائلة Helios وThe Roseberry وMotters و Xaviera.

بعض من خطوط Decorative.

قواعد تصميم النص

وتتضمن التطبيق العملي لمبادئ تصميم النص مع الإشارة إلى أهم ما يجب اتباعه في عملية التصميم.

التقنين Kerning

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

انعدام التقنين عبر زيادة التباعد في الحروف يؤدي إلى تصميم سيء

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

صورة توضح النص بدون ومع تقنين – الصورة من مدونة خطوط أدوبي

التواصل بين الخطوط Font Communication

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

لاحظ الخط المستخدم في العنوان غير ملائم لمعنى النص وغير متناسق مع الخط المستخدم في العنوان الثاني

الخطوط هنا ملائمة للمحتوى ومتناسقة مع بعضها بالنسبة لكلا العنوانين

تطبيق المحاذاة Alignment

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

تطبيق المحاذاة بطريقة صحيحة منح تصميم النص أناقة وجمالية وراحة للنظر

عدم تطبيق المحاذاة أساءت للتصميم ككل وأصبح غير مريح للنظر

تطبيق مبدأ الهرمية Hierarchy

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

لاحظ التدرج من حيث الأهمية من العنوان الرئيسي بالتتالي.

أهمية الحجم Size

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

لاحظ المثال في الأعلى غير مثير للاهتمام بينما في المثال الثاني في الأسفل الأمر مختلف مع أن المحتوى متطابق تمامًا.

التركيز في الفقرات النصية Emphasis

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

لاحظ أن النص العلوي ممل وغير مثير للاهتمام بعكس السفلي – النص مقتبس من ويكيبيديا

تجنب المسافات الزائدة Distances

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

لاحظ النص العلوي غير مريح للنظر وللقراءة معًا ويشعرك بالغرابة – النص مقتبس من ويكيبيديا

تجنب (الأرامل النصية) و (الأيتام النصية)

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

لاحظ الأيتام النصية (1) في الصفحة اليسرى والأرامل النصية في اليمنى (2) وهو ما يجب تجنبه.

تجنب الأخطاء الإملائية واللغوية

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

لاحظ الفرق الشاسع بين الإعلانين من حيث التدقيق اللغوي، أنت بالتأكيد لن تتقبل الإعلان الأول بسلاسة.

خاتمة

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

53,082 إدارة الإضافات في ووردبريس

ما هي الإضافات؟

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

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

كيف تساهم هذه الإضافات في بنية ووردبريس؟

إن نظام إدارة محتوى ووردبريس أو بنية ووردبريس يهدف بشكل رئيسي لنشر المحتوى وإدارة المستخدمين، وكل إضافة هي جزء إضافي برمجي سهل التثبيت يُساهم في تعزير الخدمات الأساسية لووردبريس أو إضافة وظيفة وميزة جديدة له.

يُقدم ووردبريس أساس لبناء الموقع والإضافات هي أحد المُكملات للبناء والتي من خلالها تدعم موقعك بالوظائف التي تريدها أو تحتاجها دون الحاجة لامتلاكك خبرة برمجية أو حتى الاستعانة بمُطور لأن الكم الكبير من الإضافات المجانية المتوفرة تُغطي قسمًا لا بأس به مما يحتاجه المستخدمون ويبقى بعض الأمور التي تحتاج فيها مُبرمجًا.

بعض الأمثلة على الإضافات

تندرج بعض من أكثر الإضافات شعبية -المتواجدة ضمن مستودع ووردبريس- ضمن التصنيفات التالية:

  • التحكم بالتعليقات المزعجة
  • تحسين محركات البحث SEO
  • تصدير واستيراد البيانات
  • التجارة الإلكترونية E-commerce
  • الأمن
  • التخزين المؤقت Caching

ما سبق هو عينة صغيرة فهناك الآلاف من الإضافات المتوفرة ضمن المستودع وهذا يزيد من فرصة إيجادك لما تريده من خواص أو ميزات.

إيجاد وتثبيت الإضافات إيجاد إضافات

تستطيع تصفح الإضافات والبحث عما تريده ضمن مستودع ووردبريس حيث جميع الإضافات مجانية ومتوفرة للتنزيل كملف مضغوط zip ليبقى عليك رفعها وتثبيتها على موقع ووردبريس.

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

تحديث الإضافات

يعمل مطورو الإضافات على تحديث إضافاتهم دوريًا حيث تظهر هذه التحديثات ضمن صفحة الإضافات على موقع ووردبريس. لمعرفة الإضافات الموجودة ضمن موقعك والتي تحتاج إلى تحديث:

  1. اضغط على "إضافات" ضمن القائمة الجانبية في الجهة اليمنى من لوحة التحكم.
  2. ابحث ضمن القائمة التي تعرض الإضافات المثبتة على موقعك وابحث إن كان أي منها يحتوي على السطر "هناك نسخة جديدة متاحة من…".
  3. اضغط على رابط "عرض تفاصيل النسخة…" لعرض تفاصيل أوسع عن النسخة الأحدث من الإضافة.
  4. اضغط على "التحديث الآن" لتحديث الإضافة.

توافق الإضافة

في حال لم يصدر تحديث للإضافة منذ آخر تحديث لووردبريس فقد تصبح غير متوافقة أو نسبة توافقها مع الإصدار الجديد من ووردبريس قد تكون غير معروفة. تستطيع رؤية معلومات التوافق مع نسختك من ووردبريس ضمن معلومات الإضافة من صفحة "أضف جديد" ضمن تبويب الإضافات أو من قائمة الإضافات التي تم تثبيتها.

توافقية الإضافات الجديدة

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

توافقية الإضافات المثبتة

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

تثبيت الإضافات

يوجد ثلاث طرق لتثبيت إضافة ووردبريس.

  • التثبيت التلقائي للإضافة حيث يمكن تثبيت أي إضافة موجودة ضمن مستودع ووردبريس بشكل تلقائي من خلال المثبت المبني ضمن ووردبريس.
  • رفع الإضافة من خلال لوحة تحكم المدير حيث تستطيع بسهولة تثبيت الإضافة من خلال رفع الملف المضغوط zip الخاص بها من على حاسوبك.
  • التثبيت اليدوي للإضافة ففي بعض الحالات قد تضطر لرفع الملف المضغوط للإضافة من خلال بروتوكول SFTP.
التثبيت التلقائي للإضافة

هذه الطريقة هي الأسهل لتثبيت الإضافة، وتتضمن الخطوات التالية:

  1. توجه إلى "إضافات" ثم تبويب "أضف جديد".
  2. استخدم مربع البحث الموجود في الزاوية العلوية اليسرى للبحث عن إضافة باستخدام كلمة مفتاحية أو اسم المؤلف أو وسم.
  3. سوف تظهر لك صفحة نتائج البحث التي تتضمن مجموعة من الإضافات، اختر الإضافة التي تريد واضغط على عنوانها لتقرأ المزيد عن مواصفاتها. قد تتضمن هذه الصفحة ملاحظات للتثبيت أو توثيق الإضافة أو معلومات أخرى مفيدة.
  4. اضغط على "التنصيب الآن" لتثبيت الإضافة.
  5. اضغط على "تفعيل" لتفعيل الإضافة.
رفع الإضافة بشكل يدوي من لوحة تحكم المدير في ووردبريس

إن كنت تمتلك نسخة مضغوطة من ملف الإضافة، تستطيع رفعها بشكل يدوي لتثبيتها من خلال لوحة تحكم المدير لووردبريس.

  1. توجه إلى "إضافات" ثم تبويب "أضف جديد"
  2. اضغط على خيار "رفع إضافة" الموجود في الزاوية العلوية اليمنى.
  3. اختر الملف المضغوط zip من حاسوبك.
  4. اضغط على "التنصيب الآن"
  5. عند اكتمال التثبيت سوف تظهر عبارة "تم تنصيب الإضافة بنجاح". اضغط على "تفعيل الإضافة" في أسفل الصفحة.
التثبيت اليدوي للإضافة

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

تتطلب منك هذه الطريقة الإلمام بكيفية نقل الملفات باستخدام بروتوكول SFTP.

  1. عليك فك ضغط ملف الإضافة في حال كانت بصيغة zip. يجب أن تجد بعد فك الضغط مجلدًا وحيدًا بنفس اسم الإضافة.
  2. ابحث ضمن مجلد الإضافة عن ملف readme.txt واقرأ محتوياته للتأكد من أن هذه هي الإضافة الصحيحة والاطلاع على التعليمات الخاصة بالتثبيت إن وجدت.
  3. الآن اتصل بالمخدم الخاص بك والذي يحتوي على موقعك من خلال بروتوكول SFTP.
  4. انسخ مجلد الإضافة إلى المسار wp-content/plugins/ ضمن مسار ووردبريس. بهذا تكون قد ثبتت الإضافة ضمن موقعك.
  5. توجه إلى صفحة الإضافات المنصبة في موقعك وحدد مكان وجود الإضافة الجديدة التي قمت برفعها.
  6. اضغط على خيار "تفعيل".
  7. في حال وجود خيار "تفاصيل أكثر"، اضغط عليه لمعرفة المزيد من المعلومات عن الإضافة.

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

الإضافات المفضلة

تستطيع إضافة أي إضافة إلى قائمة المفضلة لديك وتستطيع بسهولة عرض وتثبيت الإضافات المفضلة لمستخدم ووردبريس آخر.

تفضيل إضافة
  1. عليك تسجيل الدخول ضمن موقع ووردبريس ثم التوجه إلى مستودع إضافات ووردبريس.
  2. عند مراجعة صفحة أي إضافة يمكنك الضغط على أيقونة القلب الموجودة إلى جانب خيار التنزيل.
  3. سوف يظهر ضمن ملفك العلني على ووردبريس قائمة بالإضافات التي تُفضلها حالما يصبح لديك إضافات مُفضلة كما أن تقييمك للإضافة سوف يظهر في نفس المكان في حال نشرت مراجعة للإضافة.
مشاهدة الإضافات المفضلة لمستخدم

لمشاهدة الإضافات المفضلة لدى مستخدم ووردبريس، بما في ذلك الإضافات التي تفضلها أنت:

  1. توجه لصفحة "أضف جديد" للإضافات ضمن موقعك.
  2. اضغط على لسان المفضلة
  3. اكتب اسم المستخدم ضمن الحقل المخصص.
  4. اضغط على "احصل على المفضلة".

تتضمن كل الإضافات الظاهرة هنا خيار "التنصيب الآن" لتتمكن من إضافتها لموقعك بسهولة.

حذف إضافة

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

الحذف التلقائي للإضافة

الطريقة الآمنة والسهلة لحذف إضافة هي عبر لوحة تحكم مدير ووردبريس.

  1. توجه إلى صفحة "إضافات"، ثم حدد الإضافة التي تريد إلغاء تثبيتها.
  2. اضغط على خيار "تعطيل".
  3. اضغط الآن على خيار "حذف".
الحذف اليدوي لإضافة

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

  1. توجه إلى صفحة "إضافات"، وحدد الإضافة التي تريد حذفها.
  2. اضغط على خيار "تعطيل".
  3. في حال قمت بتعديل ملفات القالب لكي تتمكن من تثبيت الإضافة عليك إزالة هذه التعديلات قبل حذفها.
  4. اتصل بالمخدم الخاص بموقعك باستخدام بروتوكول SFTP.
  5. توجه إلى مسار ووردبريس ثم wp-content/plugins/ وحدد المجلد الخاص بالإضافة التي تريد حذفها.
  6. الآن احذف المجلد ومحتوياته.
  7. توجه من جديد لصفحة "إضافات" ضمن لوحة تحكم مدير ووردبريس، وتأكد من أن عملية حذف الإضافة المطلوبة تمت بنجاح.

ملاحظة: انتبه أنه ليس بالضرورة أن يتماثل اسم الإضافة مع اسم المجلد الخاص بها لذلك عليك الانتباه.

تحذير: تتضمن العملية التالية حذف ملفات يدويًا من المخدم الذي يتواجد عليه موقعك لذلك قد يكون هذا خطيرًا ويُنصح بأخذ نسخة احتياطية عن الموقع قبل البدء بهذه العملية.

حل المشاكل

قد لا تعمل إضافة ووردبريس كما هو متوقع منها، وللأسف لا يوجد طريقة محددة أو وصفة جاهزة لحل مثل هذه المشاكل لذلك يُوفر هذا القسم معلومات مفيدة لك قدر الإمكان.

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

قد تكون المعلومات الموجودة في هذا القسم غير مألوفة أو مخيفة لأي مُستخدم جديد لووردبريس ولكن إن كنت تمتلك خبرة جيدة بمنصة ووردبريس ولا تخاف من الغوص عميقًا فإن هذا القسم مفيد لك.

تساعدك هذه الخطوات على حل المشكلة تواجهك مع إضافة جديدة أو إضافة سابقة توقفت عن العمل بعد تحديث:

  • في حال ثُبتت الإضافة يدويًا:
  • تحقق من موقع مجلد الإضافة، يجب أن تجده ضمن المسار /wp-content/plugins
  • عند رفعك نسخة جديدة من الإضافة عليك التحقق من أن النسخ القديمة تم حذفها أو إعادة تسمية المجلد الخاص بها.
  • استخدم بروتوكول SFTP لحذف مجلد الإضافة ثم أعد تثبيتها من جديد.
  • في حال قمت بتعديل على ملفات القالب ليتوافق مع الإضافة عليك مراجعة التعديلات. تأكد أن الشيفرة صحيحة وخالية من الأخطاء الكتابية وفي مكانها الصحيح (مثلا: ضمن حلقة ووردبريس وليس خارجها).
  • في حال عدم ظهور الإضافة ضمن قائمة الإضافات، عليك إلقاء نظرة على الملف الرئيسي للإضافة باستخدام محرر الإضافات للتأكد من أن شيفرة الترويسة للإضافة موجودة ومكتوبة بشكل صحيح.
  • في حال استخدامك لقالب ووردبريس مخصص عليك تفعيل القالب الافتراضي بدلًا منه وتأكد هل ما زالت المشكلة موجودة أم لا؟ في حال توقفت المشكلة عن الظهور يجب عليك التواصل مع مطور هذا القالب للمساعدتك على حل المشكلة.
  • ألغ تفعيل جميع الإضافات ثم أعد تفعيل الإضافة التي تسبب المشكلة، وإن عملت الإضافة بدون مشاكل فهذا يعني وجود تعارض مع أحد الإضافات المُفعلة لديك. الآن عليك تفعيل الإضافات الأخرى واحدة تلو الأخرى ولاحظ إن عادت المشاكل لتكتشف عندها الإضافة التي تسبب هذا التعارض.
نصائح حول إضافات ووردبريس

ما يلي هي نصائح وتقنيات للمستخدمين المتقدمين والمطورين.

إدارة الإضافة

يتم إدارة الإضافات من لوحة تحكم ووردبريس للمدير من صفحة "إضافات منصبة" حيث تظهر الإضافات ضمن هذه الصفحة على شكل قائمة وتكون إما فعالة أو معطلة. تستطيع من هنا تفعيل الإضافات أو تعطيلها وحذفها كما تتضمن كل إضافة روابط تعطيك معلومات أوسع عن الإضافة حيث أن الإضافات المكتوبة بخط عريض تكون فعالة.

يجب أن يتضمن الملف الرئيسي في كل إضافة ترويسة تُظهر المعلومات الأساسية عن الإضافة حيث يتعرف ووردبريس على هذه الترويسة والتي يستخدمها لاستخلاص المعلومات التي تظهر في قائمة الإضافات ضمن صفحة المدير.

<?php /** * Plugin Name: Magic Plugin * Description: Magic Plugin performs magic. * Plugin URI: http://example.com/magic-plugin * Version: 2.3 * Author: Mr. Magic * Author URI: http://example.com/ * Text Domain: magic-plugin * * @package Magic Plugin */ ?>

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

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

إضافات مفعلة على الشبكة

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

يعمل ووردبريس على تحميل هذه الإضافات قبل الإضافات العادية وهذا يعني أن الشيفرة والخطافات Hooks ضمن الإضافات الواجب استخدامها سوف تكون متوفرة لباقي الإضافات.

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

إخفاء الإضافات عند تعطيلها

تضيف بعض الإضافات عند تفعيلها شيفرة إلى ملفات قالب ووردبريس ويمكن أن يبقى هذا الكود الإضافي في مكانه حتى بعد تعطيل الإضافة وهذا قد يؤثر على شكل القالب أو وظائفه لينتج بعض الأخطاء. لذلك من المهم منع إضافة معطلة من أن يتم اكتشافها أو استخدامها ولفعل ذلك يجب أن تضيف شيفرة بي اتش بي إلى القالب لتنفيذ عملية تحقق بسيطة من وجود الإضافة ()function_exists. (انظر إلى المثال في الأسفل) ثم ارفع القالب المعدل إلى مجلد wp-content.

تقوم الدالة البرمجية if(function_exists())‎ بالتحقق من الإضافة لتقوم باستدعاء بقية الدوال المرتبطة بهذه الإضافة إن كانت مثبتة ونشطة أما في حال أعادت الدالة FALSE فهذا يعني أن الإضافة غير مثبتة أو غير مُفعلة ويجب تجاهل الدوال المرتبطة بالإضافة ومتابعة تحميل الصفحة.

<?php if ( function_exists( 'FUNCTION NAME' ) ) { FUNCTION_NAME(); } ?>

تستخدم الإضافة في المثال دالة تدعى ()alexgetshoutbox لطباعة محتواها.

<?php if ( function_exists( 'alex_get_shoutbox' ) ) { alex_get_shoutbox(); } ?> تطوير الإضافات

تُشكل الإضافات جزء أساسي من ووردبريس ومسيرة تطوره وشعبيته لذلك يعتمد مجمتع ووردبريس على المطورين الراغبين في إغناء مستودع الإضافات الذي يمتلك الآن مجموعة كبيرة من الإضافات المجانية التي تقدم العديد من الميزات الإضافية للبنية الأساسية لووردبريس. يُمكنك الانضمام لهذا المجتمع من خلال إنشاء إضافة خاصة بك ونشرها ضمن مستودع ووردبريس.

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

ترجمة -وبتصرف- للمقال Managing Plugins من موقع ووردبريس

الصفحات

أنت هنا