Хуки WordPress: основное руководство

Опубликовано: 2021-01-26

Хуки WordPress - это полезный инструмент, предназначенный для разработчиков, создающих плагины и темы WordPress. Фактически, они настолько полезны, что создатели WordPress используют их во всем ядре WordPress. Но что такое хуки WordPress и как их использовать?

В этом руководстве мы рассмотрим, как эффективно использовать хуки WordPress, и погрузимся в основы. Давайте нырнем!

В этом руководстве

    Что такое хуки в WordPress?

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

    Хуки WordPress входят в состав ядра WordPress. Каждая тема и плагин также используют их.

    Объяснение хуков WordPress

    Основная цель хуков в WordPress - позволить разработчикам коренным образом изменить работу системы управления контентом без изменения основных файлов WordPress. Поскольку WordPress является открытым исходным кодом, вы можете возиться с основными файлами, но с вероятностью 99% вы пожалеете об этом в течение нескольких минут.

    Хотя начинающим разработчикам может быть немного сложно понять, как работают хуки WordPress, абсолютно необходимо. Часто путаница возникает из-за терминологии, которую использует WordPress. Хотя закулисные действия очень похожи на действия многих языков программирования, словоблудие другое. Часто проще всего научиться создавать и использовать их, сначала следуя примерам, читая о них, а затем практикуясь.

    Чтобы писать хуки WordPress, вам нужно уметь кодировать на PHP. PHP является основным языком для подавляющего большинства WordPress. Вы можете думать о крючках как о отверстиях, за которые могут зацепиться другие функции PHP. Вы также можете думать о хуках WordPress как о обратных вызовах, которые что-то делают с данными или отображением до того, как пользователь увидит данные.

    Хуки WordPress

    Два типа хуков WordPress

    Вам необходимо изучить два основных типа хуков WordPress:

    • Хуки действий WordPress
    • Хуки фильтров WordPress

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

    Разница между хуками действий WordPress и хуками фильтров

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

    Самый простой способ различить два типа хуков WordPress - это то, что хуки действий не возвращают значения, а хуки фильтров возвращают значения.

    Для тех, кто знаком с распространенными языками программирования, это все равно, что сказать, что хуки действий имеют тип возврата «void», тогда как хуки фильтров возвращают фактические данные.

    Перехватчики фильтров можно рассматривать как перехватчики предварительной обработки или события. Ловушка фильтра может отфильтровать результаты, возвращаемые запросом к базе данных, так, чтобы они содержали только записи с фамилией «Смит». Этот перехватчик фильтра должен вызываться перед вызовом фактического запроса к базе данных, заранее сообщая WordPress, что ему нужно будет удалить нерелевантные результаты перед их возвратом.

    Хуки WordPress ction можно рассматривать как получение чего-либо с помощью кода. Типичный пример перехвата действия - вставка дополнительного файла CSS на страницу сайта, чтобы он выглядел по-другому. Помните, что хуки меняют способ отображения данных еще до того, как они будут доставлены пользователю. Перехватчик действия предоставляет новый файл CSS, который улучшает взаимодействие с пользователем. Этот процесс не требует редактирования ядра WordPress и не требует редактирования корневого веб-сайта. Таким образом, хуки WordPress могут значительно упростить, в сочетании с плагинами, управление несколькими сайтами WordPress.

    Объяснение хуков и фильтров

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

    Вы можете думать о ловушке WordPress как о событии, которое происходит с именем. Пример того, что содержится в ядре WordPress, называется save_post . С помощью хуков мы, по сути, говорим, что при выполнении save_post мы хотим, чтобы наш хук или фильтр прикреплялся и работал вместе с ним.

    Мы прикрепляем так называемые обратные вызовы или функции обратного вызова к хукам в WordPress. Это просто причудливый способ сказать, что мы просим WordPress запустить код, содержащийся в функциях, которые мы создали, при срабатывании события, которое мы «подключили» (например, save_post в нашем примере выше).

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

    Хотите узнать больше технических подробностей о том, как работают крючки? Загляните в следующий раздел! У нас есть более подробное объяснение, а также руководство по созданию вашего первого крючка действия и вашего первого крючка фильтра!

    Как работают хуки в WordPress?

    Помните, что, хотя есть несколько различий, хуки действий и хуки фильтров в WordPress можно рассматривать как в основном одинаковые. Кратко рассмотрим, как работают эти хуки. Позже в статье мы рассмотрим пример и учебное пособие.

    Оба типа хуков необходимо зарегистрировать в WordPress перед их использованием. Это дает CMS список функций, которые необходимо присоединить при запуске события, к которому мы «подключили» наш код. Также убедитесь, что действия зарегистрированы как действия, а фильтры зарегистрированы как фильтры.

    При добавлении действия воспользуйтесь основной функцией WordPress add_action () . При добавлении фильтров используйте соответствующую функцию ядра WordPress под названием add_filter () . Если ваши обратные вызовы (функции по цепочке при запуске вашего события или действия) не возвращают никаких данных, вам необходимо зарегистрировать их как действие. Если он возвращает то, что WordPress называет фильтруемыми данными, зарегистрируйте его как фильтр.

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

    Как и наши функции добавления, они называются remove_action () и remove_filter () .

    Как создать крючок в WordPress?

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

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

    Получите бонусный контент: Руководство по безопасности WordPress
    Кликните сюда

    Давайте посмотрим, как мы можем сделать очень простой перехватчик действий в WordPress. Затем мы рассмотрим пример перехватчика фильтра в CMS.

    Как создать перехватчик действий в WordPress?

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

    Например, если вы управляете сайтом WordPress для академического учреждения, они могут попросить вас напомнить учащимся, что им нужно использовать адрес электронной почты кампуса для входа на портал WordPress. Мы могли бы добавить простое напоминание под полями «Имя пользователя» и «Пароль» с надписью «Не забудьте использовать свой адрес электронной почты @ myuniversity.edu в качестве имени пользователя », чтобы сократить количество обращений в ИТ-отдел с просьбой о помощи при входе в систему.

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

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

     do_action ('логин_футер');

    Функция do_action - это основная функция WordPress, которая выполняет наш хук действия по запросу. Конечно, это при условии, что мы зарегистрировали все функции, которые хотим присоединить к этому хуку.

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

    Для начала мы можем добавить новую функцию PHP в наш wp-login.php. Все, что нам нужно сделать, это вывести строку текста, например:

     function add_uni_email_reminder () {
    
    <p> Не забудьте использовать свой адрес электронной почты @ myuniversity.edu в качестве имени пользователя! </ p>
    
    }
    
    do_action ('login_footer', 'add_uni_email_reminder');

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

    Как создать перехватчик фильтра в WordPress?

    Теперь мы в ударе! Мы узнали основы хуков WordPress и узнали, как использовать их возможности. Мы даже сами внесли небольшую модификацию! Осталось потренироваться с крючками для фильтров. Помните, что это перехватчики, которые возвращают данные определенного типа, которые мы можем фильтровать. Это немного сложнее, чем хуки действий, но теперь, когда вы понимаете основы хуков, это должно быть немного проще.

    Давайте начнем с нашего хука фильтра WordPress. Во-первых, нам нужно решить, какой конкретный фильтр мы хотим добавить. Один из элементов, который может запросить ваш клиент, - это настроить функцию добавления страницы. Здесь пользователи WordPress могут добавлять новые сообщения в блог. Чтобы не усложнять задачу, предположим, что мы хотим отредактировать текст «Введите заголовок здесь», содержащийся в текстовом поле «Заголовок». Допустим, мы хотим сделать его более конкретным и вместо этого указать «Введите заголовок сообщения в блоге».

    Обратите внимание, что в нашем примере ловушки фильтра ниже у нашей функции есть параметр. Кроме того, фактическое выполнение нашего фильтра имеет дополнительный параметр «приоритет». Вы также заметите, что фактическая функция, которую мы используем для регистрации нашего хука, точно такая же, как в нашем примере «действия», add_action . То, как мы можем сказать, что эта функция является ловушкой фильтра, а не обработчиком действия, заключается в том, что, когда она действительно выполняется, функция, выполняемая, как мы видим в основном коде WordPress, - это apply_filters ('enter_title_here', __ ('Enter title here' ), $ post); . Мы применяем фильтры, о чем настоятельно свидетельствует название функции.

    Это часто сбивает с толку новых пользователей. Это действительно небольшая проблема с формулировками; как только вы справитесь с этим, расшифровать разницу между хуками и фильтрами в WordPress станет довольно просто! Без лишних слов, давайте погрузимся в изменение текста-заполнителя!

     function our_new_title_here ($ title) {
    
    $ title = __ ('Введите заголовок сообщения в блоге', 'текстовый домен');
    
    вернуть $ title;
    
    }
    
    add_action ('enter_title_here', 'our_new_title_here', 10);

    Вам может быть интересно, что означает эта цифра «10» в нашей функции add_action . Надеюсь, вы понимаете первые два параметра; первый - это обработчик WordPress по умолчанию, а второй - имя функции и фильтра, которые мы прикрепляем к enter_title_here . «10» - это уровень приоритета, который мы назначаем этому фильтру.

    Помните, что и действия, и фильтры в WordPress представляют собой серию запускаемых каскадных «обратных вызовов» или настраиваемых функций. Им присваиваются разные уровни приоритета. Чуть позже мы рассмотрим, что означают разные числа, каковы допустимые параметры и т. Д. Однако важно понимать, что на данный момент 10 - это «нормальный» уровень приоритета WordPress по умолчанию для фильтров и действий.

    Где хранятся хуки WordPress?

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

    Одна из самых уникальных особенностей действий и фильтров в WordPress заключается в том, что они на самом деле нигде не «хранятся»! После того, как мы добавили действие или фильтр, к этому действию или фильтру можно будет получить доступ глобально через наш сайт WordPress. Если вы думаете, что это невозможно нигде хранить, вы правы!

    Хотя структура довольно сложна, есть одна переменная PHP, в которой хранятся все наши действия и фильтры. Эта переменная глобальная и называется $ wp_filter . Не связывайтесь напрямую с этой переменной!

    Для тех, кто интересуется техническими деталями, эта переменная $ wp_filter представляет собой массив PHP. Он содержит большую серию объектов типа WP_HOOK . В файле PHP, который вы можете прочитать в wp-includes / class-wp-hook.php , есть один важный метод: this-> apply_filters () . Этот метод запускает все наши обратные вызовы и «регистрирует» наши настраиваемые фильтры и перехватчики. По сути, это хлеб с маслом для хуков WordPress.

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

    Список хуков WordPress: Шпаргалка по хукам WordPress

    Давайте начнем с небольшой доли реализма: мы не сможем перебрать все до единой ловушки в WordPress. К счастью, некоторые исследователи составили список (буквально) каждого действия и фильтра для тех, кому интересно. Вы можете увидеть полный список всех хуков WordPress здесь, но будьте осторожны, чтобы увидеть предупреждения безопасности относительно каждого хука. Вы не должны использовать те, которые помечены как «устаревшие». Это означает, что они могут поддерживаться или не поддерживаться в самой современной версии WordPress, но в любом случае они скоро не будут поддерживаться.

    Скорее всего, в 90% случаев вас будут интересовать только несколько хуков WordPress. Вот пять самых популярных действий и фильтров в WordPress, а также краткое объяснение того, что они из себя представляют!

    1. add_setting () - Как следует из названия, это действие добавляет в ваши настройки WordPress. Вероятно, вы не захотите включать это действие на какую-либо страницу, доступную пользователю, но это может быть спасением, если вы изменяете административные страницы.
    2. apply_filters () - Вам знакомо это? Должен, потому что мы использовали это раньше! Это немедленно вызывает всю нашу цепочку обратных вызовов, связанных с ловушкой.
    3. esc_attr () - его название является сокращением от «escape-атрибутов HTML». Экранирование HTML означает, что мы используем коды ASCII для символов HTML. Это почти повсеместно используется для «очистки ввода» на страницах. Другими словами, это действие было бы очень желательно присоединить к запуску ловушки, когда пользователь отправляет форму. Это предотвращает атаки пользователей на ваш сайт, в частности, с помощью межсайтовых сценариев.
    4. the_content () - название этого хука, вероятно, звучит просто, потому что это так! Он просто захватывает содержимое просматриваемой в данный момент публикации. Это идеально, если вы разрешаете пользователям экспортировать содержимое сообщения. Например, некоторые сайты предлагают пользователям Premium возможность экспортировать любую статью в виде файла PDF.
    5. wp_nav_menu () - Сокращение от «Меню навигации WordPress», этот хук является хуком действия. Он используется для простого отображения главного меню навигации, которое вы создаете, когда впервые создаете свой сайт WordPress. Это замечательно, если у вас есть страницы с совершенно другим макетом и вы хотите отображать меню в альтернативной области.

    В каком порядке запускаются хуки WordPress? Последовательность срабатывания хуков WordPress

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

    Как будто это было недостаточно сложно, к некоторым хукам WordPress прикреплены крючки с различным приоритетом! Вы можете взглянуть на сотни запущенных хуков и их порядки в этом посте о последовательности срабатывания хуков WordPress. Просто обратите внимание: вы не должны пытаться запускать этот анализ на чем-либо, кроме тестового сервера, где вы можете позволить себе потерять все!

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

    Как работает приоритет в хуках WordPress?

    Как мы уже упоминали, уровень приоритета по умолчанию, присвоенный ловушке WordPress, равен «10». Что бы вы ни решили сделать приоритетом, помните, что значение должно быть положительным целым числом. Это означает, что, к сожалению, «0» недопустимое значение. Кроме того, значение -100 недопустимо, а значение 0,5 - недопустимо. Однако 1 будет работать, как и 1111.

    Как правило, чем меньше целое число, тем ниже приоритет. Если вы хотите, чтобы ловушка запускалась после ловушки, которой вы присвоили значение по умолчанию, например, 10, вы можете сделать ее приоритет 9. Ловке с самым низким приоритетом можно присвоить 1. Кроме того, хукам WordPress можно назначить то же самое. приоритет. Это если вам все равно, в каком порядке они работают.

    Подведение итогов: хуки в WordPress

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

    Лучший способ - начать экспериментировать с хуками действий и фильтрами WordPress на вашем сайте. После того, как вы сделаете более сложные хуки WordPress, вам нужно будет изучить те хуки, которые вы обычно используете чаще. Со временем вы запомните эти крючки. Это трудный процесс, и никто не в состоянии запомнить все эти зацепки.

    Кодекс WordPress - это единственный лучший ресурс, который можно использовать на пути к тому, чтобы стать следующим ведущим разработчиком WordPress в мире.

    Хуки WordPress