Как устроен Wordpress?

Тема в разделе "Мегафлуд", создана пользователем Горбушка, 5 июл 2015.

  1. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.116
    Симпатии:
    2.130
    Нет, конечно вопрос не "как поставит WP?" и тому подобный...

    Совершенно лень копать код, но стало дико интересно, как он устроен внутри, что у него под капотом )))

    Интересует реализация с точки зрения пхп функций фильтров и хуков... Как ВП узнаёт о вызове той или иной функции, чтобы наложить на неё фильтр или вызвать до/после неё другую? Как работает функция удаления действия (remout_action(); )?

    Собственно, если можно, на кошках...
     
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.116
    Симпатии:
    2.130
    Что? Никто не копался в коде WP?
     
  3. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.244
    Ох, там извращение

    Пока смотришь на админку вроде красиво и удобно, но когда начинаешь что-то под него разрабатывать понимаешь что код устарел лет на 7-10 и выровняли только местами...

    Как я понял работает типа такого:
    - add_filter - добавляет новый элемент в глобальный :facepalm: массив $wp_filter. Есть кучка дефолтных wordpress\wp-includes\default-filters.php ага-ага просто вызывается 100+ раз с разными параметрами :facepalm:
    - если в функции к чему-то можно применить фильтр вызывается apply_filters с тегом фильтра, которая ищет в $wp_filter подходящий тег и применяет функции через call_user_func_array()
     
    Горбушка нравится это.
  4. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.116
    Симпатии:
    2.130
    Кажись, я понял, почему оно так сильно тормозит...
    Т.е. я правильно понял, что чтобы применить фильтр к какой-либо функции, в самой функции это должно быть предусмотрено? К пользовательским аля function echoo($a) {echo$a;} такое не применимо?

    Оффтоп:
    Да, да, с меня написано... Только не 8 часов, в часов 20... А оказалось - штатное поведение... Описанное на 3-ей странице мана...
     
  5. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.244
    Точно не скажу, но по идее - да! Ибо чтобы применить фильтр надо вызвать apply_filters()
     
    Горбушка нравится это.