Що таке "все" в isset ($ wp_filter ['all'])


10

Я новачок у WordPress. Я намагаюся зрозуміти, як він генерує XHTML-сторінки. Я думаю, що це функція do_action( 'hook-name' ), але я застряг у розумінні інструкції isset( $wp_filter['all] )під час читання функції dogery, оскільки я не розумію, яке значення цього слова all.

Це функція PHP або WordPress?

Відповіді:


9

all- це лише рядок, яку розробники WordPress вибрали, щоб поводитися інакше, ніж будь-який інший гачок. Коли ви allприєднаєтесь, ваш зворотний дзвінок запуститься для всіх інших гаків .

Я б не витрачав занадто багато часу, розглядаючи джерело do_action, просто знаю, що:

  1. add_action( 'x', 'whatever' )означатиме whateverпожежі дляdo_action( 'x' )
  2. add_action( 'all', 'whatever' )означатиме whateverпожежі для кожного do_action , незалежно від назви гака.

5

Умовно if ( isset($wp_filter['all']) ) {ви можете знайти їх у цих функціях створення гака:

  • apply_filters
  • apply_filters_ref_array
  • do_action
  • do_action_ref_array

Різниця між ними полягає в кількості надісланих аргументів. Або нам потрібно кілька аргументів, таким чином, ref_arrayабо один аргумент. Інша відмінність "дія проти фільтра" проста, дія може виконувати будь-яку функцію / дію, а ім'я фільтра, як правило, зарезервовано для функцій, які беруть рядкові дані та повертають ці дані фільтруються.

Добре, ось так ви створюєте гачки. І гачки мають імена, і ви можете ловити кілька імен функцій на одне ім’я гачка (читайте: тег).

введіть тут опис зображення

Але як тільки ви визначите всі функції, пов’язані з певними гачками, вам потрібно десь зберегти всі назви гака та пов’язані з ними імена функцій. Ось чому ми віддаємо перевагу global $wp_filterWordPress. Якщо ви виведете цю змінну, ви отримаєте щось на зразок ...

Array
(
    [pre_term_name] => Array
        (
            [10] => Array
                (
                    [sanitize_text_field] => Array
                        (
                            [function] => sanitize_text_field
                            [accepted_args] => 1
                        )

                    [wp_filter_kses] => Array
                        (
                            [function] => wp_filter_kses
                            [accepted_args] => 1
                        )

                )

            [30] => Array
                (
                    [_wp_specialchars] => Array
                        (
                            [function] => _wp_specialchars
                            [accepted_args] => 1
                        )

                )

        )

Що ж, не будемо сперечатися щодо назви цієї змінної. Особисто я б назвав це іншим, ймовірним, $wp_hooksоскільки ця назва не взята. Однак якщо ми повернемося до історії, яку ми знайдемо, вона do_actionє @since 1.2.0і apply_filtersє @since 0.71(випущена 9 червня 2003 р.). Це дає вам досить гарне пояснення, чому його називають $wp_filter. Це найбільш вірогідно, оскільки фільтри були введені першими в WordPress. Пізніше вони ввели дії.

Просто будуючи на тому, що сказано від @TheDeadMedic ...

"додавання" ("все", "що завгодно") буде означати будь-які пожежі для кожної програми запуску, незалежно від назви гака.

Я поставив питання, навіщо нам це потрібно $wp_filter['all']? Лише кілька прикладів. Інтроспекція, тести та ймовірно більше внутрішніх функцій системи у майбутніх версіях WordPress.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.