Rumah >Tutorial CMS >WordTekan >Pengenalan kepada API Filesystem WordPress

Pengenalan kepada API Filesystem WordPress

Jennifer Aniston
Jennifer Anistonasal
2025-02-17 08:38:10643semak imbas

Pengenalan kepada API Filesystem WordPress

Menulis ke fail tempatan adalah salah satu fungsi yang banyak plugin dan tema yang diperlukan untuk pelbagai tujuan. Keselamatan adalah plugin dan tema isu terpenting yang perlu dijaga semasa menulis ke sistem fail tempatan. WordPress berjalan di pelbagai perkhidmatan dan konfigurasi hosting, oleh itu menjadi sukar bagi pemaju untuk membuat plugin dan tema yang mengakses sistem fail tempatan untuk berfungsi di pelbagai persekitaran yang berbeza tanpa menjejaskan keselamatan.

Dalam tutorial ini, kami akan belajar cara menggunakan API Filesystem WordPress untuk mengakses sistem fail tempatan yang menjaga kebenaran fail yang betul. Dalam proses ini, kami akan membuat plugin yang memaparkan borang dengan Textarea di halaman admin yang menjimatkan kandungan Textarea ke fail.

Takeaways Key

API FileSystem WordPress menyediakan kaedah yang selamat untuk plugin dan tema untuk menulis ke sistem fail tempatan, secara automatik mengendalikan kebenaran fail, yang penting memandangkan pelbagai perkhidmatan hosting dan konfigurasi WordPress beroperasi di seluruh.
  • API boleh menulis ke sistem fail melalui panggilan sistem, memilih kaedah yang paling sesuai berdasarkan keizinan fail dan sambungan PHP yang tersedia. Ia juga boleh menyimpan kelayakan pengguna untuk sambungan FTP atau SSH.
  • Tutorial menunjukkan cara membuat plugin menggunakan API. Plugin memaparkan borang dalam halaman admin, menyimpan kandungan Textarea ke fail. Tutorial menyediakan kod untuk membuat fail dan direktori plugin, membuat halaman admin, dan menulis ke dan membaca dari fail.
  • Objek $ wp_filesystem, contoh kelas WP_Filesystem, mendedahkan kaedah untuk membaca, mencipta, menulis, dan memadam fail. Kaedah lain yang tersedia termasuk padam, mkdir, bergerak, saiz, dan chmod.
  • WordPress tidak menyimpan kelayakan FTP atau SSH secara kekal secara lalai, tetapi mereka boleh disimpan secara kekal menggunakan fail WP-Config.php. Ini mengelakkan keperluan untuk memasuki semula kelayakan setiap kali plugin berinteraksi dengan sistem fail.
  • Mengapa menggunakan API sistem fail WordPress?

Anda mungkin tertanya -tanya mengapa kami tidak hanya menggunakan fungsi sistem fail PHP untuk membaca dan menulis fail tempatan dan bukannya belajar dan menggunakan set API baru?

Isu menggunakan sistem fail PHP API adalah bahawa ia tidak menjaga kebenaran fail secara automatik. Katakan anda menggunakan perkhidmatan hosting bersama untuk menjadi tuan rumah laman WordPress anda dan pelayan web hosting anda berjalan sebagai akaun sistem operasi "admin". Setiap kali anda membuat fail menggunakan PHP, mereka dimiliki sebagai pengguna "Admin". Oleh itu, mana -mana laman web lain yang dihoskan dalam hosting bersama yang sama juga boleh mengakses fail laman web anda kerana mereka juga berjalan sebagai pengguna "admin", yang menimbulkan isu keselamatan ke laman web anda. Untuk melindungi kami dari isu ini, anda perlu menukar pemilik fail dan keizinan secara manual menggunakan php.

tetapi apabila anda log masuk menggunakan SSH atau FTP/SFTP untuk membuat fail maka mereka dimiliki oleh akaun pengguna sistem operasi yang anda log masuk sebagai. Jika pelayan FTP berjalan sebagai pengguna "admin" dan anda log masuk sebagai pengguna "narayanprusty", maka fail yang baru dibuat akan mempunyai pemilik sebagai "narayanprusty", bukan "admin".

WordPress memperkenalkan API Filesystem yang secara automatik boleh menjaga kebenaran fail. API sistem fail dikeluarkan dalam WordPress 2.6. WordPress sebenarnya mengeluarkannya untuk menyokong sistem kemas kini plugin, tema dan terasnya, tetapi kemudian pada plugin dan tema bermula menggunakannya untuk tujuan mereka sendiri.

bagaimana API sistem fail berfungsi?

API FileSystem boleh menulis ke sistem fail menggunakan panggilan sistem (iaitu langsung, FTP, soket FTP atau SSH2). Ia memilih salah satu kaedah berdasarkan kaedah mana yang membuat fail dengan keizinan fail yang betul dan pelanjutan PHP tersedia. API sistem fail pertama memeriksa kaedah langsung, kemudian FTP dan akhirnya SSH2.

Semasa menggunakan FTP atau SSH, anda perlu mendapatkan kelayakan dari pengguna anda. API sistem fail menyediakan fungsi menjadikannya lebih mudah untuk memaparkan borang untuk mengambil kelayakan dan menyimpannya.

Membuat fail dan direktori plugin kami

Sekarang mari kita buat plugin kami yang memaparkan tekstarea dalam halaman, di mana menyerahkan borang menyimpan kandungan Textarea ke fail tempatan.

Berikut adalah struktur direktori plugin kami:

--filesystem
	--filesystem.php
	--filesystem-demo
		--demo.txt

Buat fail dan direktori ini dalam direktori WP-Content/Plugin pemasangan WordPress anda.

Untuk membuat plugin dipasang, letakkan kod ini dalam fail 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>
Sekarang lawati panel admin anda dan pasang plugin.

Membuat halaman admin

Seterusnya kita memerlukan halaman di pentadbir kami di mana contoh kami akan tinggal. Berikut adalah kod untuk membuat halaman ini dan memaparkan Textarea. Cukup letakkan kod ini dalam fail filesystem.php:

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>
inilah cara kod berfungsi:

    Pertama kami menambah halaman ke menu "Tetapan". Demo_page adalah panggilan balik untuk memaparkan kandungan halaman.
  • Di dalam halaman kami memaparkan borang HTML dengan medan Textarea dan Nonce. Terdapat juga butang hantar untuk menghantar borang. Nama Textarea ialah File-Data. Nonce ditambah untuk menghalang serangan CSRF.
  • Apabila halaman dibuka, maka kami mengambil semula data fail yang disimpan menggunakan fungsi Read_FILE_DEMO. Apabila borang diserahkan, kami menyimpan kandungan Textarea ke dalam fail menggunakan fungsi write_file_demo.
  • jika bacaan_file_demo atau write_file_demo mengembalikan contoh objek WP_ERROR, maka kami akan memaparkan mesej ralat.
Nota, kod di atas akan memecahkan laman web WordPress anda, kerana kami belum membuat fungsi Read_FILE_DEMO dan WRITE_FILE_DEMO. Mari buat mereka sekarang!

menulis ke fail

inilah pelaksanaan fungsi write_file_demo kami:

--filesystem
	--filesystem.php
	--filesystem-demo
		--demo.txt

inilah cara kod berfungsi:

  • Pertama kita merujuk objek Global $ WP_Filesystem di dalam fungsi. Objek ini adalah contoh kelas WP_Filesystem. Ia bertanggungjawab untuk mendedahkan pelbagai kaedah untuk membaca, mencipta, menulis dan memadam fail.
  • Seterusnya, kami mencipta URL Nonce halaman borang kami dan array dengan nama medan borang kami.
  • Akhirnya, kami menyambung ke sistem fail menggunakan fungsi connect_fs.
  • connect_fs menggunakan fungsi request_filesystem_credentials yang disediakan oleh WordPress untuk mencari kaedah yang sesuai untuk menyambung ke sistem fail (Langsung, FTP atau SSH). Sekiranya FTP atau SSH ia akan menggema satu borang untuk meminta kelayakan dari pengguna. Dalam kes kaedah langsung, ia hanya mengembalikan benar.
  • Apabila borang Textarea diserahkan dan request_filesystem_credentials memilih kaedah FTP atau SSH maka kita memaparkan borang kelayakan dan menyembunyikan medan data fail dalam bentuk kelayakan.
  • request_filesystem_credentials Parameter pertama fungsi mengambil URL di mana untuk mengarahkan semula apabila ia mendapat kelayakan yang betul. Redirect adalah jenis permintaan pos. Request_filesystem_credentials Parameter terakhir adalah pelbagai nama medan untuk diposkan ke url redirect.
  • Setelah borang kelayakan dikemukakan, maka ia mengalihkan kembali ke borang asal Hantar URL dengan nama medan yang sesuai dan nilai -nilai yang dimasukkan oleh pengguna.
  • Sekali lagi, keseluruhan proses bermula dan kami melaksanakan write_file_demo. Masa ini request_filesystem_credentials mempunyai kelayakan oleh itu ia hanya akan kembali benar.
  • maka kami menggunakan $ wp_filesystem-> find_folder untuk merujuk kepada folder. Kemudian kami membina laluan lengkap fail demo.txt.
  • kami menggunakan $ wp_filesystem-> PUT_Contents untuk menulis data ke fail.

NOTA: Jika anda cuba menggunakan kaedah objek $ WP_FILESYstem tanpa meminta dan mengesahkan kelayakan maka mereka tidak akan berfungsi.

Membaca fail

di sini adalah pelaksanaan fungsi read_file_demo.

<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>

inilah cara kod berfungsi:

  • Semasa membaca fail demo.txt, kami mula -mula menyambung ke sistem fail menggunakan fungsi request_filesystem_credentials.
  • Kali ini kita tidak lulus apa -apa bidang bentuk dalam parameter terakhir kerana borang itu tidak diserahkan. Kami hanya lulus URL redirect supaya ia diarahkan semula apabila kelayakan diambil.
  • Kami kemudian menyemak sama ada fail itu menggunakan fungsi $ wp_filesystem-> wujud. Fail itu tidak wujud kita memaparkan ralat. Jika tidak, kami membaca fail menggunakan fungsi $ wp_filesystem-> get_contents dan mengembalikan kandungan.

Dengan mengandaikan WordPress telah memilih FTP sebagai kaedah yang sesuai untuk membuat fail, berikut adalah tangkapan skrin keseluruhan proses:

Pertama apabila kita membuka halaman demo kita akan melihat borang ini:

Pengenalan kepada API Filesystem WordPress

di sini, kita perlu memasukkan kelayakan FTP atau FTPS dan menyerahkannya. Sebaik sahaja kita menyerahkannya, kita akan melihat borang ini:

Pengenalan kepada API Filesystem WordPress

Textarea kosong dipaparkan. Masukkan teks "Hello World !!!" Hantar borang. Anda akan sekali lagi melihat borang kelayakan.

Pengenalan kepada API Filesystem WordPress

Anda perlu mengisi lagi kerana WordPress tidak menyimpan kata laluan FTP secara lalai (anda boleh melakukan ini di wp-config.php, lebih banyak lagi pada kemudian). Oleh itu, setiap kali plugin anda perlu bekerja dengan sistem fail, ia mesti meminta kelayakan. Kini mengemukakannya akan mengalihkan kembali ke URL Redirect dengan nama dan nilai medan yang dikemukakan sebelum ini. Inilah cara Textarea muncul:

Pengenalan kepada API Filesystem WordPress

di sini, kita membaca kandungan fail dan memaparkannya.

kaedah lain dari objek $ wp_filesystem

Objek $ wp_filesystem menyediakan banyak kaedah lain untuk melaksanakan pelbagai operasi lain pada fail dan direktori. Kami hanya melihat menulis dan membaca fail n. Anda boleh menemui keseluruhan senarai apa yang boleh anda lakukan di halaman dokumentasi WP_FILESYSTEM_BASE ().

mari kita lihat beberapa yang penting:

  • $ wp_filesystem-> Padam: Padam digunakan untuk memadam fail atau direktori. Anda perlu lulus rentetan yang mewakili jalan.
  • $ wp_filesystem-> mkdir: mkdir digunakan untuk membuat direktori. Ia mengambil rentetan yang mewakili direktori induk.
  • $ wp_filesystem-> Move: Move digunakan untuk memindahkan fail Ia memerlukan dua parameter iaitu, yang pertama adalah jalan fail dan yang kedua adalah direktori di mana untuk memindahkannya ke.
  • $ wp_filesystem-> Saiz: Saiz Mengembalikan saiz fail dalam bait. Anda perlu lulus laluan fail.
  • $ wp_filesystem-> chmod: chmod digunakan untuk menukar kebenaran fail. Ia mengambil tiga argumen iaitu, laluan fail, nombor oktal kebenaran dan boolean yang mewakili rekursi.

Anda boleh mencari kaedah sambungan yang digunakan oleh WordPress untuk mengakses sistem fail menggunakan $ wp_filesystem-> kaedah awam.

menyimpan kelayakan secara kekal

kita melihat bahawa WordPress tidak menyimpan kelayakan FTP atau SSH secara kekal. Ia tidak mesra pengguna untuk meminta butiran lagi dan lagi. Terdapat cara untuk menyimpan kelayakan secara kekal menggunakan fail WP-Config.php.

Gunakan pilihan ini untuk menyimpan kelayakan FTP dan SSH:

  • ftp_host: Nama tuan rumah pelayan.
  • ftp_user: nama pengguna untuk digunakan semasa menyambung.
  • ftp_pass: kata laluan untuk digunakan semasa menyambung
  • ftp_pubkey: Laluan kunci awam yang akan digunakan semasa menggunakan sambungan SSH2.
  • ftp_prikey: Laluan kunci peribadi yang akan digunakan semasa menggunakan sambungan SSH2.

Kesimpulan

Dalam artikel ini kita melihat proses merancang halaman admin yang mengakses sistem fail kami menggunakan API FileSystem WordPress. Sekiranya anda cuba mengakses sistem fail dalam proses latar belakang (seperti menggunakan pekerjaan cron), maka tidak mungkin untuk memaparkan borang kelayakan jika diperlukan, dalam hal ini anda perlu memastikan anda memberitahu pengguna anda Untuk meletakkan pemalar kredensial dalam fail WP-config.php. Anda boleh meneruskan dan bereksperimen lebih jauh dengan API ini dan berkongsi pengalaman anda dengan kami di bawah.

Soalan Lazim (Soalan Lazim) Mengenai WordPress Filesystem API

Apakah API Filesystem WordPress dan mengapa penting? . Ia penting kerana ia menyediakan cara yang selamat dan boleh dipercayai untuk berinteraksi dengan sistem fail pada pelayan anda. Ini penting untuk tugas -tugas seperti membuat, mengubahsuai, atau memadam fail dan direktori, memuat naik fail media, atau mengemas kini pemasangan WordPress anda. API berfungsi dengan menyediakan satu set fungsi yang boleh anda gunakan untuk berinteraksi dengan sistem fail pada pelayan anda. Fungsi -fungsi ini Abstrak Operasi Sistem Fail Asas, menyediakan antara muka yang konsisten tanpa mengira sistem operasi atau sistem fail pelayan. Ini bermakna anda boleh menggunakan fungsi yang sama untuk berinteraksi dengan sistem fail pada pelayan Linux seperti yang anda lakukan pada pelayan Windows.

Bagaimana saya boleh menggunakan API Filesystem WordPress dalam plugin atau tema saya sendiri?

Untuk menggunakan API Filesystem WordPress dalam plugin atau tema anda sendiri, anda perlu memasukkan fail 'WP-Admin/termasuk/file.php' yang mengandungi fungsi API. Selepas itu, anda boleh menggunakan fungsi API untuk berinteraksi dengan sistem fail. Sebagai contoh, anda boleh menggunakan fungsi 'wp_filesystem ()' untuk memulakan sistem fail, dan kemudian gunakan fungsi lain seperti 'get_contents ()', 'put_contents ()', atau 'memadam ()' untuk membaca, menulis, atau Padam fail.

Apakah faedah menggunakan API sistem fail WordPress melalui fungsi sistem fail php tradisional? sistem operasi atau sistem fail pelayan. Ini bermakna anda boleh menulis kod yang berfungsi pada mana -mana pelayan, tanpa perlu bimbang tentang perbezaan antara sistem fail yang berbeza. Di samping itu, API menyediakan tahap keselamatan yang lebih tinggi dengan memastikan bahawa semua operasi fail dilakukan dengan keizinan yang betul. Gunakan API Filesystem WordPress untuk memuat naik fail. API menyediakan fungsi yang dipanggil 'wp_handle_upload ()' yang mengendalikan keseluruhan proses muat naik, termasuk menyemak jenis fail, memastikan fail tidak terlalu besar, dan memindahkan fail ke direktori yang betul. Ini memudahkan untuk mengendalikan muat naik fail dengan cara yang selamat dan boleh dipercayai.

Bagaimana saya boleh mengendalikan kesilapan apabila menggunakan API sistem fail WordPress? ) 'Bahawa anda boleh gunakan untuk memeriksa sama ada fungsi telah mengembalikan ralat. Jika ralat telah berlaku, anda boleh menggunakan fungsi 'get_error_message ()' untuk mendapatkan mesej ralat yang boleh dibaca manusia. Ini menjadikannya mudah untuk mengendalikan kesilapan dan memberikan maklum balas yang berguna kepada pengguna.

Bolehkah saya menggunakan API FileSystem WordPress untuk mengubah suai fail .htaccess? Untuk mengubah suai fail .htaccess. API menyediakan fungsi yang dipanggil 'Insert_With_markers ()' yang membolehkan anda memasukkan garisan ke dalam fail .htaccess antara penanda tertentu. Ini menjadikannya mudah untuk menambah peraturan tersuai ke fail .htaccess dengan cara yang selamat dan boleh dipercayai. Ia memastikan bahawa semua operasi fail dilakukan dengan keizinan yang betul, dan ia menyediakan fungsi untuk membersihkan nama dan laluan fail. Ini membantu untuk mengelakkan isu -isu keselamatan biasa seperti serangan traversal direktori. API menyediakan fungsi yang dipanggil 'WP_MKDIR_P ()' yang mewujudkan direktori dan semua direktori induk yang diperlukan. Ini menjadikannya mudah untuk membuat struktur direktori kompleks dengan cara yang boleh dipercayai. fail dan direktori. API menyediakan fungsi yang dipanggil 'padam ()' yang boleh memadam kedua -dua fail dan direktori. Ini menjadikannya mudah dibersihkan selepas diri anda dan memastikan bahawa plugin atau tema anda tidak meninggalkan fail yang tidak perlu di pelayan.

Atas ialah kandungan terperinci Pengenalan kepada API Filesystem WordPress. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn