Как использовать функцию wordpress has_filter с обратным вызовом на основе объекта - PullRequest
0 голосов
/ 06 октября 2009

У меня есть несколько плагинов, каждый из которых основан на использовании объектов для хранения плагина.

В одном классе плагинов с именем "test_plugin" у меня есть:

apply_filter('wp_list_pages', array(&$this, 'wp_list_pages'));

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

Не могу найти никаких примеров использования функции has_filter с обратным вызовом на основе объекта.

Я пытался:

has_filter('wp_list_pages', array('test_plugin', 'wp_list_pages'));

Но это только возвращает ложь. Я написал отладочный вывод для отображения содержимого глобальной переменной $wp_filters, и обратный вызов определенно зарегистрирован в массиве $wp_filters.

1 Ответ

0 голосов
/ 08 октября 2009

Посмотрите на функцию _wp_filter_build_unique_id, определенную в нижней части wp-includes/plugin.php. Вот где генерируется ключ массива для $wp_filters. Похоже, что он делает что-то вроде этого для вашего случая:

$obj_idx = get_class($this).'wp_list_pages';

, а затем добавляет целое число в конец этого, чтобы убедиться, что оно уникально. Это целое число также добавляется в поле с именем wp_filter_id на вашем объекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...