ホームページ >CMS チュートリアル >&#&プレス >WordPressファイルシステムAPIの紹介
ローカルファイルへの書き込みは、多くのプラグインとテーマがさまざまな目的に必要な機能の1つです。セキュリティは最も重要な問題であり、プラグインとテーマはローカルファイルシステムに書き込む際に注意を払わなければなりません。 WordPressはさまざまなホスティングサービスと構成を実行しているため、開発者がセキュリティを損なうことなく、さまざまな種類の環境で動作するローカルファイルシステムにアクセスするプラグインとテーマを作成することが困難になります。 このチュートリアルでは、WordPress Files -System APIを使用して、適切なファイル許可を処理するローカルファイルシステムにアクセスする方法を学びます。その過程で、Textareaのコンテンツをファイルに保存する管理ページにTextareaを含むフォームを表示するプラグインを作成します。
キーテイクアウト
しかし、SSHまたはFTP/SFTPを使用してログインしてファイルを作成すると、ログインしているオペレーティングシステムのユーザーアカウントが所有しています。 FTPサーバーが「管理者」ユーザーとして実行され、「narayanprusty」ユーザーとしてログインしている場合、新しく作成されたファイルには、「管理者」ではなく「narayanprusty」として所有者がいます。
WordPressは、ファイルのアクセスを自動的に処理できるFilesystem APIを導入しました。ファイルシステムAPIは、WordPress 2.6でリリースされました。 WordPressは、実際にプラグイン、テーマ、コアアップデートシステムをサポートするためにリリースしましたが、後でプラグインとテーマを使用して独自の目的で使用し始めました。ファイルシステムAPIはどのように機能しますか?
プラグインファイルとディレクトリの作成
次に、ページにTextareaを表示するプラグインを作成しましょう。フォームを送信すると、Textareaの内容がローカルファイルに保存されます。プラグインのディレクトリ構造は次のとおりです
管理パネルにアクセスして、プラグインをインストールしてください
管理ページの作成--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は、ページコンテンツを表示するためのコールバックです
ページ内には、テキストアレアとノンセフィールドを備えたHTMLフォームを表示しています。フォームを送信するための送信ボタンもあります。 Textarea名はファイルデータです。 CSRF攻撃を防ぐために、nonceが追加されます。read_file_demoまたはwrite_file_demoがwp_errorオブジェクトのインスタンスを返す場合、代わりにエラーメッセージを表示します。
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関数をまだ作成していないため、WordPressサイトを破壊します。今すぐ作成しましょう!
ファイルへの書き込み
--filesystem --filesystem.php --filesystem-demo --demo.txt
コードの仕組みは次のとおりです
$ wp_filesystem-> exists関数を使用してファイルが存在するかどうかを確認します。ファイルは存在しませんエラーを表示します。それ以外の場合は、$ wp_filesystem-> get_contents関数を使用してファイルを読み取り、コンテンツを返します。
ここでは、FTPまたはFTPS資格情報を入力して送信する必要があります。送信したら、このフォームを表示します:
空のテキストが表示されました。 「HelloWorld !!!」というテキストを入力してくださいフォームを送信します。再び資格情報フォームが表示されます。
再度入力する必要があります(これをWP-Config.phpで行うことができます。詳細は後で説明します)。したがって、プラグインがファイルシステムを使用する必要があるたびに、資格情報を尋ねる必要があります。次に、以前に送信されたフィールド名と値を使用して、リダイレクトURLにリダイレクトされます。 Textareaの表示方法は次のとおりです
$ wp_filesystemオブジェクトのその他のメソッド
$ wp_filesystem-> delete:deleteは、ファイルまたはディレクトリを削除するために使用されます。パスを表す文字列を渡す必要があります
$ wp_filesystem-> mkdir:mkdirは、ディレクトリの作成に使用されます。親ディレクトリを表す文字列が必要ですWordPressファイルシステムAPIを使用する場合、エラーを処理するにはどうすればよいですか? ) '関数がエラーを返したかどうかを確認するために使用できること。エラーが発生した場合、「get_error_message()」関数を使用して、人間が読み取れるエラーメッセージを取得できます。これにより、エラーを簡単に処理し、ユーザーに便利なフィードバックを提供できます。 .htaccessファイルを変更します。 APIは、特定のマーカー間で.htaccessファイルに行に行を挿入できる「insert_with_markers()」と呼ばれる関数を提供します。これにより、.htaccessファイルに安全で信頼できる方法でカスタムルールを簡単に追加できます。これにより、すべてのファイル操作が正しい権限で実行されることを保証し、ファイル名とパスを消毒する機能を提供します。これにより、ディレクトリトラバーサル攻撃などの一般的なセキュリティの問題を防ぐのに役立ちます。
以上がWordPressファイルシステムAPIの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。