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 文章列表:使用主題選項、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代碼(在 functions.php 文件中添加設置)或直接修改 WordPress 數據庫。

最近,我們向您展示瞭如何通過允許用戶將自己喜歡的帖子保存在個性化庫中來為用戶創建個性化體驗。您可以通過在某些地方(即歡迎屏幕)使用他們的名字,將個性化結果提升到另一個水平。幸運的是,WordPress使獲取登錄用戶的信息變得非常容易。在本文中,我們將向您展示如何檢索與當前登錄用戶相關的信息。我們將利用get_currentuserinfo(); 功能。這可以在主題中的任何地方使用(頁眉、頁腳、側邊欄、頁面模板等)。為了使其工作,用戶必須登錄。因此我們需要使用

您想了解如何在父分類存檔頁面上顯示子分類嗎?在自定義分類存檔頁面時,您可能需要執行此操作,以使其對訪問者更有用。在本文中,我們將向您展示如何在父分類存檔頁面上輕鬆顯示子分類。為什麼在父分類存檔頁面上顯示子分類?通過在父分類存檔頁面上顯示所有子分類,您可以使其不那麼通用,對訪問者更有用。例如,如果您運行一個關於書籍的WordPress博客,並且有一個名為“主題”的分類法,那麼您可以添加“小說”、“非小說”等子分類法,以便您的讀者可以

過去,我們分享過如何使用PostExpirator插件使WordPress中的帖子過期。好吧,在創建活動列表網站時,我們發現這個插件非常有用。我們可以輕鬆刪除過期的活動列表。其次,多虧了這個插件,按帖子過期日期對帖子進行排序也非常容易。在本文中,我們將向您展示如何在WordPress中按帖子過期日期對帖子進行排序。更新了代碼以反映插件中更改自定義字段名稱的更改。感謝Tajim在評論中讓我們知道。在我們的特定項目中,我們將事件作為自定義帖子類型。現在

我們的一位用戶詢問其他網站如何在頁腳中顯示查詢數量和頁面加載時間。您經常會在網站的頁腳中看到這一點,它可能會顯示類似以下內容:“1.248秒內64個查詢”。在本文中,我們將向您展示如何在WordPress中顯示查詢數量和頁面加載時間。只需將以下代碼粘貼到主題文件中您喜歡的任何位置(例如footer.php)。 queriesin

您是否正在尋找自動化 WordPress 網站和社交媒體帳戶的方法? 通過自動化,您將能夠在 Facebook、Twitter、LinkedIn、Instagram 等平台上自動分享您的 WordPress 博客文章或更新。 在本文中,我們將向您展示如何使用 IFTTT、Zapier 和 Uncanny Automator 輕鬆實現 WordPress 和社交媒體的自動化。 為什麼要自動化 WordPress 和社交媒體? 自動化您的WordPre

要使用 WordPress 主機建站,需要:選擇一個可靠的主機提供商。購買一個域名。設置 WordPress 主機帳戶。選擇一個主題。添加頁面和文章。安裝插件。自定義您的網站。發布您的網站。
