كيفية بناء قاعدة معارف دعم صديقة لكبار المسئولين الاقتصاديين: الدليل الكامل لحل التوثيق القابل للتطوير

نشرت: 2016-10-26

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

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

TL ؛ DR: أخيرًا أنشأنا وأصدرنا قاعدة المعرفة شبه الثابتة القائمة على التخفيضات لمنصة تحقيق الدخل Freemius الخاصة بنا ، باستخدام WordPress. أشارك هنا كتاب الطبخ الكامل لأبحاثنا ؛ لماذا نختار WordPress بدلاً من حلول SaaS والمولدات الثابتة ؛ كيف فعلنا ذلك (بما في ذلك جميع تخصيصات الكود وتكوين مستوى الخادم) ، وما تعلمناه ، وكيف يمكنك تكرار هذه العملية لتوفير الوقت الثمين ، وإعدادك بسرعة البرق ، والقابلة للتطوير ، والمستدامة ، والآمنة ، وشبه قاعدة المعارف الثابتة (قاعدة المعارف) للمكوِّن الإضافي الخاص بك أو القالب أو أي منتج رقمي آخر.

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

هل أنت جاهز؟ ها نحن.

  • تحفيز
  • ما الذي يجب أن تبحث عنه في حل التوثيق؟
    1. قابلة للتحجيم ودائم
    2. مكتب خلفي سهل الاستخدام
    3. مستمر
    4. تحسين محركات البحث
    5. متوافق مع العلامة التجارية
  • اختيار منصة التوثيق الصحيحة صعب!
    • برامج قاعدة المعرفة كخدمة
    • قواعد المعرفة الثابتة
    • قواعد المعرفة المدعومة من ووردبريس
  • لماذا لم نختار Help Scout Docs أو أي قاعدة معرفية SaaSy أخرى
  • لماذا نختار WordPress على مولدات المواقع الثابتة لقاعدة المعرفة الخاصة بنا
  • لماذا نختار البرنامج الإضافي weDocs WordPress لقاعدة المعرفة الخاصة بنا؟
  • تثبيت وتخصيص حل توثيق وي دوكس
    • إضافة بيانات وصفية للمقتطفات المنسقة من فتات الخبز
    • تخصيص بنية عنوان URL لقاعدة المعرفة (الروابط الثابتة)
    • إضافة صفحة رئيسية جميلة إلى قاعدة معارف weDocs
    • جعل تطبيق weDocs متوافقًا / سريع الاستجابة
  • استخدام Markdown بدلاً من HTML Rich Editing
    • اختيار وتثبيت البرنامج المساعد Markdown WordPress
    • إضافة دعم YouTube و Vimeo Markdown
    • إضافة دعم Nice Callouts Shortcodes
    • إضافة SyntaxHighlighter لـ Pretty Code
  • كيف صنعنا قاعدة معارف WordPress الخاصة بنا بسرعة فائقة؟
    • إضافة أذونات القرص
    • تمكين التخزين المؤقت
    • تكوين التخزين المؤقت على مستوى الخادم
    • مضيفا CDN
  • كيف قمنا بتخصيص بحث KB لخدمة البيانات المخزنة مؤقتًا؟
  • كيف قمنا بتأمين قاعدة معارفنا في WordPress؟
  • الآن أنت

تحفيز

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

ما الذي يجب أن تبحث عنه في حل التوثيق؟

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

قابلة للتحجيم ودائم

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

مكتب خلفي سهل الاستخدام

يجب أن تكون عملية إضافة المقالات التوثيقية وتحريرها سهلة لأي عضو في الفريق ، سواء أكانوا مطورين أم لا.

مستمر

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

تحسين محركات البحث

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

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

متوافق مع العلامة التجارية

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

اختيار منصة التوثيق الصحيحة صعب!

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

لم يكن Google مفيدًا. هناك العديد من الخيارات في السوق والحلول مختلفة بطبيعتها

برامج قاعدة المعرفة كخدمة

هناك حلول برمجيات قاعدة المعارف المعينة التي تدعمها شركات مكتب المساعدة مثل Help Scout Docs و Zendesk Help Center.

قواعد المعرفة الثابتة

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

هناك المئات من المولدات هناك ، ويتم اعتماد محركات مثل Jekyll و Hugo بشكل كبير بين مجتمع المطورين المتشددين (لسبب وجيه!).

قواعد المعرفة المدعومة من ووردبريس

لقد وجدت أكثر من 20 مكونًا إضافيًا لقاعدة المعرفة في مستودع WordPress.org ، وعشرات أخرى من مكونات التوثيق الإضافية المدفوعة على CodeCanyon و Google ، وعشرات من سمات مركز المساعدة.

يشعر بالارتباك؟ لقد فعلت بالتأكيد ¯ \ (° _o) /

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

قبل تحميل سؤالي ، أجريت بعض البحث ووجدت موضوعًا من عام 2015 ، بدأه جان جاليا من WP Mayor ، يطرح نفس السؤال بالضبط:

جان جاليا الفيسبوك بوست

مدهش! قلت في نفسي. وبعد ذلك بدأت في قراءة الإجابات ...

  • يستخدم Adrian Labos مكتب مساعدة Zendesk
  • Pippin Williamson (Pippin Plugins) و Adam Pickering (Astoundify) يستخدمان Help Scout Docs
  • يستخدم Phil Derksen WordPress مع سمة KnowHow
  • Dejan Markovic (Hype Social) يستخدم WordPress مع المكون الإضافي weDocs
  • يستخدم Devin Walker (WordImpress) WordPress مع CPT ومكوِّن ACF الإضافي.
  • يقول أحمد عويس ، الذي صمم قالب DocPress ، إن "الحفاظ على موقع مستندات باستخدام WordPress أصبح غير فعال عندما ينمو عدد المنتجات" وهو الآن يقوم ببناء قاعدة معرفة ثابتة باستخدام محرك Jade النموذجي.
  • أوصى Tom Hemsley (Mega Menu Plugin) باستخدام WordPress مع المكوّن الإضافي Heroic Knowledge Base.
  • كانت هناك ثلاث ردود أخرى حول إضافات WordPress الإضافية من قبل مؤلفيها الذين يشكلون جزءًا من المجموعة.

كما ترى لا يوجد إجماع. لسوء الحظ ، لم يكن هذا مفيدًا جدًا.

لعنة - حان الوقت لبعض البحث ...

نصيحة: كملاحظة جانبية ، إذا كنت شخص منتج في مجال WordPress ، فإنني أوصي بشدة بالتقدم لهذه المجموعة.

اشترك واحصل على نسخة مجانية من موقعنا

WordPress البرنامج المساعد كتاب الأعمال

بالضبط كيفية إنشاء عمل إضافي لبرنامج WordPress مزدهر في اقتصاد الاشتراك.

شارك مع صديق

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

شكرا لك للمشاركة

رائع - تم إرسال نسخة من "The WordPress Plugin Business Book" إلى . هل تريد مساعدتنا في نشر الكلمة أكثر؟ استمر وشارك الكتاب مع أصدقائك وزملائك.

شكرا على الإشتراك!

- لقد أرسلنا نسختك من "The WordPress Plugin Business Book" إلى .

هل لديك خطأ مطبعي في بريدك الإلكتروني؟ انقر هنا لتعديل عنوان البريد الإلكتروني وإرساله مرة أخرى.

غلاف الكتاب
غلاف الكتاب

لماذا لم نختار Help Scout Docs أو أي قاعدة معرفية SaaSy أخرى

أنا من محبي Help Scout ونستخدمها في نظام تذاكر الدعم الخاص بنا. في الحقيقة ، أنا صديق للمؤسسين. في عام 2011 ، كنا نعمل على مكتب 2 ونتوقف معًا لمدة 4 أشهر ، أثناء مشاركتنا في برنامج تسريع Techstars في بوسطن. كان ذلك عندما كان Help Scout هو Denny و Jared و Nick فقط.

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

1. لا يزال إعداد "قاعدة المعارف" ، أو أي محتوى آخر ، في دليل فرعي أفضل بكثير من إعداد نطاق فرعي من حيث ترتيب البحث. راند فيشكين ، مؤسس MOZ (شركة تحسين محركات البحث الرائدة في العالم) لديه فيديو رائع من عام 2015 مع حالات استخدام حقيقية تناقش هذا الموضوع.

لسوء الحظ ، نظرًا للطريقة التي تعمل بها ملفات منطقة DNS ، لا توجد طريقة لإعداد CNAME إلى دليل فرعي.

للتأكد من أنني لم يفوتني أي حل بديل ، اتصلت بفريق دعم Help Scout وإليك الرد الذي تلقيته:

"أكره أن تأتي حاملاً أخبارًا سيئة ، ولكن لا توجد طريقة لوجود مُحرر المستندات في دليل فرعي. لدينا واجهة برمجة تطبيقات لمحرر المستندات تتيح لك تصدير موقعك واستضافته بنفسك ، ولكن سيتعين عليك إعادة بناء بعض المظهر والوظائف: http://developer.helpscout.net/docs-api/

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

2. لم أتحقق من الحلول الأخرى للسبب السابق ، ولكن Help Scout Docs على وجه الخصوص لا يتضمن البيانات الوصفية لـ Rich-Snippets من أجل فتات التنقل والبحث.

هكذا تبدو النتيجة من Help Scout Docs على Google's SERP (صفحة نتائج محرك البحث):

نتائج البحث

فيما يلي نتيجة صفحة تحتوي على بيانات وصفية للمقتطفات المنسقة لمسارات التنقل:

المزيد من نتائج البحث

وإليك نتيجة صفحة تحتوي على بيانات وصفية للمقتطفات المنسقة للبحث:

بمقتطفات منسقة

لن أتعمق في هذا الموضوع ، ولكن بشكل عام ، تساعد البيانات الوصفية للمقتطفات المنسقة محرك البحث على فهم محتوى موقعك وهيكله بشكل أفضل. محركات البحث الرائدة في العالم: Google و Yahoo و Bing ؛ يمكن ترجمة هذه البيانات إلى عناصر مرئية تزيد من نسبة النقر إلى الظهور للبحث (نسبة النقر إلى الظهور). الخلاصة - ستحصل على المزيد من حركة المرور.

لقد قمت أيضًا بإرسال رسالة إلى كريس موني ، المؤسس المشارك في HeroThemes ، وهي شركة تركز بشكل منفرد على حلول Knowledge Base ، وأكد أن مُحسّنات محرّكات البحث هي أحد الأسباب الرئيسية التي تجعل العملاء يهاجرون إلى حل التوثيق داخل الشركة.

فقط للتأكيد على أهمية قيمة تحسين محركات البحث التي يمكنك الحصول عليها من وثائق مكتوبة جيدًا ، أود مشاركة قصة سريعة. في عام 2011 التقيت بـ Elad Eran ، نائب رئيس حلول العملاء في WiX. أوضح عيران بفخر أن برامج قاعدة المعرفة ومنتديات الدعم الخاصة بهم هي واحدة من المحفزات الرئيسية التي ساعدت WiX في الحصول على مرتبة عالية على Google والحصول على حركة مرور عضوية مجانية وعالية الجودة.

تعد منتديات قاعدة المعرفة والدعم أحد المحفزات الرئيسية التي ساعدت WiX في الحصول على مرتبة عالية في Google والحصول على حركة مرور عضوية مجانية وعالية الجودة.

إذا كان ذلك مفيدًا لشبكة WiX ، فيجب أن يكون مفيدًا لنا

لماذا نختار WordPress على مولدات المواقع الثابتة لقاعدة المعرفة الخاصة بنا

تتمثل الفوائد الرئيسية للثبات مع محرك مثل Jekyll في السرعة وقابلية التوسع والأمان.

هل يمكننا الحصول على هؤلاء باستخدام WordPress؟ الجواب - تقريبا.

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

سيؤدي ذلك إلى تحويل الواجهة الأمامية لوثائقنا إلى ثابتة تمامًا. سوف يتسع نطاقه بشكل كبير وسيكون سريعًا للغاية (لأنه ثابت). W00t! W00t!

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

من ناحية أخرى ، كانت سلبيات النهج الثابت لفريقنا هي:

  1. كفريق ، سيتعين علينا اكتساب مجموعة مهارات تقنية جديدة ، وإنشاء بيئة تطوير إضافية ، وإجراء عملية نشر مستمرة للتأكد من أن إضافة الملفات أو تحريرها لا تتطلب تدخل المطور. إنه أمر ممكن بالتأكيد ، لكنه يستغرق وقتًا.
  2. يعد البحث (في الغالب) وظيفة ديناميكية ، لذلك إذا أصبحنا ثابتًا ، فسيتعين علينا تنفيذ بعض RESTful API أو دمج خدمة بحث تابعة لجهة خارجية مثل Algolia. صداع آخر للتعامل معه.
  3. التحكم في الإصدار ليس CMS. بقدر ما أحب GitHub و BitBucket ، فقد يكونان مخيفين للأشخاص غير المتمرسين في مجال التكنولوجيا. على الرغم من أن جميع أعضاء فريقنا هم من المطورين في خلفيتهم ، فمن المحتمل أن يتغير هذا في المستقبل.

نصيحة: من الجدير بالذكر أنه خلال بحثي وجدت مشروعًا أنيقًا يسمى Prose.io يوفر تحريرًا بسيطًا لمحتوى WYSIWYG لملفات GitHub و BitBucket.

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

لماذا نختار البرنامج الإضافي weDocs WordPress لقاعدة المعرفة الخاصة بنا؟

كما ذكرنا سابقًا ، رأيت ما لا يقل عن 30 مكونًا إضافيًا وموضوعًا في WordPress لقواعد المعرفة.

نظرًا لأننا ندير شركة ناشئة ، فإن تقييمها جميعًا غير ممكن. لذلك دعونا نحاول الإزالة.

تم نشر موضوعات قاعدة المعارف!

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

رائع - لدينا الآن 20 مكونًا إضافيًا فقط لاختبارها ...

اختبرت أربعة مكونات إضافية مجانية مختلفة:

  1. قاعدة المعارف CPT
  2. قاعدة معارف الفسفور الابيض
  3. تعليمات الفسفور الابيض
  4. weDocs

وبسرعة معقولة ، اكتشفت أنهم جميعًا يستفيدون من WordPress CPT (أنواع المنشورات المخصصة) والتصنيف المخصص للعلامات والفئات. الاختلاف الرئيسي والوحيد المهم هو في التسلسل الهرمي لهيكل البيانات.

قاعدة المعارف CPT و WP Knowledge Base مسطحة. كما هو الحال مع مشاركات المدونة ، هناك فئات وعلامات ومقالات. لا توجد طريقة لربط مقال بمقال خاص بالوالدين.

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

 الفئة 1
↳ وثيقة 1
↳ وثيقة 2

الفئة 2
↳ وثيقة 3
↳ وثيقة 4

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

 الفئة 1
↳ وثيقة 1
...
الفئة 2
↳ وثيقة 3
↳ وثيقة 1

من ناحية أخرى ، فإن بنية مقالات WP Help و weDocs تشبه الصفحات. يمكن ربط كل وثيقة بأي وثيقة أخرى كأصل. ولكن ، لا يمكن ربطها إلا بأحد الوالدين (وليس مثل فئة).

 وثيقة 1
↳ وثيقة 2
↳ وثيقة 3
↳ وثيقة 4
↳ وثيقة 5
↳ وثيقة 6

هناك فائدتان لهذا الهيكل:

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

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

رائع - الآن أعرف نوع بنية البيانات التي نحتاجها لتوثيقنا.

ثم قضيت وقتًا في القراءة حول مكونين إضافيين متميزين - wpDocs (الإصدار المحترف من WP Knowledge Base) و Heroic Knowledge Base. كلاهما يبدو مثيرًا للإعجاب من الناحية المرئية ، ولكن ...

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

لذا نعم - ربما كان هناك 10 إضافات أخرى لم ألقي نظرة عليها ، لكن النمط كان واضحًا.

قررنا الذهاب مع weDocs عبر WP Help لعدة أسباب:

  1. تعد إعدادات المسؤول الخاصة بسحب وإسقاط واجهة مستخدم weDocs حديثة وسهلة الاستخدام وجذابة بصريًا. واجهة مستخدم weDocs
  2. لا تأتي تعليمات WP مع التصنيف المخصص للمستندات. مما يعني أن الفئات والعلامات لا يتم تسليمها خارج الصندوق.
  3. WP Help لا تدعم فتات الخبز على الإطلاق.
  4. يتم شحن weDocs مع مجموعة من القوالب المخصصة التي ستعرض الوثائق لتبدو جيدة على الفور (من الواضح أنها تتطلب بعض تخصيصات واجهة المستخدم).
  5. WeDocs لديه تدفق مستمر لواجهة المستخدم. في نهاية كل مقال ، يمكنك الانتقال إلى المقالة التالية في السطر.التنقل

دعنا ننتقل إلى الجزء الممتع - التنفيذ ...

تثبيت وتخصيص حل توثيق وي دوكس

للبدء ، قم بتنزيل وتثبيت weDocs مباشرة من مستودع WordPress.org:
https://wordpress.org/plugins/wedocs/

حان الوقت الآن لإجراء بعض التخصيصات:

إضافة بيانات وصفية للمقتطفات المنسقة من فتات الخبز

نظرًا لأننا لم نرغب في تغيير المكون الإضافي الفعلي (إن أمكن) ، فقد استخدمنا قالب weDocs ووظائف السمة.php لتجاوز عرض فتات التنقل الافتراضية.

  1. انسخ /wedocs/templates/single-docs.php إلى /your-theme/wedocs/single-docs.php .
  2. أضف الكود التالي إلى ملف functions.php الخاص بالنسق:
  3. افتح /your-theme/wedocs/single-docs.php واستبدل المكالمة إلى wedocs_breadcrumbs() بـ freemius_wedocs_breadcrumbs() .
  4. نظرًا لأننا قمنا أيضًا بتعديل بنية HTML الخاصة بفتات التنقل إلى قائمة غير مرتبة ( <ul> ) للحصول على دلالات أفضل ، أضف كود SASS التالي إلى قالبك:
  5. لإكمال المقتطفات المنسقة ، ستحتاج إلى إضافة الشفرة التالية إلى علامة <body> الخاصة بك:
    <body<?php if ('docs' === get_post_type()){     echo ' itemscope itemtype="http://schema.org/WebPage"'; } ?>>

تخصيص بنية عنوان URL لقاعدة المعرفة (الروابط الثابتة)

يأتي weDocs ببنية الروابط الثابتة الافتراضية التالية:
your-site.com/wordpress-root/docs/

أردنا الحصول على وثائقنا على freemius.com/help/documentation/ والتي يجب أن تحتل مرتبة أفضل في مُحسّنات محرّكات البحث عند البحث عن الوثائق. أردنا أيضًا الاحتفاظ بصفحة "المساعدة" لإضافة مركز مساعدة في المستقبل حتى نتمكن من استخدام هياكل عناوين URL مثل /help/faq/ لصفحة الأسئلة الشائعة و /help/forum/ لمنتدى.

يمكننا تحقيق ذلك بسهولة عن طريق تعديل قواعد إعادة الكتابة الخاصة بـ docs CPT في كود الملحق. ولكن نظرًا لأننا نريد تجنب تغيير رمز المكون الإضافي ، فقد توصلنا إلى طريقة للقيام بذلك بشكل غير مباشر في ملف functions.php الخاص بالقالب:
بالإضافة إلى ذلك ، أضفنا دعمًا لمقتطفات المقالة (نحتاج إلى ذلك للتخصيص التالي) ، ومؤلف المستندات ، والحقول المخصصة ، وسمات الصفحة. هام: تم تنظيم weDocs بشكل افتراضي لقاعدة المعرفة متعددة المنتجات. وبالتالي ، إذا كنت ترغب في الحصول على هيكل /help/documentation/ ، فتأكد من أن المستند ذو المستوى الأعلى الذي أنشأته في المكتب الخلفي يسمى التوثيق (يجب أن يكون slug عبارة عن documentation ).

إضافة صفحة رئيسية جميلة إلى قاعدة معارف weDocs

بشكل افتراضي ، يأتي weDocs برمز قصير يمكن أن يساعدك في إنشاء صفحة رئيسية ستبدو هكذا:
الصفحة الرئيسية لموقع WeDevs

هذا ليس سيئًا ، لكنني شخصياً أفضل التصميم الذي تم إنشاؤه بواسطة Help Scout Docs :
HelpScout الصفحة الرئيسية

يوفر وصفًا موجزًا ​​لكل قسم ، ويبدو أكثر جاذبية بالنسبة لي. أولاً ، لنقم بإنشاء قوالب PHP عن طريق إضافة docs-header-main.php و docs-sections.php members.php إلى مجلد /your-theme/wedocs/ . يمكنك العثور على الكود في الجوهر التالي: https://gist.github.com/vovafeldman/adbf1c071a08b7565df11d709b2f1240 إذا تعمقت في كود ملف docs-header-main.php ، فستلاحظ أنني تسللت أيضًا في البحث الغني المقتطفات الوصفية. الآن ، بما أن /help/documentation/ article هي مجرد مقالة أخرى في Knowledge Base ، فإن القالب الافتراضي الذي سيستخدمه WordPress هو /wedocs/single-docs.php . وبالتالي ، نحتاج إلى إضافة مقتطف الشفرة التالي إلى أعلى هذا الملف ، لتحميل قوالب الأقسام الجديدة عندما لا يتم تعيين أصل المقالة:

if ( empty( $post->post_parent ) ) {
  wedocs_get_template_part( 'docs', 'header-main' );
  wedocs_get_template_part( 'docs', 'sections' );

  return;
}

أقسام

جعل تطبيق weDocs متوافقًا / سريع الاستجابة

للأسف ، لا يتم تسليم weDocs بقواعد CSS سريعة الاستجابة. وإليك كيف يبدو على قاعدة معارف weDevs (مطورو weDocs):

لن أتعمق في CSS ، لكن بشكل عام ، أضفنا استعلامات وسائط:

  1. إخفاء فتات الخبز.
  2. اجعل المحتوى بعرض كامل مع حشوة لطيفة.
  3. نقل شريط التنقل الجانبي والبحث إلى أسفل ، قبل التذييل مباشرة.

ها هي النتيجة:
مستندات الجوال

وإليك ما تبدو عليه صفحة الأقسام:
أقسام صفحة الجوال

رائعة! لقد انتهينا من تخصيص weDocs.

استخدام Markdown بدلاً من HTML Rich Editing

كان أحد المتطلبات الأولية لـ KB هو الاستدامة - القدرة على تغيير التصميم بسهولة وربما النظام الأساسي (تذكر؟). استخدام تحرير محتوى HTML الغني سيف ذو حدين. من ناحية ، إنه مرن للغاية ويمنحك حرية تخصيص نمط المحتوى كما يحلو لك. من ناحية أخرى ، فإن هذا النقص في البنية يسمح لكل كاتب محتوى بفعل ما يريد. هذا ليس مستدامًا ، ويجعل تغييرات التصميم معقدة والترحيل أكثر صعوبة. على سبيل المثال ، باستخدام <strong> مقابل <b> . أو استخدام الجداول القائمة على <table> مقابل <div> . هذه قرارات متعلقة بالنحو ، ولكل شخص أسلوبه الفريد في الكتابة.

ما يجب على كتّاب المحتوى التركيز عليه حقًا هو المحتوى والدلالات وليس التصميم.

هناك الكثير من لغات الترميز مع بناء جملة تنسيق النص العادي ، على الرغم من أن Markdown كان الخيار الطبيعي لأنه يستخدم على نطاق واسع من قبل عمالقة مثل GitHub و Atlassian و WordPress نفسها.

اختيار وتثبيت البرنامج المساعد Markdown WordPress

لا يوجد سوى مكونين إضافيين من Markdown في مستودع WordPress.org يحتويان على أكثر من 1،000 تثبيت نشط. WP-Markdown و JP Markdown. نعم ، يحتوي Jetpack أيضًا على وحدة Markdown ، لكن لم يكن من المنطقي تثبيت هذا "الوحش" لوحدة واحدة فقط. في البداية ، قمت بتثبيت WP-Markdown لأنه بناءً على لقطات الشاشة ، كان لديه خيار تحديد أنواع المنشورات التي ستدعم تخفيض السعر بسهولة. لسوء الحظ ، لم يعمل المكون الإضافي (كان آخر تحديث منذ أكثر من 3 سنوات) لذلك انتهى بنا الأمر بعدم استخدامه. ثم قمت بتثبيت JP Markdown. نجح المكون الإضافي ولكن كان يحتوي على بعض الأشياء التي لم تعجبني:

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

ثم وجدت WP Markdown Editor الذي يستخدم وحدة Markdown من Jetpack ، وكان هذا هو ما انتهينا من استخدامه. على الرغم من أنه لا يزال يتعين علينا إجراء بعض التخصيصات:

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

يمكنك رؤية هذه التغييرات هنا:
https://github.com/Freemius/wp-markdown-editor/commit/706bce0c23943c82d102c67a09e18dac32c66207

يمكنك تنزيل الإصدار المتشعب من هنا (فقط بعض التغييرات الصغيرة):
https://github.com/Freemius/wp-markdown-editor

بعد ذلك ، أضفنا post قصيرة تسجل docs CPT لدعم تحرير العلامات ، وإلغاء تسجيل أنواع page والمنشورات للحفاظ على محرر HTML الغني:

أخيرًا ، كان علينا تعديل وظيفة التصدير الافتراضية لـ WordPress حتى يتم تصدير كود تخفيض السعر وليس المحتوى الغني بـ HTML. لقد فعلنا ذلك من خلال ربط the_content_export :
رائع - يتم تشغيل قاعدة المعارف الخاصة بنا عن طريق تخفيض السعر ويمكن تصديرها بسهولة.

إضافة دعم YouTube و Vimeo Markdown

تعد مقاطع الفيديو جزءًا أساسيًا من أي قاعدة معارف. للأسف ، Markdown لا يدعم مقاطع الفيديو. لحسن الحظ ، يجعل WordPress من السهل جدًا إضافة رمز قصير وبضع أسطر من التعليمات البرمجية. لقد قمنا بإثراء بنية Markdown الخاصة بنا لدعم إضافة مقاطع فيديو YouTube و Vimeo:

على سبيل المكافأة ، جعلنا حجم الفيديو مستجيبًا وصديقًا للهاتف المحمول وأصبحت إضافة مقاطع الفيديو الآن بديهية ومباشرة باستخدام معرف الفيديو:
[youtube gj6aoYG4fUI]
[vimeo 185625717]

إضافة دعم Nice Callouts Shortcodes

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

رموز WordPress المختصرة للإنقاذ مرة أخرى

وإليك كيف تبدو في الواجهة الأمامية: وسائل الشرح

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

إضافة SyntaxHighlighter لـ Pretty Code

لا يأتي WordPress ولا WP Markdown Editor مع تمييز بناء جملة التعليمات البرمجية. نظرًا لأن Freemius عبارة عن منصة للمطورين وتأتي وثائقنا مع أمثلة التعليمات البرمجية ، فإن إضافة تمييز بناء الجملة كان أمرًا بالغ الأهمية. لقد اخترنا استخدام SyntaxHighlighter Evolved نظرًا لأنه مدعوم من Automattic ، تمامًا مثل وحدة Markdown الأساسية في Jetpack التي يستخدمها المكون الإضافي WP Markdown Editor. يكشف النظر إلى كود عرض تخفيض السعر عن تكاملهما معًا:

$this->use_code_shortcode = class_exists( 'SyntaxHighlighter' );

مدهش! حق؟ لسوء الحظ ، يبدو أنه لا يوجد شيء مثالي خارج الصندوق وتم تقديم الشفرة بشكل غير صحيح. كان يعبث بأقسام الكود متعدد الأسطر Markdown عن طريق الهروب من الأحرف الخاصة إلى كيانات HTML المقابلة لها. ليس فقط لأنه كان "يكسر" الكود المعروض على الواجهة الأمامية ، بل كان يخزن نسخة HTML من أجزاء التعليمات البرمجية من Markdown في قاعدة البيانات. وهذا ضار للحفاظ على المحتوى وتصدير البيانات المحتمل. وبالتالي ، لم يكن لدينا خيار سوى إجراء بعض التعديلات على كود البرنامج المساعد. يمكنك رؤية التغييرات الدقيقة هنا:
https://github.com/Freemius/wp-markdown-editor/commit/672695be8b29c57f7fa7ca580d29368b9e57af68

الآن لدينا قاعدة معارف جميلة ومتوافقة مع الجوّال وقائمة على Markdown ، مع دعم الفيديو ووسائل الشرح وإبراز بناء جملة التعليمات البرمجية. نعم!

ما زلنا بحاجة إلى جعله سريعًا وآمنًا (هناك تقريبًا!).

كيف صنعنا قاعدة معارف WordPress الخاصة بنا بسرعة فائقة؟

اخترنا WP Super Cache لأنه شائع على نطاق واسع (أكثر من مليون تثبيت نشط) ، تم تطويره وصيانته بواسطة Automattic ، مجانًا ، وسهل الإعداد نسبيًا.

إضافة أذونات القرص

قم بإنشاء مجلد تخزين مؤقت قابل للكتابة: mkdir /path/to/your/wordpress/wp-content/cache/ setfacl -Rm user:apache:rwx /path/to/your/wordpress/wp-content/cache إذا لم يكن سطر الأذونات لا في العمل ، استخدم ما يلي: chmod 777 /path/to/your/wordpress/wp-content/cache/

تمكين التخزين المؤقت

قم بتمكين التخزين المؤقت عن طريق إضافة ما يلي إلى wp-config.php الخاص بك:

/** Enable Caching */
define('WP_CACHE', true);
define( 'WPCACHEHOME', '/path/to/your/wordpress/wp-content/plugins/wp-super-cache/' );

الآن كل ما نحتاجه هو تشغيل التخزين المؤقت ، يمكنك القيام بذلك عبر WP Admin → Settings → WP Super Cache: التخزين المؤقت لا تنس النقر فوق الزر "تحديث الحالة" للحفظ. يمكنك التحقق من أن التخزين المؤقت يعمل عن طريق فتح أي صفحة أمامية على موقع WordPress الخاص بك في وضع التصفح المتخفي ، والتحقق من شفرة المصدر. عندما يعمل WP Super Cache ، يجب أن ترى تعليق HTML التالي في أسفل كود مصدر الصفحة:

<!-- Dynamic page generated in 0.848 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2016-10-13 21:35:40 -->

<!-- super cache -->

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

تكوين التخزين المؤقت على مستوى الخادم

إذا كنت تستخدم Nginx ، مثلنا ، فإليك التكوين الذي استخدمناه: قواعد تكوين WP Super Cache Nginx TIP: تتضمن قواعد تكوين Nginx مجموعة من قواعد if . لتوفير وقتك الثمين ، تأكد من if جميع القواعد خارج توجيه location ، وإلا فسوف تكسر المعالجة بالكامل (لقد أهدرت بضع ساعات في اكتشاف ذلك). إذا كنت تستخدم Apache ، فيمكنك العثور على قواعد mod_rewrite .htaccess مباشرة في صفحة إرشادات تثبيت البرنامج المساعد على WordPress.org: https://wordpress.org/plugins/wp-super-cache/installation/ أسهل طريقة لاختبار يتم التخزين المؤقت على مستوى الخادم دون التأثير على موقعك باتباع الخطوات التالية:

  1. أنشئ منشورًا وهميًا وانشره ، واضبط slug التالي "dummy-cache-test".
  2. قم بتحميل الصفحة في وضع التصفح المتخفي ، مع التأكد من أنها مخبأة.
  3. أضف الكود التالي إلى الجزء العلوي من wp-config.php الخاص بك:
    if ( false !== strpos($_SERVER[REQUEST_URI], 'dummy-cache-test') {
        echo 'Server caching is off';
        exit;
    }
    
  4. بعد إضافة الرمز ، أعد تحميل الصفحة في نفس وضع التصفح المتخفي. إذا تم تحميل الصفحة بشكل صحيح - يتم تشغيل التخزين المؤقت على مستوى الخادم. إذا تلقيت الرسالة "تم إيقاف التخزين المؤقت للخادم" ، فهذا يعني أن هناك خطأ ما.

لا تنس إزالة هذه الإضافة من wp-config.php ، وكذلك حذف المنشور الوهمي عند الانتهاء. رائع - لقد قمنا بتعيين التخزين المؤقت ، يتم الآن تقديم جميع الصفحات مباشرة من ملفات HTML الثابتة المخزنة مؤقتًا ، وتخطي PHP و WordPress.

مضيفا CDN

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

تتمثل الفوائد الواضحة لـ CDN في توزيع مراكز البيانات العالمية ، والتوافر العالي ، والانخفاض الهائل في موارد الخادم ، خاصةً عندما تكون الأشياء ثابتة. سيتم تحميل الصفحات مباشرة من CDN دون "لمس" خوادمنا.

لا أستطيع التحدث بدرجة كافية عن CloudFlare. لقد استخدمنا CDN (ومزاياها الإضافية) لسنوات ، وما هو مجنون في كل ذلك - يمكنك استخدامه مجانًا! هذا صحيح - مجاني تمامًا لـ 95٪ من ميزاتها.

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

إليك بعض الإحصائيات الحقيقية من نطاق فرعي لدينا والذي يخدم الصور فقط:
احصائيات

انظر إلى هذه الأرقام - لقد وفرنا أكثر من 600 جيجابايت من النطاق الترددي لخوادمنا. إذا قمت بإعداد WordPress + WP Super Cache Plugin + Server Level Caching + CloudFlare CDN ، يمكنك على الأرجح استخدام قطرة DigitalOcean بقيمة 5 دولارات شهريًا دون أي مشاكل في القياس!

التسعير DigitalOcean

لنقم ببعض العمليات الحسابية معًا ... WordPress مجاني ، WP Super Cache مجاني ، CloudFlare CDN مجاني ... أوه - إنه 5 دولارات شهريًا فقط لـ WordPress القابل للتطوير. مجنون صحيح ؟!

كيف قمنا بتخصيص بحث KB لخدمة البيانات المخزنة مؤقتًا؟

بشكل افتراضي ، تستخدم بنية الروابط الثابتة للبحث في WordPress سلسلة استعلام s= معلمة لتمرير استعلام البحث. لسبب وجيه ، يتجاهل WP Super Cache سلاسل الاستعلام. لذلك ، كان علينا إجراء بعض التعديلات الصغيرة في بنية عناوين URL للبحث لجعلها تعمل:

يغير هذا التحديث بنية عنوان URL إلى freemius.com/help/documentation/search/{query}/ المخزنة مؤقتًا بواسطة WP Super Cache.

فقاعة! حتى نتائج البحث لدينا مخزنة مؤقتًا الآن.

كيف قمنا بتأمين قاعدة معارفنا في WordPress؟

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

يحب العديد من المطورين التحدث عن WordPress ويقولون أنه غير آمن. بناءً على الأرقام - نعم ، ربما يكونون على حق. نظرًا لأن WordPress هو النظام الأساسي الأكثر شيوعًا على الويب ، فهو أيضًا الهدف الأول للمتسللين ، والأرقام منطقية - Duh ...

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

So the first thing we would like to do is eliminate any notion of WordPress in our source code to reduce the chances of an attack.

1. WordPress adds a bunch of (mostly) unuseful metadata to the head of every page which is pretty much unique to WordPress, let's get rid of that by adding the following code to the theme's functions.php file:

2. Many WordPress plugins add HTML comments with a unique thumbprint that are easily identified. For example, Yoast SEO adds the following code:

<!-- This site is optimized with the Yoast SEO plugin v3.7.0 - https://yoast.com/wordpress/plugins/seo/ -->

That makes it easy for attackers to identify the site as WordPress.

Remember CloudFlare?

It has a checkbox to automatically minify HTML and get rid of all the HTML comments added by different plugins, themes and WordPress core:

minify

منجز!

3. Another known identifier of WordPress is the /wp-admin/ path to the login page. We installed WPS Hide Login, and configured our own “secret” path to the login page.

Assuming you set your login to your-site.com/my-secret-login/ make sure you add that path to WP Super Cache exclusion list. You can find it under WP Admin → Settings → WP Super Cache → Advanced:
hide login

Otherwise, it might mess up things when using SSL.

4. No need to mention – you and your team should be keeping your passwords strong! You can use a plugin like Force Strong Password to enforce a 'strong passwords' policy.

5. Force your login and WP Admin browsing via HTTPS to prevent password sniffing. You can achieve that by adding the following defines to the wp-config.php file:

define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);

6. One of the most popular attacks on WordPress sites is Brute force attack. Having a strong password policy helps, but can't really protect against it. Thus, we installed Google Captcha plugin that adds a simple captcha validating it's a human being:
captcha

Also, we installed Login Watchdog, a lightweight plugin that automatically bans suspicious IPs after pre configured amount of failed logins.

And if you are using CloudFlare as I recommended, it comes with a security layer against any threats, and since it's widely used, it has a “network knowledge” to protect your site from IPs that were attacking other sites powered by CloudFlare.

7. You should also secure WordPress on the server layer, preventing direct access to files like wp-login.php , hiding sensitive files, etc. Just follow this post:
https://lamosty.com/2015/04/14/securing-your-wordpress-site-running-on-nginx/

So yes – as long as there is a login page to our WordPress, it would never be secure as a pure static website. But the fact that we have turned our KB's frontend to static, hidden any evidence that we are using WordPress, added brute force protection and forced the login via HTTPS with a strong password policy, makes it very very (very) hard to hack.

I would dare to say that the only way the Knowledge Base will be hacked is if a security dojo will target our site specifically (that's rare, and I'm NOT calling anyone for a challenge).

Now you

Hopefully, this (very) elaborate article/tutorial will be useful for you when you come to make the important decision of what to go with for your knowledge base documentation solution.
No doubt, there's a lot to take into account here, and many of the decisions we made were influenced by our very specific needs & desires.

You could either copy & paste the entire process and customizations, or go deeper and customize it according to your specific needs. What's more important is to grasp the line of thought that lead the decision making and choosing & picking what's right for us. It was not easy because as I've shown – there are quite a few viable options out there, however, it did pay off, as Freemius now has an awesome Knowledge Base center, which is super customizable, lightning fast and scalable!

Hope you have a clear view how you can get started implementing and setting up your own documentation solution.

حظ سعيد!