Переопределение функций ядра

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

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

Как использовать filter в WordPress

Вы можете использовать filter не только в плагинах, но и в файле functions.php вашей темы. Основная функция фильтров в WordPress называется add_filter():

add_filter('hook_name', 'your_filter', [priority], [accepted_args]);
Параметры функции:

hook_name: (обязательный) имя хука, предоставляемого WordPress. Он будет определён, когда будет применён фильтр.
your_filter: (обязательный) функция, вызываемая вместо hook_name.
priority: (опциональный) порядок, в котором будут выполнены функции, связанные с определённым фильтром.
accepted_args: (опциональный) количество принимаемых аргументов.
Пример использования add_filter

Этот пример заменяет функцию bloginfo():

add_filter('bloginfo', 'mybloginfo', 1, 2);
add_filter('bloginfo_url', 'mybloginfo', 1, 2);

function mybloginfo($result='', $show='') {
switch ($show) {
case 'wpurl':
$result = SITE_URL;
break;
case 'template_directory':
$result = TEMPL_DIR;
break;
default:
}
return $result;
}
Удаление filters

Фильтры (filters) в WordPress можно и удалять.

Некоторые люди, постящие в блог свой программный код, возмущены тем, что WordPress делает их код нечитаемым, т.к. стандартная функция WordPress wptexturize() заменяет обычные кавычки на фигурные. Т.к. эта функция – фильтр (filter), есть возможность просто отключить её и избавиться от фигурных кавычек.


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

Источник: php-junior.ru
2013-01-03