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

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

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

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

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

WordPress بالفعل يحد من التوافق مع الإصدارات السابقة

عندما يجلب استغلال يمكن تجنبه موقع العميل الخاص بك (الذي يعمل على موضوعك) إلى ركبتيه ، من تعتقد أنهم سوف يتصلون؟ دعني أوفر لك التخمين: هل أنت ، m'kay؟ لا يهم أن كل ما يسبب المشكلة ليس خطأك ، إلى العميل ، يهمك فقط أن تكون أقرب رابط إلى المشكلة المحتملة. آخر شيء يتذكرون القيام به هو توظيفك لبناء موضوع جديد لهم.

إذا وجدت عند فحصك أن موقع العميل لا يزال يعمل على WordPress الأقدم من الإصدار الثابت الحالي ، فاخذ بضع ثوانٍ وصفي نفسك على الوجه: خد الأيسر أولاً ثم الخد الأيمن. يجب ألا يسمح لك موضوعك بعمل ذلك!

إذا كنت منتبهًا ، بدءًا من الإصدار 3.6 من WordPress ، فستبدأ في ملاحظة وظيفة عالية جدًا في وظائف theme.php للموضوع الافتراضي والتي تقيد استخدام السمة الافتراضية لإصدارات WP الأحدث من 3.6. في الواقع هي الوظيفة الثانية التي تم تحديدها في وظائف Twenty Fourteen's.php!

هذه الوظيفة تبدو كالتالي:

/*** Twenty Fourteen only works in WordPress 3.6 or later.*/if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {require get_template_directory() . '/inc/back-compat.php';}

نحن مهتمون بمحتويات ملف back-compat.php . الوظائف المحددة هناك ما نحن بعد للاستخدام مع المواضيع الخاصة بنا.

لا يوجد بلد لووردبريس القديم

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

تحديد الوظيفة

ولتحقيق ذلك ، نستخدم الدالة PHP version_compare () للتحقق من الإصدار المثبت حاليًا من WordPress مقابل أحدث إصدار متاح ، مع التأكد من أن أحدث إصدار مثبت لا يقل عن 3.6 - قم باختيارك على أي إصدار لاختباره ، 3.6 ليس توصية ، فقط مثال. هذه الوظيفة تبدو كالتالي:

if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {// do (or do not) somethingfunction butter_never_get_old() {switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );unset( $_GET['activated'] );add_action( 'admin_notices', 'butter_step_your_game_up' ); // we add some admin notices here (we haven't defined this function yet)}add_action( 'after_switch_theme', 'butter_never_get_old' );}

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

  1. للتحقق من إصدار WordPress المثبت حاليًا
  2. تأكد من أن الإصدار أحدث من الإصدار 3.6
  3. تشغيل ذات الصلة الكونية If / Else:
  4. إذا كان: تنشيط السمة.
  5. إذا لم يكن كذلك: لا تقم بتفعيل السمة. بدلا من ذلك إعادة / تنشيط السمة الافتراضية ، ولكي يكون لطيفا ، إخراج رسالة صغيرة لطيفة أن يرشد المستخدم لترقية التثبيت القديمة يبعث على السخرية. تعال ، الجد!

دفع دفعة! ترقية ذلك #٪ * *

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

function butter_step_your_game_up() {$update_message = sprintf( __( 'This theme requires WordPress version 3.6 or newer. You're currently using version %s. Please upgrade.', 'butter' ), $GLOBALS['wp_version'] );printf( '

%s

', $update_message );}

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

لذا ، يجب أن تبدو وظيفتنا كالتالي:

if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {// This function deactivates our newly activated theme if WP isn't newer than 3.6// It then re/activates the default themefunction butter_never_get_old() {switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );unset( $_GET['activated'] );add_action( 'admin_notices', 'butter_step_your_game_up' );}add_action( 'after_switch_theme', 'butter_never_get_old' );// This function, called from within the above function// outputs the relevant message that nudges the theme's user// to upgradefunction butter_step_your_game_up() {$update_message = sprintf( __( 'This theme requires WordPress version 3.6 or newer. You are currently using version %s. Please upgrade!', 'butter' ), $GLOBALS['wp_version'] );printf( '

%s

', $update_message );} }

من خلال ذلك ، تأكد من عدم تنشيط السمة على عمليات تثبيت WordPress الأقدم من الإصدار 3.6.

يبقيه نظيفة

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

إذا لم تكن قد قمت بذلك بالفعل ، فقم بإنشاء مجلد واسمه "inc" داخل دليل المظهر الخاص بك. داخل ذلك ، قم بإنشاء ملف php واسم ذلك back-compat.php . قم بنسخ محتويات الدالة التي أنشأناها ولصقها ، مع ترك الإصدار () فقط في functions.php:

if ( version_compare( $GLOBALS['wp_version'], '3.6', '<' ) ) {require get_template_directory() . '/inc/back-compat.php';}

داخل ملف /inc/back-compat.php ، الصق الوظائف التي حددناها في وقت سابق:

function butter_never_get_old() {switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );unset( $_GET['activated'] );add_action( 'admin_notices', 'butter_step_your_game_up' );}add_action( 'after_switch_theme', 'butter_never_get_old' );function butter_step_your_game_up() {$update_message = sprintf( __( 'This theme requires WordPress version 3.6 or newer. You are currently using version %s. Please upgrade!', 'butter' ), $GLOBALS['wp_version'] );printf( '

%s

', $update_message );}

استنتاج

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

والآن ، بعد أن تحرر من العقبات المستمرة التي يقدمها رمز خارج التاريخ ، يمكنك تركيز طاقاتك أينما تنتمي: على تسخير القوة الهائلة لـ WordPress.

صورة مميزة / صورة مصغرة ، الاستخدامات صورة التوافق عبر Shutterstock.