it-swarm.asia

بين وظائف. php ، الحاجيات والإضافات ، التي يجري تحميلها أولا؟

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

77
pixeline

يتم تحميل الإضافات قبل السمة مباشرة (نعم ، لقد كنت أبحث عن عذر لاستخدام هذا):

enter image description here

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

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

180
Rarst

تتمثل إحدى الطرق المثيرة للاهتمام في سرد ​​جميع الروابط إلى ملف في سلسلة من التنفيذ.

add_action( 'all', '_20161224_printer' );
function _20161224_printer( $r ){

    $line =  microtime(true)*10000 . ' ' . $r .  "\n";
    $fp = fopen( ABSPATH . 'hooks.txt', 'a+');
    fwrite($fp, $line);
    fclose($fp);

}

وستحصل على الإخراج مثل هذا:

14825992300742 pre_option_blog_charset
14825992300743 option_blog_charset
14825992300743 plugins_loaded
14825992300744 load_default_widgets
14825992300745 load_default_embeds
14825992300745 wp_audio_extensions
14825992300745 wp_audio_embed_handler
14825992300746 wp_video_extensions
14825992300746 wp_video_embed_handler
14825992300746 sanitize_comment_cookies
14825992300747 pre_option_permalink_structure
14825992300747 option_permalink_structure
14825992300748 pre_option_wp_user_roles
14825992300748 option_wp_user_roles
14825992300749 wp_roles_init
14825992300749 setup_theme
14825992300749 pre_option_template
14825992300750 option_template
14825992300750 template
14825992300750 theme_root
14825992300751 template_directory
14825992300751 pre_option_stylesheet
14825992300751 option_stylesheet
14825992300751 stylesheet
14825992300752 theme_root
14825992300752 stylesheet_directory
14825992300752 pre_option_WPLANG
14825992300753 query
14825992300754 default_option_WPLANG
14825992300755 locale
14825992300755 override_unload_textdomain
14825992300755 unload_textdomain
14825992300755 override_load_textdomain
14825992300756 load_textdomain
14825992300756 load_textdomain_mofile
14825992300756 locale
...
many many more action hooks
...
14825992302886 wp_parse_str
14825992302886 nonce_life
14825992302886 salt
14825992302886 wp_parse_str
14825992302887 esc_html
14825992302887 logout_url
14825992302887 clean_url
14825992302887 gettext
14825992302887 wp_after_admin_bar_render
14825992302888 pre_option_template
14825992302888 option_template
14825992302888 template
14825992302888 theme_root
14825992302888 template_directory
14825992302889 parent_theme_file_path
14825992302889 shutdown

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

ضع الكود أعلاه داخل البرنامج المساعد. إذا قمت بذلك من خلال السمات functions.php ، فلن تصطاد plugins_loaded. إثبات آخر واحد يتم تحميل الإضافات قبل السمة.

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

دعوت هذا ببساطة من /?p=1 أو صفحة Hello World.

إذا لم يكن لديك مكون إضافي نشط ، فيمكنك وضع هذا الرمز في مجلد mu-plugins.

قد يكون من الأفضل استخدام WP FS API ، ولكن هذه الطريقة موجزة حقًا.

13
prosti

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

أيضًا ، إليك قائمة الإجراءات التي يتم تنفيذها أثناء طلب نموذجي ، من أجل التنفيذ. يقترح # 2 و # 10 تحميل الإضافات أولاً ؛ لست متأكدا من وظائف.

3
montrealist