検索
ホームページCMS チュートリアル&#&プレスWordPressファイルシステムAPIの紹介

WordPressファイルシステムAPIの紹介

ローカルファイルへの書き込みは、多くのプラグインとテーマがさまざまな目的に必要な機能の1つです。セキュリティは最も重要な問題であり、プラグインとテーマはローカルファイルシステムに書き込む際に注意を払わなければなりません。 WordPressはさまざまなホスティングサービスと構成を実行しているため、開発者がセキュリティを損なうことなく、さまざまな種類の環境で動作するローカルファイルシステムにアクセスするプラグインとテーマを作成することが困難になります。 このチュートリアルでは、WordPress Files -System APIを使用して、適切なファイル許可を処理するローカルファイルシステムにアクセスする方法を学びます。その過程で、Textareaのコンテンツをファイルに保存する管理ページにTextareaを含むフォームを表示するプラグインを作成します。

キーテイクアウト

WordPressファイルシステムAPIは、プラグインとテーマがローカルファイルシステムに書き込み、ファイルアクセス許可を自動的に処理するための安全な方法を提供します。これは、WordPressが動作するさまざまなホスティングサービスと構成を考えると重要です。

APIは、システム呼び出しを介してシステムにファイルに書き込むことができ、ファイル許可と使用可能なPHP拡張機能に基づいて最も適切な方法を選択できます。また、FTPまたはSSH接続のユーザー資格情報を保存することもできます。
    チュートリアルでは、APIを使用してプラグインを作成する方法を示しています。プラグインは、管理ページにフォームを表示し、テキストアレアのコンテンツをファイルに保存します。チュートリアルでは、プラグインファイルとディレクトリを作成し、管理ページの作成、ファイルへの書き込みと読み取りのためのコードを提供します。
  • wp_filesystemクラスのインスタンスである$ wp_filesystemオブジェクトは、ファイルの読み取り、作成、書き込み、削除の方法を公開します。利用可能なその他の方法には、削除、mkdir、移動、サイズ、およびchmodが含まれます。
  • WordPressは、デフォルトではFTPまたはSSH資格情報を永続的に保存しませんが、WP-Config.phpファイルを使用して永続的に保存できます。これにより、プラグインがファイルシステムと対話するたびに資格情報を再入力する必要性が回避されます。
  • なぜWordPress Files -System APIを使用しますか?
  • PHPのファイルシステム機能を使用して、まったく新しいAPIのセットを学習して使用する代わりにローカルファイルを読み書きするだけではないのか疑問に思うかもしれません。
  • PHPファイルシステムAPIを使用する問題は、ファイル権限を自動的に処理しないことです。共有ホスティングサービスを使用してWordPressサイトをホストし、ホスティングWebサーバーが「管理者」オペレーティングシステムアカウントとして実行されているとします。 PHPを使用してファイルを作成するたびに、「管理者」ユーザーとして所有されています。したがって、同じ共有ホスティングでホストされている他のWebサイトは、「管理者」ユーザーとして実行されているため、Webサイトファイルにアクセスし、サイトにセキュリティの問題を提起します。この問題から私たちを保護するには、PHPを使用してファイルの所有者と権限を手動で変更する必要があります。

    しかし、SSHまたはFTP/SFTPを使用してログインしてファイルを作成すると、ログインしているオペレーティングシステムのユーザーアカウントが所有しています。 FTPサーバーが「管理者」ユーザーとして実行され、「narayanprusty」ユーザーとしてログインしている場合、新しく作成されたファイルには、「管理者」ではなく「narayanprusty」として所有者がいます。

    WordPressは、ファイルのアクセスを自動的に処理できるFilesystem APIを導入しました。ファイルシステムAPIは、WordPress 2.6でリリースされました。 WordPressは、実際にプラグイン、テーマ、コアアップデートシステムをサポートするためにリリースしましたが、後でプラグインとテーマを使用して独自の目的で使用し始めました。

    ファイルシステムAPIはどのように機能しますか?

    ファイルシステムAPIは、システムコール(つまり、Direct、FTP、FTPソケット、またはSSH2)を使用してファイルシステムに書き込むことができます。適切なファイル権限を持つファイルを作成し、どのPHP拡張を使用できるかに基づいて、どのメソッドに基づいてメソッドの1つを選択します。ファイルシステムAPIは、最初に直接メソッドをチェックし、次にFTP、そして最後にSSH2をチェックします。

    FTPまたはSSHを使用しているときに、ユーザーから資格情報を取得する必要があります。ファイルシステムAPIが機能を提供すると、フォームを表示して資格情報を取得して保存しやすくなります。

    プラグインファイルとディレクトリの作成

    次に、ページにTextareaを表示するプラグインを作成しましょう。フォームを送信すると、Textareaの内容がローカルファイルに保存されます。

    プラグインのディレクトリ構造は次のとおりです

    WordPressインストールのWPコンテンツ/プラグインディレクトリにこれらのファイルとディレクトリを作成します。

    プラグインをインストール可能にするには、このコードを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></span>

    最初に「設定」メニューにページを追加しました。 DEMO_PAGEは、ページコンテンツを表示するためのコールバックです

    ページ内には、テキストアレアとノンセフィールドを備えたHTMLフォームを表示しています。フォームを送信するための送信ボタンもあります。 Textarea名はファイルデータです。 CSRF攻撃を防ぐために、nonceが追加されます。

    ページが開いている場合、read_file_demo関数を使用して保存されたファイルデータを取得します。フォームが送信されると、write_file_demo関数を使用して、textareaのコンテンツをファイルに保存します。

    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> class<span>="wrap"</span>>
             <span><span><span><h1 id="gt">></h1></span>Demo<span><span></span>></span>
    </span>         <span><span><span><form> method<span>="post"</span>></form></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> name<span>="file-data"</span>></textarea></span><span><?php echo $output; ?></span><span><span></span>></span>
    </span>		          	<span><span><?php wp_nonce_field("filesystem-nonce"); ?></span>
    </span>		          	<span><span><span><br>></span>
    </span>		          	<span><span><span><input> 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></span>></span>
    </span>      <span><span><span></span></span></span></span></span></span></span></span></span></span>
    </div></span>></span>
    </span>   <span><span><?php </span></span><span><span>}</span></span></span>
    注、上記のコードは、read_file_demoとwrite_file_demo関数をまだ作成していないため、WordPressサイトを破壊します。今すぐ作成しましょう!

    ファイルへの書き込み
    • write_file_demo関数の実装:
    • を次に示します
    --filesystem
    	--filesystem.php
    	--filesystem-demo
    		--demo.txt

    コードの仕組みは次のとおりです

      最初に、関数内のグローバル$ wp_filesystemオブジェクトを参照しました。このオブジェクトは、wp_filesystemクラスのインスタンスです。ファイルの読み取り、作成、書き込み、削除のためのさまざまな方法の公開を担当しています。
    • 次に、フォームページのNonce URLと、フォームのフィールド名を含む配列を作成します。
    • 最後に、connect_fs関数を使用してファイルシステムに接続します。
    • connect_fsは、WordPressによって提供されるrequest_filesystem_credentials関数を使用して、ファイルシステム(Direct、FTP、またはSSH)に接続する適切な方法を見つけます。 FTPまたはSSHの場合、ユーザーから資格情報を要求するフォームをエコーし​​ます。直接的な方法の場合、それは単にtrueを返します。
    • textareaフォームが送信され、request_filesystem_credentialsがftpまたはsshメソッドを選択した場合、資格情報を表示し、資格情報形式のファイルデータフィールドを隠します。
    • request_filesystem_credentials functionの最初のパラメーターは、正しい資格情報が得られたらリダイレクトするためのURLを使用します。リダイレクトは、型inpostリクエストのものです。 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-> exists関数を使用してファイルが存在するかどうかを確認します。ファイルは存在しませんエラーを表示します。それ以外の場合は、$ wp_filesystem-> get_contents関数を使用してファイルを読み取り、コンテンツを返します。

    WordPressがFTPをファイルを作成するのに適した方法として選択したと仮定して、プロセス全体のスクリーンショットを次に示します。

    最初にデモページを開くと、このフォームが表示されます。WordPressファイルシステムAPIの紹介

    ここでは、FTPまたはFTPS資格情報を入力して送信する必要があります。送信したら、このフォームを表示します:

    WordPressファイルシステムAPIの紹介

    空のテキストが表示されました。 「HelloWorld !!!」というテキストを入力してくださいフォームを送信します。再び資格情報フォームが表示されます。

    WordPressファイルシステムAPIの紹介 WordPressはデフォルトでFTPパスワードを保存しないため、

    再度入力する必要があります(これをWP-Config.phpで行うことができます。詳細は後で説明します)。したがって、プラグインがファイルシステムを使用する必要があるたびに、資格情報を尋ねる必要があります。次に、以前に送信されたフィールド名と値を使用して、リダイレクトURLにリダイレクトされます。 Textareaの表示方法は次のとおりです

    WordPressファイルシステムAPIの紹介ここでは、ファイルの内容を読んで表示します。

    $ wp_filesystemオブジェクトのその他のメソッド

    $ wp_filesystemオブジェクトは、ファイルやディレクトリで他のさまざまな操作を実行するための他の多くの方法を提供します。 nファイルの書き込みと読み取りを見ました。 wp_filesystem_base()ドキュメントページでできることのリスト全体を見つけることができます。

    重要なもののいくつかをチェックしてみましょう:

    $ wp_filesystem-> delete:deleteは、ファイルまたはディレクトリを削除するために使用されます。パスを表す文字列を渡す必要があります

    $ wp_filesystem-> mkdir:mkdirは、ディレクトリの作成に使用されます。親ディレクトリを表す文字列が必要です
      $ wp_filesystem-> move:移動はファイルの移動に使用されます。つまり、最初のパラメーターはファイルのパスであり、2番目はファイルのパスです。
    • $ wp_filesystem-> size:サイズは、ファイルのサイズをバイト単位で返します。ファイルのパスを通過する必要があります。
    • $ wp_filesystem-> chmod:chmodは、ファイルの権限を変更するために使用されます。 3つの引数、つまりファイルのパス、許可オクタル数、および再帰を表すブール波が必要です。
    • $ wp_filesystem-> method public propertyを使用してファイルシステムにアクセスするためにWordPressが使用する接続方法を見つけることができます。 資格情報の永続的な保存
    • WordPressはFTPまたはSSH資格情報を永続的に保存しないことがわかりました。何度も何度も詳細を求めるのはユーザーフレンドリーではありません。 WP-config.phpファイルを使用して、資格情報を永続的に保存する方法があります。
    • これらのオプションを使用してFTPとSSHの資格情報を保存します:
      • ftp_host:サーバーのホスト名。
      • ftp_user:接続中に使用するユーザー名
      • ftp_pass:接続中に使用するパスワード
      • ftp_pubkey:ssh2接続を使用している間に使用される公開鍵のパス。
      • FTP_PRIKEY:SSH2接続を使用している間に使用される秘密鍵のパス。
      • 結論
      • この記事では、WordPressファイルシステムAPIを使用してファイルシステムにアクセスする管理ページを設計するプロセスを見ました。バックグラウンドプロセスでファイルシステムにアクセスしようとしている場合(Cronジョブの使用など)、必要に応じて資格情報を表示することはできません。その場合、ユーザーに通知する必要があります。資格定数をWP-config.phpファイルに配置します。 このAPIをさらに試して、以下であなたの経験を共有することができます。 WordPress Filesystem API
      に関するよくある質問(FAQ)

      WordPressファイルシステムAPIとは何ですか?なぜ重要なのか? 。それは、サーバー上のファイルシステムと対話するための安全で信頼できる方法を提供するため、重要です。これは、ファイルとディレクトリの作成、変更、削除、メディアファイルのアップロード、WordPressのインストールの更新などのタスクにとって重要です。WordPressファイルシステムAPIはどのように機能しますか? APIは、サーバー上のファイルシステムと対話するために使用できる一連の機能を提供することで機能します。これらの機能は、基礎となるファイルシステム操作を抽象化し、サーバーのオペレーティングシステムまたはファイルシステムに関係なく、一貫したインターフェイスを提供します。つまり、同じ機能を使用して、WindowsサーバーのようにLinuxサーバー上のファイルシステムと対話できます。 > 独自のプラグインまたはテーマでWordPress Filesystem APIを使用するには、最初にAPIの機能を含むファイル「WP-Admin/include/file.php」を含める必要があります。その後、APIの関数を使用してファイルシステムと対話できます。たとえば、「wp_filesystem()」関数を使用してファイルシステムを初期化し、 'get_contents()'、 'put_contents()'、または 'delete()などの他の関数を使用できます。ファイルを削除します。

      従来のPHPファイルシステム関数を介してWordPress Files -System APIを使用することの利点は何ですか?サーバーのオペレーティングシステムまたはファイルシステムの。これは、異なるファイルシステム間の違いを心配することなく、任意のサーバーで動作するコードを記述できることを意味します。さらに、APIは、すべてのファイル操作が正しい権限で実行されるようにすることにより、より高いレベルのセキュリティを提供します。 WordPress Files -SystemAPIを使用してファイルをアップロードします。 APIは、ファイルの種類をチェックし、ファイルが大きすぎないようにし、ファイルを正しいディレクトリに移動するなど、アップロードプロセス全体を処理する「wp_handle_upload()」と呼ばれる関数を提供します。これにより、ファイルのアップロードを安全で信頼できる方法で簡単に処理できます。

      WordPressファイルシステムAPIを使用する場合、エラーを処理するにはどうすればよいですか? ) '関数がエラーを返したかどうかを確認するために使用できること。エラーが発生した場合、「get_error_message()」関数を使用して、人間が読み取れるエラーメッセージを取得できます。これにより、エラーを簡単に処理し、ユーザーに便利なフィードバックを提供できます。 .htaccessファイルを変更します。 APIは、特定のマーカー間で.htaccessファイルに行に行を挿入できる「insert_with_markers()」と呼ばれる関数を提供します。これにより、.htaccessファイルに安全で信頼できる方法でカスタムルールを簡単に追加できます。これにより、すべてのファイル操作が正しい権限で実行されることを保証し、ファイル名とパスを消毒する機能を提供します。これにより、ディレクトリトラバーサル攻撃などの一般的なセキュリティの問題を防ぐのに役立ちます。

      WordPressファイルシステムAPIを使用してディレクトリを作成できますか? APIは、ディレクトリと必要なすべての親ディレクトリを作成する「wp_mkdir_p()」と呼ばれる関数を提供します。これにより、信頼できる方法で複雑なディレクトリ構造を簡単に作成できます。ファイルとディレクトリ。 APIは、ファイルとディレクトリの両方を削除できる「delete()」と呼ばれる関数を提供します。これにより、自分の後に簡単にクリーンアップし、プラグインやテーマがサーバー上に不要なファイルを残さないようにします。

以上がWordPressファイルシステムAPIの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
WordPressにコメントボックスを追加する方法WordPressにコメントボックスを追加する方法Apr 20, 2025 pm 12:15 PM

WordPress Webサイトでコメントを有効にして、訪問者にディスカッションに参加し、フィードバックを共有するプラットフォームを提供します。これを行うには、次の手順に従ってください。コメントを有効にします。ダッシュボードで、設定に移動してgt;議論し、[コメントを許可]チェックボックスを選択します。コメントフォームの作成:エディターで、[ブロックの追加]をクリックし、コメントブロックを検索してコンテンツに追加します。カスタムコメントフォーム:タイトル、ラベル、プレースホルダー、ボタンテキストを設定して、コメントブロックをカスタマイズします。変更を保存します:[更新]をクリックしてコメントボックスを保存し、ページまたは記事に追加します。

WordPressからサブサイトをコピーする方法WordPressからサブサイトをコピーする方法Apr 20, 2025 pm 12:12 PM

WordPressサブサイトをコピーする方法は?手順:メインサイトにサブサイトを作成します。メインサイトのサブサイトのクローニング。クローンをターゲットの場所にインポートします。ドメイン名(オプション)を更新します。個別のプラグインとテーマ。

WordPressのヘッダーの書き方WordPressのヘッダーの書き方Apr 20, 2025 pm 12:09 PM

WordPressでカスタムヘッダーを作成する手順は次のとおりです。テーマファイル「header.php」を編集します。あなたのウェブサイトの名前と説明を追加します。ナビゲーションメニューを作成します。検索バーを追加します。変更を保存して、カスタムヘッダーを表示します。

WordPressコメントを表示する方法WordPressコメントを表示する方法Apr 20, 2025 pm 12:06 PM

WordPress Webサイトでコメントを有効にします。1。管理パネルにログインし、「設定」 - 「ディスカッション」に移動し、「コメント許可」を確認します。 2。コメントを表示する場所を選択します。 3.コメントをカスタマイズします。 4.コメントを管理し、承認、拒否、または削除します。 5。use&lt;?php comments_template(); ?&gt;コメントを表示するタグ。 6.ネストされたコメントを有効にします。 7.コメントの形状を調整します。 8。プラグインと検証コードを使用して、スパムコメントを防ぎます。 9.ユーザーにGravatarアバターの使用を奨励します。 10。参照するコメントを作成します

WordPressのソースコードをアップロードする方法WordPressのソースコードをアップロードする方法Apr 20, 2025 pm 12:03 PM

WordPressからFTPプラグインをインストールし、FTP接続を構成し、ファイルマネージャーを使用してソースコードをアップロードできます。手順には、FTPプラグインのインストール、接続の構成、アップロードの場所の参照、ファイルのアップロード、アップロードが成功したことを確認します。

WordPressコードをコピーする方法WordPressコードをコピーする方法Apr 20, 2025 pm 12:00 PM

WordPressコードをコピーする方法は?管理インターフェイスからコピー:WordPress Webサイトにログインし、宛先に移動し、コードを選択し、Ctrl C(Windows)/Command C(MAC)を押してコードをコピーします。ファイルからコピー:SSHまたはFTPを使用してサーバーに接続し、テーマまたはプラグインファイルに移動し、コードを選択し、Ctrl C(Windows)/コマンドC(MAC)を押してコードをコピーします。

WordPressにエラーがある場合はどうすればよいですかWordPressにエラーがある場合はどうすればよいですかApr 20, 2025 am 11:57 AM

WordPressエラー解決ガイド:500内部サーバーエラー:プラグインを無効にするか、サーバーエラーログを確認します。 404ページが見つかりません:パーマリンクをチェックし、ページリンクが正しいことを確認してください。死の白い画面:サーバーPHPメモリ制限を増やします。データベース接続エラー:データベースサーバーのステータスとWordPress構成を確認します。その他のヒント:デバッグモードを有効にし、エラーログを確認し、サポートを求めます。エラーの防止:定期的にWordPressを更新し、必要なプラグインのみをインストールし、定期的にWebサイトをバックアップし、Webサイトのパフォーマンスを最適化します。

WordPressでコメントを閉じる方法WordPressでコメントを閉じる方法Apr 20, 2025 am 11:54 AM

WordPressでコメントをオフにする方法は?具体的な記事またはページ:編集者で議論されているコメントをuncheckします。 Webサイト全体:「設定」 - >「ディスカッション」で「コメントを許可」を解除します。プラグインの使用:コメントを無効にするなどのプラグインをインストールしてコメントを無効にします。トピックファイルを編集:comments.phpファイルを編集してコメントフォームを削除します。カスタムコード:add_filter()関数を使用してコメントを無効にします。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません