functions.php, виджет и плагин: что загружается первым?

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

Понравился вопрос? Нужен ответ? Поддержите проект
WPAsk
Ответов: 4
  1. montrealist

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

    1. goldenapples

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

  2. prosti

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

    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
    ...
    ...
    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
    

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

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

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

  3. Rarst

    Плагины загружаются прямо перед темой :

    enter image description here

    Однако неправильно думать об этом как о точке выполнения кода. В большинстве случаев все должно быть перехвачено и выполнено не раньше, чем перехват init . В соответствии с регистрацией виджетов Кодекса с помощью register_widget () необходимо подключиться к widget_init .

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

Добавить ответ

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: