我目前正在尝试检测管理员何时上载(并安装)主题或插件。
我写的代码非常脆弱,因为它取决于插件/主题的名称是否与上载的zip文件相同(这种情况很少发生)。
function EventFileUploaded($attachmentID){
if(isset($_REQUEST[\'action\'])){
$file = get_attached_file($attachmentID);
switch($_REQUEST[\'action\']){
case \'upload-theme\':
HandleThemeUpload($file);
break;
case \'upload-plugin\':
HandlePluginUpload($file);
break;
}
}
}
add_action(\'delete_attachment\', \'EventFileUploaded\');
function HandleThemeUpload($fileName){
$themes = wp_get_themes();
// TODO somehow find which theme in $themes was installed from $fileName
}
function HandlePluginUpload($fileName){
$plugins = get_plugins();
// TODO somehow find which plugin in $plugins was installed from $fileName
}
我基本上需要填写上面标记的两个待办事项。这是我使用的代码示例:$fileName = explode(\'.\', basename($fileName));
foreach(get_plugins() as $pluginFile => $plugin){
if(strtolower(str_replace(\' \', \'-\', $plugin[\'Name\'])) == $fileName){
$newPlugin = $plugin;
break;
}
}
// use $newPlugin if set
当然,上面的代码在某些情况下会失败。附言:我不确定该使用什么标签,请随意推荐更好的标签