>寫入本地文件是許多插件和主題為各種目的所需的功能之一。安全性是最重要的問題插件,主題在寫入本地文件系統時必須處理。 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>如果read_file_demo或write_file_demo返回WP_ERROR對象的實例,那麼我們將顯示一個錯誤消息。
>
請注意,上面的代碼將打破您的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中文網其他相關文章!