Existe-t-il un moyen de déterminer quel plug-in le filtre plugin_action_links s'adresse lorsqu'il traite le filtre?
J'essaie d'ajouter des actions pour chaque plugin sur la page /wp-admin/plugins.php
. Le code ressemble à ceci:
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;
}
Je suis en mesure d'ajouter ce texte à la fin de chaque liste de liens de plug-ins, mais je ne peux pas déterminer exactement à quel plugin j'ajoute le texte. L'ajout d'une variable globale depuis _add_plugin_links()
renvoie simplement le dernier plugin analysé à partir de la liste des plugins.
Il existe actuellement quatre filtres et ils contiennent beaucoup d'informations:
$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 );
Ceci est une sauvegarde des paramètres pour les champs personnalisés avancés:
Array
(
[0] => Array
(
[activate] => <a href="plugins.php?action=activate&plugin=advanced-custom-fields%2Facf.php&plugin_status=all&paged=1&s&_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&checked%5B0%5D=advanced-custom-fields%2Facf.php&plugin_status=all&paged=1&s&_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
)
Vous pouvez utiliser le plugin_actions_link
nu et détecter le fichier de plug-in, mais c'est plus facile avec le second. Exemple d’ajout d’un lien d’action à ACF dans 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 );
Autre filtre d’intérêt: plugin_row_meta
.