Ваше наблюдение верно.Это не очевидно.Даже книга Брэда и Ожа (Разработка плагинов под ред. Wrox) содержит ошибку в примере на странице 267 в главе «Создайте свой собственный API-репозиторий».Как и вы, я потратил (потерял) время, чтобы найти проблему с двумя плагинами в альтернативном API ...
Решение: Помните, что первый параметр в фильтре WP является оригинальнымзначение передается в фильтр.Таким образом, чтобы объединить фильтры (перечисленные плагинами с использованием альтернативного API) ... первая строка должна быть:
function xiliw_altapi_information( $false, $action, $args ) {
$plugin_slug = plugin_basename( __FILE__ );
// Check if this plugins API is about this plugin
if( $args->slug != $plugin_slug ) {
return $false; // var to conserve the value of previous filter of plugins list in alternate api. fixes book error not val false
}
// POST data to send to your API
$args = array(
'action' => 'plugin_information',
'plugin_name' => $plugin_slug,
'version' => $transient->checked[$plugin_slug],
'registration' => $this->registration
);//../..
При выполнении этого теста каждый раз, когда вызывается список хуков, только один- соответствующий плагин - дает правильный ответ для отображения информации для всплывающего окна.
Если у меня будет время, я, вероятно, скоро опубликую более полную статью о классе для управления этим альтернативным мощным APIи как добавить его в -private- плагин.