Intereting Posts

Определить имя плагина из фильтра plugin_action_links

Есть ли способ определить, какой плагин фильтрует фильтр plugin_action_links, когда он обрабатывает фильтр?

Я пытаюсь добавить некоторые действия для каждого плагина на странице /wp-admin/plugins.php . Код выглядит так:

 public function _add_plugin_links(){ $plugins = get_plugins(); foreach($plugins as $k=>$plugin){ add_filter( 'plugin_action_links_' . $k, array(&$this, '_plugin_action_links') ); } // foreach $plugins } public function _plugin_action_links( $links ) { $plugin = 'test'; // Somehow get plugin name here? $links[] = 'Plugin name is: '.$plugin; return $links; } 

Я могу добавить этот текст в конец каждого списка ссылок плагинов, но не могу точно определить, к какому плагину добавляю текст. Добавление глобальной переменной из _add_plugin_links() просто возвращает самый последний плагин, который анализируется из списка плагинов.

В настоящее время существует четыре фильтра, и они содержат много информации:

 $prefix = $screen->in_admin( 'network' ) ? 'network_admin_' : ''; $actions = apply_filters( $prefix . 'plugin_action_links', array_filter( $actions ), $plugin_file, $plugin_data, $context ); $actions = apply_filters( $prefix . "plugin_action_links_$plugin_file", $actions, $plugin_file, $plugin_data, $context ); 

Это дамп параметров параметров для дополнительных пользовательских полей:

 Array ( [0] => Array ( [activate] => <a href="plugins.php?action=activate&amp;plugin=advanced-custom-fields%2Facf.php&amp;plugin_status=all&amp;paged=1&amp;s&amp;_wpnonce=62d37299ca" title="Activate this plugin for all sites in this network" class="edit">Network Activate</a> [edit] => <a href="plugin-editor.php?file=advanced-custom-fields/acf.php" title="Open this file in the Plugin Editor" class="edit">Edit</a> [delete] => <a href="plugins.php?action=delete-selected&amp;checked%5B0%5D=advanced-custom-fields%2Facf.php&amp;plugin_status=all&amp;paged=1&amp;s&amp;_wpnonce=b7f1cf2b36" title="Delete this plugin" class="delete">Delete</a> ) [1] => advanced-custom-fields/acf.php [2] => Array ( [Name] => Advanced Custom Fields [PluginURI] => http://www.advancedcustomfields.com/ [Version] => 4.2.2 [Description] => Fully customise WordPress edit screens with powerful fields. Boasting a professional interface and a powerfull API, it's a must have for any web developer working with WordPress. Field types include: Wysiwyg, text, textarea, image, file, select, checkbox, page link, post object, date picker, color picker, repeater, flexible content, gallery and more! [Author] => Elliot Condon [AuthorURI] => http://www.elliotcondon.com/ [TextDomain] => [DomainPath] => [Network] => [Title] => Advanced Custom Fields [AuthorName] => Elliot Condon ) [3] => all ) 

Вы можете использовать голый plugin_actions_link и обнаруживать файл плагина, но со вторым проще. Пример добавления ссылки Action к ACF в wp-admin/network/plugins.php :

 add_filter( 'network_admin_plugin_action_links_advanced-custom-fields/acf.php', function( $actions, $plugin_file, $plugin_data, $context ) { $actions['hello'] = 'Hello worlds!'; return $actions; }, 10, 4 ); 

Другой интересующий фильтр: plugin_row_meta .