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

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

اليوم سوف نستخدم مثالا من وورد البرنامج المساعد لتغطية الوظيفتين الرئيسيتين اللتين تمنحان حالة القابلية للتوسعة للمكوِّن الإضافي وهما: application_filters () و do_action ().

الامتدادات: ملحقات لالإضافات

لذلك من الواضح أنه عندما نتحدث عن "الامتدادات" ، فإننا نشير إلى المكونات الإضافية التي تم إنشاؤها للآخرين. لنأخذ مثالاً: " شريط لWooCommerce ".

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

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

كيف تعمل الدالتان: application_filters () و do_action ()؟

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

إنها فوضى يجب التفكير فيها ، ولكن لحسن الحظ WooCommerce تقوم بعمل أفضل كثيرًا. يجعل استخدام وظيفتين: application_filters () و do_action (). تسمح لك هاتان الوظيفتان بإنشاء أقواس على WordPress ، وهذا جزء أساسي من نظام WordPress Hooks بشكل عام.

Apply_filters () و do_action () فرق بسيط إلى حد ما:

  • application_filters () يسمح لك بتوصيل المرشحات بالوظائف.
  • تتيح لك do_action () توصيل الإجراءات بالوظائف.

دعونا ننظر إلى مثال لنرى كيف تعمل.

مثال على استخدام السنانير WooPress.

على سبيل المثال ، سنستخدم المكون الإضافي "Quote of the Day" بالإضافة إلى ملحق يعدل هذا المكون الإضافي بطريقة معينة. لمتابعة الشفرة الكاملة ورؤيتها ، قم بتنزيل الملحقات كملف ZIP https://wpshout.com/media/2016/10/plugins.zip.

البرنامج المساعد الأصلي

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

ملحق البرنامج المساعد

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

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

إليك المكوِّن الإضافي والملحق قيد التشغيل:

الاقتباس في للعمل

الرمز

لكي يحدث هذا ، هناك خطوتان ضروريتان:

يحدد المكون الإضافي الأصلي الخطافات - خطافات الحركة وخطافات المرشح - مما يسمح للكود الخارجي بتعديل أو إضافة الكود الخاص به في النقاط الرئيسية. يستخدم البرنامج المساعد application_filters () و do_action () لتحقيق ذلك.

يحدد الامتداد وظائف الخطاف في الإجراء والمرشحات - التي تعدل المكون الإضافي الأصلي بطريقة ضرورية.

رمز المفتاح في البرنامج المساعد الأصلي

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

add_shortcode ('extensible_plugin_demo'، 'bpc_output_extensible_plugin') ؛ الوظيفة bpc_output_extensible_plugin () {ob_start () ؛ // هوك قبل العرض! do_action ('bpc_before_get_qod_text') ؛ qod_data $ = bpc_get_qod_data () ؛ إذا (is_array ($ qod_data)) {echo ' "؛ $ qod_text = $ qod_data ['text']؛ $ qod_author = $ qod_data ['مؤلف']؛ // تصفية المحتوى! qod_text = apply_filters ('bpc_qod_text'، $ qod_text)؛ $ qod_author = application_filters ('bpc_qod_author'، $ qod_author)؛ صدى $ qod_text؛ صدى صوت ' "؛ صدى $ qod_author؛ صدى صوت ' "؛ } // خطاف الإجراء بعد بقية الإخراج! do_action ('bpc_after_get_qod_text') ؛ إرجاع ob_get_clean () ، }

رمز المفتاح في التمديد

لا يتكون المكون الإضافي من أي شيء بخلاف الإجراءات والمرشحات لتعديل المكون الإضافي الأصلي. ها هو كود الامتداد:

add_filter( 'bpc_qod_text', 'bpc_filter_qod_text' );
// Filter: remplacer des mots spécifique
function bpc_filter_qod_text( $text ) {
    $text = str_replace( 
        array( ' I ', ' me ', ' the ', ' is ', ' am ', ' are ' ),
        array( ' I, a descendent of savannah-dwelling hominids that somehow evolved an astounding capacity for self-reflection, ', ' the cooled-off stellar matter I call "me" ', ' the trillions of atoms that make up the ', ' seems, without the mind-boggling perspective of quantum physics, to be ', ' cannot, due to the Heisenberg Uncertainty Principle, be determined not to be ', ' appear to our best scientific instruments to be ' ),
        $text
    );
    return $text;
}

// Filter: barré le texte qui précède le nom de l'auteur et ajouter Carl Sagan à la suite
add_filter( 'bpc_qod_author', 'wpshout_filter_qod_author' );
function wpshout_filter_qod_author( $text ) {
    $text = '<strike>' . $text . '</strike> Carl Sagan';
    return $text;
}

// Action: Ajouter un titre
add_action( 'bpc_before_get_qod_text', 'bpc_set_up_quote' );
function wpshout_set_up_quote() {
    echo '<h4>Carl Sagan Quote of the Day for ' . date( 'F j, Y') . ':</h4>';
}

// Action: Ajouter une image
add_action( 'bpc_after_get_qod_text', 'bpc_add_carl_boom' );
function bpc_add_carl_boom() {

    echo '<div><img class="aligncenter" src="' . plugin_dir_url( __FILE__ ) . 'carl_sagan_mind_blown.gif"></div>';
}

كما ترون ، هذه استخدامات معيارية تمامًا لـ " add_action () "و" add_filter () "ويتم ربط كلتا الوظيفتين بأقواس مربعة أطلقنا عليها اسم" bpc_qod_text ".

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

هذه خدعة تجعل المكون الإضافي مثل WooCommerce شائعًا للغاية ، مما يتيح لك إضافة ميزات جديدة.

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