الأخطاء العشرة الأكثر شيوعًا التي يرتكبها مطورو WordPress

نشرت: 2022-03-11

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

يبدو المهندسون مثل الأبطال الخارقين ، لكننا ما زلنا بشرًا. تعلم منا.
سقسقة

الخطأ الشائع رقم 1: إيقاف التصحيح

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

لتمكين هذه الميزة ، ستحتاج إلى تحرير wp-config.php في الدليل الجذر لتثبيت WordPress الخاص بك. فيما يلي مقتطف من ملف نموذجي:

 // Enable debugging define('WP_DEBUG', true); // Log all errors to a text file located at /wp-content/debug.log define('WP_DEBUG_LOG', true); // Don't display error messages write them to the log file /wp-content/debug.log define('WP_DEBUG_DISPLAY', false); // Ensure all PHP errors are written to the log file and not displayed on screen @ini_set('display_errors', 0);

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

الخطأ الشائع رقم 2: إضافة البرامج النصية والأنماط باستخدام wp_head Hook

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

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

 wp_register_script( $handle, $src, $deps = array(), $ver = false, $in_footer = false ) wp_enqueue_script( $handle, $src = false, $deps = array(), $ver = false, $in_footer = false ) wp_register_style( $handle, $src, $deps = array(), $ver = false, $media = 'all' ) wp_enqueue_style( $handle, $src = false, $deps = array(), $ver = false, $media = 'all' )

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

الخطأ الشائع رقم 3: تجنب المظاهر الفرعية وتعديل ملفات WordPress الأساسية

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

لإنشاء نسق فرعي ، ضع ملف style.css في دليل فرعي لمجلد النسق الفرعي ، بالمحتوى التالي:

 /* Theme Name: Twenty Sixteen Child Theme URI: http://example.com/twenty-fifteen-child/ Description: Twenty Fifteen Child Theme Author: John Doe Author URI: http://example.com Template: twentysixteen Version: 1.0.0 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Tags: light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready Text Domain: twenty-sixteen-child */

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

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

الخطأ الشائع رقم 4: قيم التشفير الثابت

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

 // Get child theme directory uri stylesheet_directory_uri(); // Get parent theme directory get_template_directory_uri(); // Retrieves url for the current site site_url();

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

 global $wpdb; $user_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->users" );

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

الخطأ الشائع رقم 5: عدم منع فهرسة موقعك

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

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

إعدادات القراءة في WordPress

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

 Header set X-Robots-Tag "noindex, nofollow"

الخطأ الشائع رقم 6: عدم التحقق مما إذا كان البرنامج المساعد نشطًا

لماذا يجب أن أتحقق مما إذا كانت الوظيفة الإضافية موجودة إذا كان المكون الإضافي الخاص بي قيد التشغيل دائمًا؟ بالتأكيد ، 99٪ من الوقت سيكون المكون الإضافي الخاص بك نشطًا. ومع ذلك ، ماذا عن 1٪ من الوقت عندما يتم إلغاء تنشيطه لسبب ما؟ إذا حدث هذا ووقت حدوثه ، فمن المحتمل أن يعرض موقع الويب الخاص بك بعض أخطاء PHP القبيحة. لمنع هذا ، يمكننا التحقق لمعرفة ما إذا كان المكون الإضافي نشطًا قبل استدعاء وظائفه. إذا تم استدعاء وظيفة البرنامج المساعد عبر الواجهة الأمامية ، فسنحتاج إلى تضمين مكتبة plugin.php لاستدعاء الوظيفة is_plugin_active() :

 include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); if ( is_plugin_active( 'plugin-folder/plugin-main-file.php' ) ) { // Run plugin code }

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

 if( class_exists( 'WooCommerce' ) ) { // The plugin WooCommerce is turned on }

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

الخطأ الشائع السابع: تحميل الكثير من الموارد

لماذا يجب أن نكون انتقائيين في تحميل موارد البرنامج المساعد للصفحات؟ لا يوجد سبب وجيه لتحميل الأنماط والنصوص البرمجية لمكوِّن إضافي إذا لم يتم استخدام هذا المكون الإضافي على الصفحة التي انتقل إليها المستخدم. من خلال تحميل ملفات المكونات الإضافية فقط عند الضرورة ، يمكننا تقليل وقت تحميل الصفحة ، مما يؤدي إلى تحسين تجربة المستخدم النهائي. خذ ، على سبيل المثال ، موقع WooCommerce ، حيث نريد فقط تحميل المكون الإضافي على صفحات التسوق الخاصة بنا. في مثل هذه الحالة ، يمكننا بشكل انتقائي إزالة أي ملفات من التحميل على جميع صفحات المواقع الأخرى لتقليل الانتفاخ. يمكننا إضافة الكود التالي إلى ملف theme أو ملف functions.php للمكوّن الإضافي:

 function load_woo_scripts_styles(){ if( function_exists( 'is_woocommerce' ) ){ // Only load styles/scripts on Woocommerce pages if(! is_woocommerce() && ! is_cart() && ! is_checkout() ) { // Dequeue scripts. wp_dequeue_script('woocommerce'); wp_dequeue_script('wc-add-to-cart'); wp_dequeue_script('wc-cart-fragments'); // Dequeue styles. wp_dequeue_style('woocommerce-general'); wp_dequeue_style('woocommerce-layout'); wp_dequeue_style('woocommerce-smallscreen'); } } } add_action( 'wp_enqueue_scripts', 'load_woo_scripts_styles');

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

الخطأ الشائع رقم 8: الحفاظ على شريط المسؤول

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

 add_action('after_setup_theme', 'remove_admin_bar'); function remove_admin_bar() { if (!current_user_can('administrator') && !is_admin()) { show_admin_bar(false); } }

الكود أعلاه ، عند نسخه في ملف functions.php الخاص بالقالب الخاص بك ، سيعرض فقط شريط المسؤول لمسؤولي الموقع. يمكنك إضافة أي من أدوار أو إمكانيات مستخدم WordPress إلى وظيفة current_user_can($capability) لاستبعاد المستخدمين من رؤية شريط المسؤول.

الخطأ الشائع رقم 9: عدم استخدام عامل تصفية GetText

يمكنني استخدام CSS أو JavaScript لتغيير تسمية الزر ، فما الخطأ في ذلك؟ حسنًا ، نعم ، يمكنك ذلك. ومع ذلك ، فأنت تضيف رمزًا غير ضروري ووقتًا إضافيًا لعرض الزر ، عندما يمكنك بدلاً من ذلك استخدام أحد أكثر المرشحات سهولة في WordPress ، والذي يُسمى gettext . بالاقتران مع نطاق نص المكون textdomain ، وهو معرف فريد يضمن أن WordPress يمكنه التمييز بين جميع الترجمات المحملة ، يمكننا استخدام مرشح gettext لتعديل النص قبل عرض الصفحة. إذا بحثت في الكود المصدري عن الوظيفة load_plugin_textdomain($domain) ، فسيمنحك اسم المجال الذي نحتاجه لتجاوز النص المعني. سيضمن أي مكون إضافي حسن السمعة تعيين نطاق textdomain الإضافي عند تهيئة المكون الإضافي. إذا كان هناك نص في سمة تريد تغييرها ، فابحث عن load_theme_textdomain($domain) . باستخدام WooCommerce مرة أخرى كمثال ، يمكننا تغيير النص الذي يظهر لعنوان "المنتجات ذات الصلة". أدخل الكود التالي في ملف functions.php الخاص بالسمة:

 function translate_string( $translated_text, $untranslated_text, $domain ) { if ( $translated_text == 'Related Products') { $translated_text = __( 'Other Great Products', 'woocommerce' ); } return $translated_text; } add_filter( 'gettext', 'translate_string', 15, 3 );

يتم تطبيق خطاف المرشح هذا على النص المترجم من خلال وظائف التدويل __() و _e() ، textdomain تم تعيين نطاق النص عبر الوظائف المذكورة أعلاه.

 _e( 'Related Products', 'woocommerce' );

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

الخطأ الشائع رقم 10: الحفاظ على الروابط الثابتة الافتراضية

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

إعدادات الووردبريس للرابط الثابت

خاتمة

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

الموضوعات ذات الصلة: أسوأ خمسة أخطاء في تطوير WordPress