WordPress Essentials: The Definitive Guide To WordPress Крючки

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



wp-hooks-guide

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

Почему крючки Exist

Я думаю, что самый важный шаг в понимании крючки, чтобы понять необходимость для них.Давайте создадим версию функции WordPress, который уже существует, а затем развивать его немного использовании __1 “крючки мышление”. |

   function get_excerpt($text, $length = 150) {
      $excerpt = substr($text,$length)
      return $excerpt;
   }

Эта функция принимает два параметра: строку, а длина, на которой мы хотим сократить его.Что произойдет, если пользователь хочет 200-символа выдержку вместо 150-символа один?Они просто изменить параметр, когда они используют функцию.Нет проблем there.

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

Эти виды проблем, которые крючков решить.Давайте бросим быстрый взгляд на how.

   function get_excerpt($text, $length = 150) {

      $length = apply_filters("excerpt_length", $length);

      $excerpt = substr($text,$length)
      return $excerpt;
   }

Как вы можете видеть, длина по умолчанию отрывок еще 150, но мы также применять некоторые фильтры к нему.Фильтр позволяет написать функцию, которая изменяет значение something  —   В этом случае длина выдержки в.Имя (или метки) этого фильтра составляет excerpt_length, а если нет функции прилагается к нему, то его значение останется 150.Давайте посмотрим, как мы можем использовать это, чтобы изменить заданные по умолчанию value.

   function get_excerpt($text, $length = 150) {

      $length = apply_filters("excerpt_length");

      $excerpt = substr($text,$length)
      return $excerpt;
   }

   function modify_excerpt_length() {
      return 200;
   }

   add_filter("excerpt_length", "modify_excerpt_length");

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

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

Предположим, вы хотите, чтобы лавировать на некоторыйбольше текста, как “Читайте дальше,« до конца отрывка.Мы могли бы изменить наши оригинальные функции для работы с крюком, а затем связать функцию, что крюк, например, так:

   function get_excerpt($text, $length = 150) {

      $length = apply_filters("excerpt_length");

      $excerpt = substr($text,$length)
      return apply_filters("excerpt_content", $excerpt);
   }

   function modify_excerpt_content($excerpt) {
      return $excerpt . "Read on…";
   }
   add_filter("excerpt_content", "modify_excerpt_content");

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

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

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

Фильтры и Actions

Фильтры и действия двух типов крючков.Как вы видели в предыдущем разделе, фильтр изменяет значение что-то.Действия, а не что-то изменить, вызывает другую функцию, чтобы бежать рядом it.

Часто используемые действия крюка составляет wp_head.Давайте посмотрим, как это работает.Вы, возможно, заметили, функция в нижней части ~ Вашего сайта 14 | раздел с именем wp_head().Дайвинг в коде этой функции, вы можете увидеть, что оно содержит призыв к do_action().Это похоже на apply_filters(), это означает, что для выполнения всех функций, которые привязаны к wp_head tag.

Давайте поставим авторских тег мета в верхней части страницы каждого поста, чтобы протестировать, как это works.

   add_action("wp_head", "my_copyright_meta");

   function my_copyright_meta() {
      if(is_singular()){
         echo "";
      }
   }

Последовательность работы с Hooks

В то время как крючки лучше документированы в настоящее время, они были пренебречь немного до недавнего времени, это понятно.Вы можете найти некоторые хорошие указатели в Кодексе, но лучше всего использовать, Адам Браун крюк reference и / или посмотреть на источник code.

Допустим, вы хотите, чтобы добавить в свой блог, который уведомляет авторов при их работе опубликован.Чтобы сделать это, вам нужно будет что-то делать, когда пост опубликован.Итак, давайте попробуем найти крюк, связанные с publishing.

Можем ли мы сказать, нужно ли нам действия или фильтр?Конечно, мы можем!Когда сообщение будет опубликован, мы хотим изменить свои данные или сделать полностью самостоятельные действия?Ответ последнего, так что нам нужно действие.Пойдем действие reference на сайте Адам Браун, и поиск “. Публикация”

Первое, что вы найдете составляет app_publish_post.Звучит хорошо, давайте щелкните по нему.Страница деталей не дает нам много информации (иногда это делает), поэтому нажмите на кнопку “View крюк в источнике” рядом с вашей версии WordPress (желательно самой последней версии) в таблице.Этот веб-сайт показывает толькофрагмент файла, и, к сожалению начале документация отрезать, так что трудно сказать, если это то, что нам нужно.Нажмите на кнопку “Просмотреть полный файл в SVN”, чтобы перейти к полному файла, так что мы можем искать для нашего hook.

В файл я просмотра, крючок можно найти в _publish_post_hook() функции, which  —   в соответствии с документацией выше it  —   является “крюк, чтобы запланировать пинги и корпуса, когда сообщениеопубликовано “, так что это не совсем то, что мы need.

С некоторые дополнительные исследования в списке действий, вы сможете найти publish_post крюк, и это то, что нам нужно.Первое, что нужно сделать, это написать функцию, которая посылает электронную почту.Эта функция будет получать ID поста в качестве аргумента, так что вы можете использовать это, чтобы вытащить некоторые сведения в электронную почту.Вторая задача подключить эту функцию в действии.Посмотрите на готовый код для details.

   function authorNotification($post_id) {
      global $wpdb;
      $post = get_post($post_id);
      $author = get_userdata($post->post_author);

      $message = "
         Hi ".$author->display_name.",
         Your post, ".$post->post_title." has just been published. Well done! 
      ";
      wp_mail($author->user_email, "Your article is online", $message);
   }
   add_action('publish_post', 'authorNotification');

Обратите внимание, что функция, которую мы написали пригоден для использования в своем собственном …

Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров

Comments are closed.