>写入本地文件是许多插件和主题为各种目的所需的功能之一。安全性是最重要的问题插件,主题在写入本地文件系统时必须处理。 WordPress在各种托管服务和配置上运行,因此,开发人员很难创建插件和主题,这些插件和主题访问本地文件系统可以在所有不同类型的环境中工作而不损害安全性。 在本教程中,我们将学习如何使用WordPress文件系统API访问负责适当文件权限的本地文件系统。在此过程中,我们将创建一个插件,该插件在管理页面中显示带有TextAarea的表单,以将Textarea的内容保存到文件中。
>钥匙要点
>但是,当您使用SSH或FTP/SFTP登录以创建文件时,它们由您登录AS的操作系统用户帐户所有。如果FTP服务器作为“ admin”用户运行,并且您以“ narayanprusty”用户的身份登录,则新创建的文件将以“ narayanprusty”而不是“ admin”。
WordPress引入了可以自动处理文件权限的文件系统API。文件系统API在WordPress 2.6中发布。 WordPress实际上发布了它以支持其插件,主题和核心更新系统,但后来在插件和主题上开始使用它出于自己的目的。>
>文件系统API如何工作?创建我们的插件文件和目录
>现在,让我们创建我们的插件,该插件在页面中显示一个文本方面,在其中提交表单将文本方面的内容保存到本地文件中。
在WordPress安装的WP-CONTENT/插件目录中创建这些文件和目录。
要使插件可安装,请将此代码放在filesystem.php文件中:
--filesystem --filesystem.php --filesystem-demo --demo.txt
创建管理页
接下来,我们需要在管理员中的一个页面,我们的示例将居住。这是创建此页面并显示Textarea的代码。只需将此代码放在filesystem.php文件中:
<span><span><?php </span></span><span> </span><span><span>/* </span></span><span><span>Plugin Name: Filesystem API </span></span><span><span>Plugin URI: http://www.sitepoint.com </span></span><span><span>Description: A sample plugin to demonstrate Filesystem API </span></span><span><span>Version: 1.0 </span></span><span><span>Author: Narayan Prusty </span></span><span><span>*/</span></span>
这是代码的工作原理:
在页面内,我们正在显示带有TextArea和Nonce字段的HTML表单。还有一个提交按钮来提交表格。 Textarea名称是文件数据。添加了NONCE以防止CSRF攻击。
function menu_item() { add_submenu_page("options-general.php", "Demo", "Demo", "manage_options", "demo", "demo_page"); } add_action("admin_menu", "menu_item"); function demo_page() { ?> <span><span><span><div</span> class<span>="wrap"</span>></span> </span> <span><span><span><h1</span>></span>Demo<span><span></h1</span>></span> </span> <span><span><span><form</span> method<span>="post"</span>></span> </span> <span><span><?php </span></span><span> <span>$output = ""; </span></span><span> </span><span> <span>if(isset($_POST["file-data"])) </span></span><span> <span>{ </span></span><span> <span>$output = write_file_demo($_POST["file-data"]); </span></span><span> <span>} </span></span><span> <span>else </span></span><span> <span>{ </span></span><span> <span>$output = read_file_demo(); </span></span><span> <span>} </span></span><span> </span><span> <span>if(!is_wp_error($output)) </span></span><span> <span>{ </span></span><span> <span>?></span> </span> <span><span><span><textarea</span> name<span>="file-data"</span>></span><span><?php echo $output; ?></span><span><span></textarea</span>></span> </span> <span><span><?php wp_nonce_field("filesystem-nonce"); ?></span> </span> <span><span><span><br</span>></span> </span> <span><span><span><input</span> type<span>="submit"</span>></span> </span> <span><span><?php </span></span><span> <span>} </span></span><span> <span>else </span></span><span> <span>{ </span></span><span> <span>echo $output->get_error_message(); </span></span><span> <span>} </span></span><span> <span>?></span> </span> <span><span><span></form</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><?php </span></span><span><span>}</span></span>
>
请注意,上面的代码将打破您的WordPress站点,因为我们尚未创建read_file_demo和write_file_demo函数。让我们现在创建它们!--filesystem --filesystem.php --filesystem-demo --demo.txt
这是代码的工作原理:
>读取demo.txt文件时,我们首先使用request_filesystem_credentials函数连接到文件系统。
> 然后,我们正在使用$ WP_FILESYSTEM->存在功能检查文件是否存在。它不存在我们显示错误。否则,我们将使用$ wp_filesystem-> get_contents函数读取文件并返回内容。
><span><span><?php </span></span><span> </span><span><span>/* </span></span><span><span>Plugin Name: Filesystem API </span></span><span><span>Plugin URI: http://www.sitepoint.com </span></span><span><span>Description: A sample plugin to demonstrate Filesystem API </span></span><span><span>Version: 1.0 </span></span><span><span>Author: Narayan Prusty </span></span><span><span>*/</span></span>
>假设WordPress选择了FTP作为创建文件的合适方法,以下是整个过程的屏幕截图:
>在这里,我们需要输入FTP或FTPS凭据并提交它。提交后,我们将看到此表格:
>显示一个空的文本方面。输入文字“ Hello World!”提交表格。您将再次看到凭据表格。
>>您必须再次填充它,因为默认情况下WordPress不会存储FTP密码(您可以在wp-config.php中执行此操作,稍后再详细介绍)。因此,每当您的插件需要与文件系统一起使用时,都必须询问凭据。现在,提交将其重定向回到重定向URL,并带有之前提交的字段名称和值。这是Textarea出现的方式:
>在这里,我们读取文件的内容并显示。
>$ WP_FILESYSTEM对象提供了许多其他方法,可以在文件和目录上执行其他各种操作。我们刚刚看到写作和阅读n文件。您可以在WP_FILESYSTEM_BASE()文档页面上找到可以做什么的整个列表。
>让我们检查一下一些重要的:
永久存储凭据
>
>使用这些选项存储FTP和SSH凭据:> WordPress文件系统API是什么,为什么重要? 。这很重要,因为它提供了一种与服务器上文件系统进行交互的安全可靠方法。对于诸如创建,修改或删除文件和目录,上传媒体文件或更新WordPress安装等任务至关重要API通过提供一组功能来起作用,您可以使用这些功能与服务器上的文件系统进行交互。这些功能抽象了基础文件系统操作,无论服务器的操作系统或文件系统如何,都提供了一致的接口。这意味着您可以使用相同的函数与Linux服务器上的文件系统进行交互。 >
要在自己的插件或主题中使用WordPress文件系统API,您首先需要包括包含API功能的文件“ wp-admin/inclate/file.php”。之后,您可以使用API功能与文件系统进行交互。例如,您可以使用'wp_filesystem()'函数来初始化文件系统,然后使用其他函数,例如'get_contents()','put_contents()'或'delete()删除文件。>我可以使用WordPress Filesystem API删除文件和目录吗?
以上是WordPress文件系统API简介的详细内容。更多信息请关注PHP中文网其他相关文章!