vitovt
@vitovt

Как работают события и фильтры в Wordpress?

Добрый день!

Не могу вникнуть в суть фильтров в Wordpress

Копаюсь в функциях и вижу, например такое:

function wp_spaces_regexp() {
	static $spaces;

	if ( empty( $spaces ) ) {
		/**
		 * Filter the regexp for common whitespace characters.
		 *
		 * This string is substituted for the \s sequence as needed in regular
		 * expressions. For websites not written in English, different characters
		 * may represent whitespace. For websites not encoded in UTF-8, the 0xC2 0xA0
		 * sequence may not be in use.
		 *
		 * @since 4.0.0
		 *
		 * @param string $spaces Regexp pattern for matching common whitespace characters.
		 */
		$spaces = apply_filters( 'wp_spaces_regexp', '[\r\n\t ]|\xC2\xA0| ' );
	}

	return $spaces;


Т.е есть функция которая не принимает никаких параметров, а только возвращает.

Внутри функции срабатывает apply_filters который вызывает эту же функцию с каким-то параметром? Я так понимаю, фильтр навешивает на выполнение какой-то функции и добавляет действия? Но функция wp_spaces_regexp одна в всем коде Wordpress
  • Вопрос задан
  • 260 просмотров
Пригласить эксперта
Ответы на вопрос 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Вы можете из плагина / темы на этот фильтр навесить свою функцию и указать свою регулярку (в данном конкретном случае). Если WordPress в этом месте увидит вашу подключенную функцию - он будет использовать регулярку (или другой функционал) вашу, если нет - свою стандартную.

Если кратко, есть 2 вида хуков - action и filter.

Action - это действие. Грубо, это некая розетка в определенный момент выполнения кода WP. Если вы в эту розетку подключили функцию со своим функционалом, он будет выполнен в этот момент. На одну розетку можно подключить много функций, можно им задать приоритет.

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

Войдите, чтобы написать ответ

Похожие вопросы