Voici un code qui résulte de quatre jours d’étude de Wordpress et de PHP. Malheureusement, cela ne fonctionne pas comme prévu. Rien ne s'affiche dans la barre admin_notices.
A l'origine, je pensais que c'était le $ filename = is_plugin_active ($ filename)? "$ filename: Active": "$ filename: Disabled"; , mais ce n'était pas le problème. Ce que vous dites?
function show_names()
{
$paths = array();
foreach (glob("*/plugins/*") as $filename) {
$filename = is_plugin_active($filename) ? "$filename: Active" : "$filename: Disabled";
$filename = str_replace('wp-content/plugins/', '', $filename);
$paths[] = $filename;
}
$paths = implode("---", $paths);
echo $paths;
}
add_action("admin_notices", "show_names");
var_dump($paths);
indique que la variable votre $ path est une chaîne vide. Cela ne montre rien parce qu'il n'y a rien à montrer.
Puisque vous semblez essayer de trouver tous les plugins, vous devriez jeter un oeil à get_plugins
. glob
va être relatif au répertoire de travail actuel (avec variera en fonction de la configuration de votre serveur) et is_plugin_active
active prend un plugin_basename
.
get_plugins
retournera un tableau associatif avec les noms de base de plugin comme clés comme données d'en-tête de fichier comme valeurs (dans un tableau).
Quelques autres notes:
admin_notices
ne met pas automatiquement vos avis en forme pour donner une belle apparence. Vous pouvez envelopper votre avis avec <div class="error">
ou <div class="updated">
pour le faire.
Attribuez toujours un préfixe unique à vos fonctions ou placez-les dans un espace de noms (PHP 5.3+ uniquement).
Code révisé:
<?php
add_action('admin_notices', 'wpse72637_show_names');
function wpse72637_show_names()
{
$paths = array();
foreach(get_plugins() as $p_basename => $plugin)
{
$paths[] = "{$plugin['Name']}: " .
(is_plugin_active($p_basename) ? 'Active' : 'Disabled');
}
echo '<div class="updated"><p>', implode(' --- ', $paths), '<p></div>';
}