添加一个显示在后端管理中的页面,其中列出了要下载的文件?WP 3.3

时间:2012-04-22 作者:Damainman

我目前正在使用WP 3.3.1。

基本上我只想为通过wp登录的用户提供一个页面。php和后端管理面板可以看到一个页面,显示他们可以下载的文件列表。

文件将为。拉链pdf,或。txt>所有帖子时的格式相同,那就太棒了不太确定如何上传文件。但无论哪条路能让上述过程变得简单,我都同意。

任何能够完成上述操作或让我朝着正确的方向开始的提示或代码片段都将非常棒!

提前谢谢你。

2 个回复
SO网友:Eric Allen

这一过程将涉及几个步骤,我将在这里概述一些步骤,以帮助您开始。

Step 1: Set up a Plug-in

您可以查看有关他们的更多信息here. 我不会在这个答案中重述标题信息,因为这篇文章中的标题信息是不言自明的,并且您的标题信息值会有所不同。

Step 2: Set up Your Activation and Function

//run when admin menu is being created
add_action(\'admin_menu\',\'my_files_plugin_menu\');
//add the new item to the admin menu
function my_files_plugin_menu() {
     add_menu_page(\'Files\',\'Files\',\'editor\',\'my-files-plugin\',\'\',\'\',10);
     add_submenu_page(\'my-files-plugin\',\'Download Files\',\'Download Files\',\'editor\',\'my-files-plugin\',\'my_files_plugin_download_page\');
     add_submenu_page(\'my-files-plugin\',\'Upload Files\',\'Upload Files\',\'administrator\',\'my-files-upload\',\'my_files_plugin_upload_page\');
}

//run when plug-in is activated
register_activation_hook(__FILE__,\'ballots_by_social_set_options\');
//set up activation options for plug in
function my_file_upload_plug_in_activate() {
     //check to see if files directory has already been created
     //we check for the directory first so that if the plug-in is being reactivated
     //or updated, we won\'t bother trying to create the directory again
     if(!is_dir(ABSPATH . \'/wp-content/files_plugin\')) {
          //create directory
          mkdir(ABSPATH . \'/wp-content/files_plugin\',0755);
     }
}
我在下载页面中使用了编辑器用户级别,在上传页面中使用了管理员用户级别,但您可以将它们设置为您想要的任何级别。您还可以添加带有选项的第三页,并使用add_option() 在您的register_activation_hook() 设置一些默认值。那么您将要使用update_option()get_option() 允许调整可以访问页面的用户级别。如果您决定这样做,请确保设置register_deactivation_hook() 您使用的位置delete_option() 移除它们。

Step 3: Set up your Uninstall Function

我建议把它放在一个不抛锚的地方。插件目录中的php文件。这将确保当有人单击插件上的删除链接时,它将删除目录及其所有内容。如果在主目录中为不同的文件类型设置子目录,则也可以修改该函数以删除这些子目录。

//remove /wp-content/files_plugin/
$dir = ABSPATH . \'/wp-content/files_plugin\';
chmod($dir,0777);
function remove_files_plugin_dir($dir) {
     //see if directory exists
     if(is_dir($dir)) {
     //open directory
     $handle = opendir($dir);
     //iterate through objects in directory and remove them
     while($obj = readdir($handle)) {
          if($obj != "." && $obj != \'..\') {
               if(!unlink($dir . $obj)) {
                    break;
               } 
          }
     }
     closedir($handle);
     rmdir($dir);
}
//run remove directory function
remove_files_plugin_dir($dir);

Step 4: Set up Your Uploads Page

您需要设置一个带有文件输入和上载按钮的简单页面,如果愿意,您可以将表单设置为接受多个文件。您将要引用$_FILES 数组并将上载的文件写入新的/wp-content/files\\u插件/目录。

Step 5: Set up Your Downloads Page

这基本上取决于你想怎么做。您可以轻松地打开目录并遍历文件,就像卸载功能一样,然后将其输出到页面。

或者你可以用jQuery File Tree 向用户显示文件浏览器。

EDIT 2: 我对让它看起来像帖子页面的方式大错特错。看起来你可以使用WP_List_Table 类以更好的方式实现这一点。我没有这门课的经验,但它看起来很时髦。

我刚刚设置了输出,以在结构和类方面反映典型的管理区域表。不过,从现在起,我肯定会使用WP\\u List\\u Table。

Step 6: Set Up a Delete Function

您可能希望每个文件都有一个特定的链接,只有管理员才能看到该链接,允许您删除该文件。

您可能希望将其设置为对删除函数的Ajax调用,将文件名作为参数发送给它,然后使用unlink() 函数,就像我们在卸载函数中删除该文件一样。

很明显,您可能想调整这些代码以满足您的需要,但这应该为您提供一个体面的起点。

而且,不要忘记,您也可以使用数据库中的一个表来控制所有这些,但您仍然需要添加和删除实际文件,只需将文件名存储在DB中。

如果您需要任何帮助或有任何问题,请发回,我将尽力提供帮助。

SO网友:Luca Reghellin

我在寻找另一个论点,但遇到了这个话题。即使它已经很老了,我想指出的是,也许你可以做更多的事情来完成你的任务。

如果我是你,对于上传的事情,我会用相关的元数据库创建一个自定义的帖子类型(wpalchemy 此处)。

那么对于下载的事情,这取决于你真正需要什么。如果您确实需要在管理区域内显示列表,WP_List_Table 是路(并检查here). 否则,我认为您可以设置一个通用的自定义post类型归档页面,然后将其与相关的用户配置文件或功能绑定。

希望这对其他人有帮助。

结束

相关推荐

如何在某些/wp-admin页面上将样式/脚本入队?

我有两个简单的函数,可以使用wp_enqueue_style() 和wp_enqueue_script(), 类似以下内容:function admin_custom_css() { wp_enqueue_style( \'stylesheet_name\', \'stylesheet.css\') }; function admin_custom_js { wp_enqueue_script( \'javascript_file\', \'script.js\')