Как пишется и активируется функция в WordPress 1
Разработка

Как пишется и активируется функция в WordPress

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

Возможно, вы написали функцию, которая не работает, и вы разочаровались. Или, может быть, вас смущают action и filter, и вы не знаете, как заставить вашу функцию работать.

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

Итак, начнем!

Что вам нужно

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

  • Редактор кода
  • Установленная сборка WordPress
  • Заготовка вашей функции, которая может находиться в файле functions.php активной темы или в плагине.

Где размещается своя функция в WordPress?

Прежде чем начать, вам нужно подумать, куда вы собираетесь поместить код своей функции. У вас есть два варианта: файл functions.php вашей темы или плагин.

Ваш выбор будет зависеть от цели вашей функции:

  • Если это связано с дизайном и отображением контента, поместите его в свою тему. Он напрямую связан с темой и будет работать только вместе с остальными файлами темы.
  • Если он функционален (у большинства функций имеется подсказка в названии), поместите его в отдельный плагин.

Большинство начинает с файла functions.php, поскольку это проще, и только набравшись опыта в разработке, стоит переходить к созданию плагинов.

Написание вашей функции

Итак, у вас есть открытый файл (functions.php или файл плагина), и вы готовы написать свою первую функцию. Давайте разобьём её на части.

Добавление комментариев

Я знаю, о чем вы думаете: комментарии, не можем ли мы просто начать писать какой-то код? Но я всегда добавляю комментарии, прежде чем кодить свой плагин. Таким образом, я могу видеть, для чего предназначена моя функция, когда я позже возвращаюсь к ней. Иногда я годами не возвращаюсь к этому коду и, поверьте мне, я с большой вероятностью забуду, как этот код работал. И если кому-то еще нужно поработать с вашей функцией, комментарии помогут ему понять, что она делает и для чего нужна.

Моя функция будет простой — зарегистрируем парочку шрифтов Google Fonts в нашей теме. Делать это мы будем в файле functions.php, потому что это связано с отображением контента, а не с макетом. Но сначала добавим несколько комментариев:

/************************************************************************
wpmu_add_google_fonts - register google fonts
************************************************************************/

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

Как открывается функция в WordPress?

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

Далее следуют фигурные скобки, внутри которых находится код вашей темы:

function wpmu_add_google_fonts() {

}

Как заполняется функция в WordPress?

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

Вот код для моей функции Google Fonts:

wp_register_style( 'googleFonts', 'https://fonts.googleapis.com/css?family=Assistant|Oswald:300');	
wp_enqueue_style( 'googleFonts');

Вот полная функция:

/************************************************************************
wpmu_add_google_fonts - register google fonts
************************************************************************/
function wpmu_add_google_fonts {
  wp_register_style( 'googleFonts', 'https://fonts.googleapis.com/css?family=Assistant|Oswald:300');	
  wp_enqueue_style( 'googleFonts');
 }

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

Как активируется функция в WordPress?

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

  • Код функции располагается непосредственно в файле шаблона вашей темы (или в файле плагина).
  • Цепляется к хуку action.
  • Цепляется к хуку filter.

Давайте рассмотрим каждый из них.

Функция раполагается в файле шаблона темы.

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

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

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

Давайте представим, что ваша функция выводит дату:

/*****************************************************************************
wpmu_posted_on - add dates on single posts
*****************************************************************************/
function rachelmcc_posted_on() {
		
		<section class="entry-meta">
			<?php echo get_the_date(); ?>
		</section>
		
}

Теперь, чтобы добавить этот код в вашу тему, вы должны добавить его в файл шаблона в том месте, где нужно вывести результат функции:

rachelmcc_posted_on();

Как просто! Вы просто добавляете этот код в соответствующий файл шаблона в вашей теме.

Как запускается функция в WordPress с помощью хука action?

Альтернативой является использование хука action (действие). Это кусок кода, который позволяет вам запускать прикреплённую к нему функцию каждый раз, когда WordPress сталкивается с этим хуком.

Можно использовать уже имеющиеся хуки в WordPress, или же создать свои собственные.

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

add_action( 'wp_enqueue_scripts', 'wpmu_add_google_fonts' );

Готовая функция будет выглядеть следующим образом:

/************************************************************************
wpmu_add_google_fonts - register google fonts
************************************************************************/
function wpmu_add_google_fonts {
  wp_register_style( 'googleFonts', 'https://fonts.googleapis.com/css?family=Assistant|Oswald:300');	
  wp_enqueue_style( 'googleFonts');
 }

add_action( 'wp_enqueue_scripts', 'wpmu_add_google_fonts' );

Теперь давайте рассмотрим пример, где мы напишем свой хук. Вместо того, чтобы вставлять нашу функцию для вывода даты непосредственно в файл шаблона темы, используем do_action(), чтобы добавить хук action, а затем подключим к нему свою функцию.

Итак, в файл шаблона добавим такую строку:

do_action( 'wpmu_before_content' );

Затем прикрепим к ней свою функцию, и в итоге получится следующий результат:

/*****************************************************************************
wpmu_posted_on - add dates on single posts
*****************************************************************************/
function rachelmcc_posted_on() {
		
		<section class="entry-meta">
			<?php echo get_the_date(); ?>
		</section>
		
}
add_action( 'wpmu_before_content', 'rachelmcc_posted_on' );

Запускаем функцию с помощью хука filter

Другая разновидность хука — это filter (фильтр). Это, своего рода, зацепки внутри кода, через которые можно «отфильтровать» какие-либо данные. Это полезно в том случае, если необходимо переопределить передаваемое значение. WordPress предоставляет для использования базовый список фильтров с различными функциями.

Рассмотрим пример: фрагмент текста в файле шаблона.

Примечание. Я знаю, что расположение текста непосредственно в файлах шаблонов не рекомендуется. А также знаю, что делать это без локализации — тоже плохая практика. Но это простой пример, поэтому, пожалуйста, не сильно пинайте меня в комментариях.

Чтобы добавить хук filter в файл шаблона, используем функцию apply_filters() с именем фильтра в качестве первого параметра и дефолтным контентом в качестве второго:

echo apply_filters( 'wpmu_filter_hook', '<h3>Latest Posts</h3>' );

А таким образом подключим к нему функцию:

/*****************************************************************************
wpmu_heading - override title of latest posts section
*****************************************************************************/
function wpmu_heading() {
		
		<h3>Recent Posts</h3>

}

add_filter ( 'wpmu_filter_hook', 'wpmu_heading' );

Обратите внимание, что функция add_filter() очень похожа на функцию add_action(). Первый параметр — это имя хука, а второй — имя функции. Также обратите внимание, что перед функцией apply_filters() часто располагается echo, который выводит некоторый текст (в данном случае заголовок).

Использование условных тегов

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

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

Неправильно.

Чаще всего встречаются две наиболее распространенные ошибки. Первая, размещение хука action внутри условных тегов:

/*****************************************************************************
wpmu_posted_on - add dates on single posts - THIS IS INCORRECT
*****************************************************************************/
function wpmu_posted_on() {
		
		<section class="entry-meta">
			<?php echo get_the_date(); ?>
		</section>
		
}
if ( is_singular( 'post' ) ) {
  add_action ( 'wpmu_before_content', 'wpmu_posted_on' );
}

И вторая, размещение всей функции внутри условных тегов — также НЕПРАВИЛЬНО:

/*****************************************************************************
wpmu_posted_on - add dates on single posts - THIS IS INCORRECT
*****************************************************************************/
if ( is_singular( 'post' ) ) {

  function wpmu_posted_on() {
		
		<section class="entry-meta">
			<?php echo get_the_date(); ?>
		</section>
	}
}

add_action ( 'wpmu_before_content', 'wpmu_posted_on' );

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

Вот правильный способ использования условных тегов:

/*****************************************************************************
wpmu_posted_on - add dates on single posts
*****************************************************************************/
function wpmu_posted_on() {

	if ( is_singular( 'post' ) ) {?>
		
		<section class="entry-meta">
			<?php echo get_the_date(); ?>
		</section>
	
	<?php }
	
}
add_action ( 'wpmu_before_content', 'wpmu_posted_on' );

Знание того, как писать и активировать функции, поможет начать разработку WordPress

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

Источник: wpmudev.org

Вконтакте
Linkedin
Telegram
Whatsapp

Похожие статьи

Выбор хостинга WordPress в Украине


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


Как добавить в атрибут alt заголовок статьи?


При проведении SEO-аудита многие вебмастера сталкиваются с проблемой, что у изображений на сайте отсутствуют альтернативный текст (атрибут alt). Некоторые делают это неосознанно, но другие вполне сознательно игнорируют добавление этого атрибута к картинкам в постах, тем самым по сути стреляя себе в ногу, ведь изображения очень важны для SEO продвижения


У этой статьи пока нет комментариев


Добавить комментарий


Ваш адрес email не будет опубликован.

один × пять =