Между функциями.php, виджетами и плагинами, которые загружаются первыми?

Клиент спрашивает, может ли викторизироваться конкретный карусельный плагин, который он использует. Это означает, что я должен создать виджет внутри функции functions.php, который вызывает функцию плагина. Это означает, что сначала нужно загрузить код плагина, чтобы функция была доступна для wordpress при загрузке файла functions.php, правильно? Будет ли это работать?

68 голосов | спросил pixeline 22 AM000000110000001731 2011, 11:50:17

3 ответа


158

Плагины загружаются прямо перед темой (да, я искал оправдания, чтобы использовать это):

введите описание изображения здесь>> </p>

<p> Однако ошибочно думать о том, как в качестве точки выполнения кода. В большинстве случаев все нужно подключить и выполнить не раньше, чем <code>init</code>. Согласно регистрации виджетов Codex с <a href= register_widget () следует подключиться к widget_init.

Из-за того, что порядок загрузки не имеет значения для этого случая, у вас будет все, загруженное виджетами времени, которое ему нужно в любом случае.

ответил Rarst 23 AM00000040000004931 2011, 04:07:49
9

Один интересный подход состоял бы в том, чтобы перечислить все привязки к файлу в последовательности выполнения.

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

    $ line = microtime (true) * 10000. ''. $ r. "\ П";
    $ 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
14825992300750 theme_root
14825992300751 template_directory
14825992300751 pre_option_stylesheet
14825992300751 option_stylesheet
14825992300751 таблица стилей
14825992300752 theme_root
14825992300752 stylesheet_directory
14825992300752 pre_option_WPLANG
14825992300753 запрос
14825992300754 default_option_WPLANG
14825992300755
14825992300755 override_unload_textdomain
14825992300755 unload_textdomain
14825992300755 override_load_textdomain
14825992300756 load_textdomain
14825992300756 load_textdomain_mofile
14825992300756
...
еще много крючков для действия
...
14825992302886 wp_parse_str
14825992302886 nonce_life
14825992302886 соль
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
14825992302888 theme_root
14825992302888 template_directory
14825992302889 parent_theme_file_path
14825992302889 остановка
  

Обратите внимание, что полный список просто не может соответствовать ограничению 30 000 символов на пост WPSO, поэтому я удалил множество крючков действия.

     

Поместите вышеуказанный код внутри плагина. Если вы сделаете это из тем functions.php, вы не поймаете plugins_loaded. Еще одно доказательство того, что плагины загружаются перед темой.

Возможных преимуществ этой проверки много, но обратите внимание, что вывод будет отличаться для разных шаблонов страниц, которые вы вызовете, или если вы находитесь в панели мониторинга.

Я просто назвал это из /? p = 1 или страницы Hello World.

Если у вас нет одного подключенного плагина, вы можете поместить этот код в папку mu-plugins.

Лучше использовать API WP FS , но этот способ очень краток.

ответил prosti 24 SatEurope/Moscow2016-12-24T20:22:46+03:00Europe/Moscow12bEurope/MoscowSat, 24 Dec 2016 20:22:46 +0300 2016, 20:22:46
3

У вас может быть виджет внутри .php-файла плагина (и иметь общую глобальную переменную, которую они могут использовать), если это то, о чем вы просите. Вот учебник с образцом кода Я споткнулся через некоторое время назад.

Кроме того, вот список действий, выполняемых в течение типичного запроса , в порядке выполнения. # 2 и # 10 предполагают, что сначала загружаются плагины; не уверен в функциях.php.

ответил montrealist 23 AM00000030000000131 2011, 03:35:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132