WordPress文件系统API简介
>写入本地文件是许多插件和主题为各种目的所需的功能之一。安全性是最重要的问题插件,主题在写入本地文件系统时必须处理。 WordPress在各种托管服务和配置上运行,因此,开发人员很难创建插件和主题,这些插件和主题访问本地文件系统可以在所有不同类型的环境中工作而不损害安全性。 在本教程中,我们将学习如何使用WordPress文件系统API访问负责适当文件权限的本地文件系统。在此过程中,我们将创建一个插件,该插件在管理页面中显示带有TextAarea的表单,以将Textarea的内容保存到文件中。
>钥匙要点
> WordPress文件系统API为插件和主题提供了一个安全的方法,可以自动处理文件权限,这很重要,考虑到各种托管服务和配置WordPress跨度运行。
- >
- API可以通过系统调用写入文件系统,根据文件权限和可用的PHP扩展选择最合适的方法。它还可以存储FTP或SSH连接的用户凭据。 >
- >教程演示了如何使用API创建插件。该插件在管理页面中显示表单,从而将文本方面的内容保存到文件中。该教程提供了用于创建插件文件和目录,创建管理页面以及从文件写入和读取的代码。
- $ WP_FILESYSTEM对象(WP_FileSystem类的实例)揭示了用于阅读,创建,写作和删除文件的方法。可用的其他方法包括删除,mkdir,move,size和chmod。 WordPress默认情况下不会永久存储FTP或SSH凭据,但是可以使用wp-config.php文件永久存储它们。这避免了每次插件与文件系统交互时都需要重新输入凭据。
- 为什么使用WordPress文件系统API?
- >您可能想知道为什么我们不仅使用PHP的文件系统函数来读取和写入本地文件,而不是学习并使用一组全新的API?
>但是,当您使用SSH或FTP/SFTP登录以创建文件时,它们由您登录AS的操作系统用户帐户所有。如果FTP服务器作为“ admin”用户运行,并且您以“ narayanprusty”用户的身份登录,则新创建的文件将以“ narayanprusty”而不是“ admin”。
WordPress引入了可以自动处理文件权限的文件系统API。文件系统API在WordPress 2.6中发布。 WordPress实际上发布了它以支持其插件,主题和核心更新系统,但后来在插件和主题上开始使用它出于自己的目的。>
>文件系统API如何工作?>文件系统API可以使用系统调用(即Direct,FTP,FTP套接字或SSH2)写入文件系统。它根据哪种方法选择使用适当的文件权限的文件以及可用的PHP扩展名来选择其中一种方法。文件系统API首先检查直接方法,然后检查FTP,最后检查SSH2。
使用FTP或SSH时,您需要从用户那里获得凭据。文件系统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>
这是代码的工作原理:
首先,我们在“设置”菜单中添加了一个页面。 demo_page是用于显示页面内容的回调。
在页面内,我们正在显示带有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函数。让我们现在创建它们!- >
- 写入文件
- 这是我们的write_file_demo函数的实现:
--filesystem --filesystem.php --filesystem-demo --demo.txt
这是代码的工作原理:
- 首先,我们引用了函数内部的全局$ WP_FILESYSTEM对象。此对象是WP_FILESYSTEM类的实例。它负责揭示阅读,创建,写作和删除文件的各种方法。
- 接下来,我们将创建表单页面的nonce URL和一个带有表单的字段名称的数组。
- 最后,我们使用Connect_FS函数连接到文件系统。 connect_fs使用WordPress提供的request_filesystem_credentials函数,以找到连接到文件系统(直接,FTP或SSH)的适当方法。如果是FTP或SSH,它将回应一个表格,要求用户提供凭据。在直接方法的情况下,它只会返回true。
- > 提交TextArea表单并且request_filesystem_credentials选择FTP或SSH方法时,我们将显示凭据表单并以凭据形式隐藏文件数据字段。
- > > request_filesystem_credentials函数的第一个参数在获得正确的凭据后,将其重定向到其中。重定向是类型的邮政请求。 request_filesystem_credentials最后一个参数是字段名称的数组,要将其发布到重定向URL。
- >一旦提交了凭据表格,然后将其重定向到原始表单提交URL,并带有适当的字段名称和用户输入的值。
> >再次开始,我们执行write_file_demo。这次request_filesystem_credentials具有凭据,因此它将仅返回true。
然后,我们使用$ wp_filesystem-> find_folder来引用该文件夹。然后,我们构建demo.txt文件的完整路径。 - 我们使用$ wp_filesystem-> put_contents将数据写入文件。
- >注意:如果您尝试使用$ wp_filesystem对象的方法而无需请求和验证凭据,则它们将不起作用。 >
- 读取文件
- 这是read_file_demo函数的实现。
>读取demo.txt文件时,我们首先使用request_filesystem_credentials函数连接到文件系统。
这一次,我们没有在最后一个参数中传递任何表单字段,因为该表单未提交。我们只是通过重定向URL,以便一旦取回凭证就可以重定向。
> 然后,我们正在使用$ 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作为创建文件的合适方法,以下是整个过程的屏幕截图:
- 首先,当我们打开演示页面时,我们将看到此表格:
- $ wp_filesystem-> delete:delete用于删除文件或目录。您需要传递代表路径的字符串。 >
- $ WP_FILESYSTEM-> MKDIR:MKDIR用于创建目录。它采用代表父目录的字符串。 >
- $ WP_FILESYSTEM->移动:移动用于移动文件,它采用两个参数,即第一个参数是文件的路径,第二个是将其移动到的目录。 $ WP_FILESYSTEM->大小:大小返回字节中的文件大小。您需要通过文件的路径。
- $ WP_FILESYSTEM-> CHMOD:CHMOD用于更改文件的权限。它需要三个参数,即文件的路径,允许八进制的数字和代表递归的布尔值。
- > ftp_host:服务器的主机名。 >
- ftp_user:连接时要使用的用户名。
- ftp_pass:连接时要使用的密码 > ftp_pubkey:使用SSH2连接时将使用的公钥的路径。
- > ftp_prikey:使用SSH2连接时将使用的私钥的路径。

>在这里,我们需要输入FTP或FTPS凭据并提交它。提交后,我们将看到此表格:

>显示一个空的文本方面。输入文字“ Hello World!”提交表格。您将再次看到凭据表格。
>
>您必须再次填充它,因为默认情况下WordPress不会存储FTP密码(您可以在wp-config.php中执行此操作,稍后再详细介绍)。因此,每当您的插件需要与文件系统一起使用时,都必须询问凭据。现在,提交将其重定向回到重定向URL,并带有之前提交的字段名称和值。这是Textarea出现的方式:

>在这里,我们读取文件的内容并显示。
>$ WP_FILESYSTEM对象的其他方法
$ WP_FILESYSTEM对象提供了许多其他方法,可以在文件和目录上执行其他各种操作。我们刚刚看到写作和阅读n文件。您可以在WP_FILESYSTEM_BASE()文档页面上找到可以做什么的整个列表。
>让我们检查一下一些重要的:
永久存储凭据
>我们看到WordPress不会永久存储FTP或SSH凭据。一次又一次询问详细信息并不是用户友好的。有一种方法可以使用wp-config.php文件永久存储凭据。
>
>使用这些选项存储FTP和SSH凭据:在本文中,我们看到了设计使用WordPress文件系统API访问我们的文件系统的管理页面的过程。如果您尝试在背景过程中访问文件系统(例如使用CRON作业),则无法显示凭据表单,如果需要,在这种情况下,您需要确保您通知用户要将凭据常数放在wp-config.php文件中。 您可以继续进行此API,并在下面与我们分享您的经验。
经常询问的问题(FAQ)> WordPress文件系统API是什么,为什么重要? 。这很重要,因为它提供了一种与服务器上文件系统进行交互的安全可靠方法。对于诸如创建,修改或删除文件和目录,上传媒体文件或更新WordPress安装等任务至关重要API通过提供一组功能来起作用,您可以使用这些功能与服务器上的文件系统进行交互。这些功能抽象了基础文件系统操作,无论服务器的操作系统或文件系统如何,都提供了一致的接口。这意味着您可以使用相同的函数与Linux服务器上的文件系统进行交互。 >
要在自己的插件或主题中使用WordPress文件系统API,您首先需要包括包含API功能的文件“ wp-admin/inclate/file.php”。之后,您可以使用API功能与文件系统进行交互。例如,您可以使用'wp_filesystem()'函数来初始化文件系统,然后使用其他函数,例如'get_contents()','put_contents()'或'delete()删除文件。
>使用WordPress文件系统API比传统的PHP文件系统功能有什么好处?
>
>使用WordPress Filesystem API优于传统的PHP文件系统功能,API提供了一个一致的接口服务器的操作系统或文件系统。这意味着您可以编写在任何服务器上工作的代码,而不必担心不同文件系统之间的差异。此外,API通过确保使用正确的权限执行所有文件操作来提供更高级别的安全性。我可以使用WordPress Filesystem API上传文件上传文件吗?使用WordPress文件系统API上传文件。 API提供了一个称为“ WP_HANDLE_UPLOAD()”的函数,该函数处理整个上传过程,包括检查文件类型,确保文件不大,并将文件移至正确的目录。这使得以安全可靠的方式处理文件上传变得易于处理。 )'您可以用来检查函数是否返回错误。如果发生错误,则可以使用“ get_error_message()”函数获取人类可读的错误消息。这使得很容易处理错误并为用户提供有用的反馈。我可以使用WordPress文件系统API修改.htaccess文件吗?
是的,您可以使用WordPress Filesystem API修改.htaccess文件。 API提供了一个称为“ Insert_with_markers()”的函数,该函数允许您将行插入特定标记之间的.htaccess文件中。这使得以安全可靠的方式将自定义规则添加到.htaccess文件中。是的,您可以使用WordPress Filesystem API来创建目录。 API提供了一个称为“ WP_MKDIR_P()”的函数,该函数可创建目录和所有必要的父目录。这使得以可靠的方式创建复杂的目录结构变得容易。
>我可以使用WordPress Filesystem API删除文件和目录吗?
是的,您可以使用WordPress Filesystem API来删除文件和目录。 API提供了一个称为“ delete()”的函数,可以删除文件和目录。这使您可以轻松地自行清理,并确保您的插件或主题不会在服务器上留下不必要的文件。
以上是WordPress文件系统API简介的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

博客是人们在网上表达观点、意见和见解的理想平台。许多新手渴望建立自己的网站,却因担心技术障碍或成本问题而犹豫不决。然而,随着平台不断发展以满足初学者的能力和需求,现在开始变得比以往任何时候都更容易。 本文将逐步指导您如何建立一个WordPress博客,从主题选择到使用插件提升安全性和性能,助您轻松创建自己的网站。 选择博客主题和方向 在购买域名或注册主机之前,最好先确定您计划涵盖的主题。个人网站可以围绕旅行、烹饪、产品评论、音乐或任何激发您兴趣的爱好展开。专注于您真正感兴趣的领域可以鼓励持续写作

WordPress对初学者来说容易上手。1.登录后台后,用户界面直观,简洁的仪表板提供所有必要功能链接。2.基本操作包括创建和编辑内容,所见即所得的编辑器简化了内容创建。3.初学者可以通过插件和主题扩展网站功能,学习曲线存在但可以通过实践掌握。

您想了解如何在父分类存档页面上显示子分类吗?在自定义分类存档页面时,您可能需要执行此操作,以使其对访问者更有用。在本文中,我们将向您展示如何在父分类存档页面上轻松显示子分类。为什么在父分类存档页面上显示子分类?通过在父分类存档页面上显示所有子分类,您可以使其不那么通用,对访问者更有用。例如,如果您运行一个关于书籍的WordPress博客,并且有一个名为“主题”的分类法,那么您可以添加“小说”、“非小说”等子分类法,以便您的读者可以

最近,我们向您展示了如何通过允许用户将自己喜欢的帖子保存在个性化库中来为用户创建个性化体验。您可以通过在某些地方(即欢迎屏幕)使用他们的名字,将个性化结果提升到另一个水平。幸运的是,WordPress使获取登录用户的信息变得非常容易。在本文中,我们将向您展示如何检索与当前登录用户相关的信息。我们将利用get_currentuserinfo(); 功能。这可以在主题中的任何地方使用(页眉、页脚、侧边栏、页面模板等)。为了使其工作,用户必须登录。因此我们需要使用

有四种方法可以调整 WordPress 文章列表:使用主题选项、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代码(在 functions.php 文件中添加设置)或直接修改 WordPress 数据库。

过去,我们分享过如何使用PostExpirator插件使WordPress中的帖子过期。好吧,在创建活动列表网站时,我们发现这个插件非常有用。我们可以轻松删除过期的活动列表。其次,多亏了这个插件,按帖子过期日期对帖子进行排序也非常容易。在本文中,我们将向您展示如何在WordPress中按帖子过期日期对帖子进行排序。更新了代码以反映插件中更改自定义字段名称的更改。感谢Tajim在评论中让我们知道。在我们的特定项目中,我们将事件作为自定义帖子类型。现在

我们的一位用户询问其他网站如何在页脚中显示查询数量和页面加载时间。您经常会在网站的页脚中看到这一点,它可能会显示类似以下内容:“1.248秒内64个查询”。在本文中,我们将向您展示如何在WordPress中显示查询数量和页面加载时间。只需将以下代码粘贴到主题文件中您喜欢的任何位置(例如footer.php)。queriesin

能在三天内学会WordPress。1.掌握基础知识,如主题、插件等。2.理解核心功能,包括安装和工作原理。3.通过示例学习基本和高级用法。4.了解调试技巧和性能优化建议。
