كيفية جعل WordPress صعبًا على العملاء للتلاعب

نشرت: 2022-03-10
ملخص سريع ↬ WordPress هو نظام إدارة محتوى قوي بشكل رائع يأتي مع العديد من الميزات المتنوعة التي تمنحه المرونة للعمل خارج الصندوق لمجموعة واسعة من المستخدمين. ومع ذلك ، إذا كنت محترفًا في إنشاء سمات ومكونات إضافية مخصصة ، فقد تكون هذه الميزات مشكلة في بعض الأحيان. يمكن أحيانًا استخدام نفس الميزات والخيارات التي تسمح للموضوعات الجاهزة للتكيف مع العديد من حالات الاستخدام المختلفة لتقويض سمة مخصصة مصممة بعناية تم إنشاؤها لحالة استخدام معينة.

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

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

مزيد من القراءة على SmashingMag:

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

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

المزيد بعد القفز! أكمل القراءة أدناه ↓

تعطيل الملحقات ومحرر السمات

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

 define( 'DISALLOW_FILE_EDIT', true );

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

محرر الإضافات وورد
محرر الإضافات وورد. (عرض النسخة الكبيرة)

الحد من محرر النصوص المرئي

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

صفحة الطباعة القبيحة
صفحة الطباعة القبيحة. (عرض النسخة الكبيرة)

تعطيل المحرر المرئي

أضف المقتطف التالي إلى ملف jobs.php الخاص بالسمة وستختفي علامة التبويب الخاصة بتبديل محرر WYSIWYG.

 function emersonthis_disable_visual_editor(){ # add logic here if you want to permit it selectively return false; } add_filter('user_can_richedit' , 'emersonthis_disable_visual_editor', 50);

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

علامة تبويب المحرر المرئي
علامة تبويب المحرر المرئي. (عرض النسخة الكبيرة)

إزالة علامات Quicktags الغامقة والمائلة من محرر النصوص

يحتوي محرر النصوص على أزرار Quicktag ستلتف النص المحدد بعلامات <strong> و <em> . أضف الكود التالي في ملف jobs.php الخاص بالقالب الخاص بك ولن يكون لدى المؤلفين أزرار غامقة أو مائلة بعد الآن.

 # Removes bold and italic quicktags from text editor function emersothis_quicktags_settings( $qtInit ) { //To disable ALL butons it must be set to "," (not "") $qtInit['buttons'] = 'more,'; return $qtInit; } add_filter('quicktags_settings', 'emersonthis_quicktags_settings');

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

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

تعطيل الأزرار في المحرر المرئي

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

تعد واجهة برمجة تطبيقات WordPress لتعديل محرر TinyMCE صعبة بعض الشيء لأنك تحتاج إلى البحث عن أسماء الرموز المستخدمة للإشارة إلى كل زر تريد إزالته. يمكنك الحصول على أكبر قدر من الفائدة من خلال إزالة زر "حوض المطبخ" الذي يبدل الصف الثاني بأكمله الذي يحتوي على أزرار التنسيق الأكثر إشكالية. ستؤدي إضافة الكود التالي إلى ملف jobs.php الخاص بالسمة إلى القيام بذلك.

 # Remove visual editor buttons function emersonthis_tinymce_buttons($buttons) { # Remove the text color selector $remove = array('wp_adv'); //Add other button names to this array # Find the array key and then unset return array_diff($buttons,$remove); } add_filter( 'mce_buttons', 'emersonthis_tinymce_buttons' );

إحدى الحيل لمعرفة الاسم الرمزي للزر الذي تريد إزالته هي فحص ترميز النموذج. في وقت كتابة هذا التقرير ، يحتوي كل زر على اسم فئة يبدأ بـ mce-i- متبوعًا بالاسم الرمزي الذي ستضعه في المصفوفة أعلاه.

قم بإزالة زر "إضافة وسائط"

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

وظيفة مدونة مليئة بالصور القبيحة
وظيفة مدونة مليئة بالصور القبيحة. (عرض النسخة الكبيرة)

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

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

 # Remove media buttons function emersonthis_remove_add_media(){ # do this conditionally if you want to be more selective remove_action( 'media_buttons', 'media_buttons' ); } add_action('admin_head', 'emersonthis_remove_add_media');

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

تعطيل خيارات مخصص الموضوع

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

 # Remove customizer options. function emersonthis_remove_customizer_options( $wp_customize ) { // $wp_customize->remove_section( 'static_front_page' ); // $wp_customize->remove_section( 'title_tagline' ); $wp_customize->remove_section( 'colors' ); $wp_customize->remove_section( 'header_image' ); $wp_customize->remove_section( 'background_image' ); // $wp_customize->remove_section( 'nav' ); // $wp_customize->remove_section( 'themes' ); // $wp_customize->remove_section( 'featured_content' ); // $wp_customize->remove_panel( 'widgets' ); } add_action( 'customize_register', 'emersonthis_remove_customizer_options', 30);

يتوافق كل سطر في المقتطف أعلاه مع خيار تخصيص سمة فردي يمكنك تعطيله عن طريق إلغاء التعليق عليه.

إخفاء عناصر قائمة لوحة المعلومات غير المستخدمة

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

 function emersonthis_custom_menu_page_removing() { // remove_menu_page( 'index.php' ); //Dashboard // remove_menu_page( 'jetpack' ); //Jetpack* remove_menu_page( 'edit.php' ); //Posts remove_menu_page( 'upload.php' ); //Media // remove_menu_page( 'edit.php?post_type=page' ); //Pages remove_menu_page( 'edit-comments.php' ); //Comments // remove_menu_page( 'themes.php' ); //Appearance // remove_menu_page( 'plugins.php' ); //Plugins // remove_menu_page( 'users.php' ); //Users // remove_menu_page( 'tools.php' ); //Tools // remove_menu_page( 'options-general.php' ); //Settings } add_action( 'admin_menu', 'emersonthis_custom_menu_page_removing' );

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

تظهر قائمة المنشورات افتراضيًا سواء كان الموقع يحتوي على مدونة أم لا
يظهر عنصر قائمة المنشورات افتراضيًا سواء كان الموقع يحتوي على مدونة أم لا. (عرض النسخة الكبيرة)
06-المشاركات-القائمة-المخفية-المعاينة-opt
لوحة تحكم WordPress بدون عنصر قائمة المنشورات. (عرض النسخة الكبيرة)

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

 global $wp_roles; // global class $role = 'author'; $cap = 'delete_published_posts'; $wp_roles->remove_cap( $role, $cap );

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

أضف تلميحًا حول كيفية عمل فواصل الأسطر في المحرر

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

منشور مدونة به مساحة بيضاء إضافية قبيحة
منشور مدونة به مساحة بيضاء إضافية قبيحة. (عرض النسخة الكبيرة)

أضف المقتطف التالي إلى ملف jobs.php الخاص بك. غيّر قيمة $tip لتقول ما تريد تذكير مؤلفيك به.

 # Adds instruction text after the post title input function emersonthis_edit_form_after_title() { $tip = '<strong>TIP:</strong> To create a single line break use SHIFT+RETURN. By default, RETURN creates a new paragraph.'; echo '<p>'.$tip.'</p>'; } add_action( 'edit_form_after_title', 'emersonthis_edit_form_after_title' );

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

صفحة المنشورات مع طرف المسافة البيضاء المضافة
تمت إضافة صفحة المنشورات مع تلميح مسافة بيضاء. (عرض النسخة الكبيرة)

لا توزع حسابات المسؤول

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

قائمة المستخدمين مليئة بالمسؤولين
قائمة المستخدمين مليئة بالمسؤولين. (عرض النسخة الكبيرة)

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

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

استخدام الإضافات مو

يوجد دليل mu-plugins / منذ فترة طويلة ، لكن معظم قراصنة WordPress الذين قابلتهم لم يسمعوا به من قبل. يجب استخدام "mu" لتقف على. الدليل هو موقع بديل حيث يمكن تثبيت المكونات الإضافية.

يجب استخدام واجهة المكونات الإضافية في لوحة معلومات Wordpress
يجب استخدام واجهة المكونات الإضافية في لوحة معلومات WordPress. (عرض النسخة الكبيرة)

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

مجلد mu-plugins / غير موجود خارج الصندوق. يمكنك إنشاؤه يدويًا داخل ملف wp-content / .

 wp-content/ mu-plugins/ plugins/ themes/ ...

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

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

ملاحظة أخيرة

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

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