为什么ADMIN_NOTICES没有显示我的文本?[简单插件,初学者]

时间:2012-11-15 作者:user1787531

下面是四天学习Wordpress和PHP的结果。不幸的是,它没有按预期的方式工作。admin\\u通知栏上不显示任何内容。

起初,我以为是$filename = is_plugin_active($filename) ? "$filename: Active" : "$filename: Disabled"; 线路,但这不是问题所在。你怎么说?

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");

1 个回复
SO网友:chrisguitarguy

var_dump($paths); 显示您的$路径变量是空字符串。它没有显示任何内容,因为没有什么可显示。

既然你看起来想找到所有的插件,你应该看看get_plugins. glob 将相对于当前工作目录(随服务器设置的不同而不同),并且is_plugin_active 活动需要plugin_basename.

get_plugins 将返回一个关联数组,其中插件基名称作为键,文件头数据作为值(在数组中)。

其他几点注意事项:

admin_notices 不会自动设置通知的格式以使其看起来漂亮。你可以用<div class="error"><div class="updated"> 这样做。

始终为函数指定唯一的前缀,或将它们放在namespace (仅限PHP 5.3以上版本)。

修订代码:

<?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>\';
}

结束