Rumah >Tutorial CMS >WordTekan >Plugin WordPress Boilerplate Bahagian 2: Membangunkan plugin
Artikel ini akan memberi tumpuan kepada mewujudkan dan mengaktifkan plugin, serta membangunkan fungsi admin yang menghadapi plugin. Untuk mengikuti tutorial ini, anda memerlukan pemahaman asas PHP dan WordPress, serta mempunyai pengetahuan kerja mengenai API Plugin WordPress.
Takeaways Key
Menyediakan boilerplate
Kepala ke laman web Generator Boilerplate Plugin WordPress dan isi borang dengan nilai yang sesuai. Mari kita hubungi plugin kami "Notis Luar Biasa". Berikut adalah borang sampel dengan medan yang diisi.
Saya menggunakan URL khayalan untuk URL plugin yang menghubungkan ke repositori rasmi. Jangan terlalu bimbang tentang perkara ini kerana kita sentiasa boleh mengubah suai di header plugin.
Klik butang "Bina" dan anda perlu mendapatkan salinan yang disesuaikan dengan boilerplate plugin WordPress.
Arkib zip yang dihasilkan akan mengandungi dua direktori, aset dan batang yang dijangkakan. Kami tidak akan menggunakan laluan Symlink dalam memasang plugin kami, jadi ekstrak folder batang di dalam arkib dan salin ke dalam Direktori WP-Content/Plugins.
kita masih perlu menamakan semula dengan sewajarnya untuk mengelakkan konflik penamaan dengan plugin lain, jadi kami akan menamakan semula direktori batang ke notis ketinggalan zaman.
Jika anda kini pergi ke bahagian "Plugin Pemasangan" di WP-Admin, cukup pasti, anda akan melihat plugin anda ada dalam senarai plugin yang dipasang tetapi belum diaktifkan. Penjana boilerplate plugin tidak mengubah apa-apa berkaitan dengan penerangan plugin jadi jika kita mahu mengubahnya, kita hanya boleh mengedit keterangan dalam fail plugin utama, dalam kes kita, ketinggalan zaman.
Menambah halaman pilihan
Singkatnya, kami akan membenarkan pengguna memilih di mana notis akan muncul, sama ada sebelum kandungan pos atau selepas kandungan pos. Setakat bilangan ambang hari, pengguna boleh menetapkan bilangan hari sebelum jawatan dianggap ketinggalan zaman. Menggunakan sekeping maklumat itu, kami akan mengubah kelas notis secara dinamik supaya kami dapat menggayakannya secara berbeza dari jawatan yang masih dianggap segar.
mari kita mulakan dengan menambahkan halaman pilihan untuk plugin kami.
Buka kelas-shoudated-notice-admin.php di dalam folder admin anda. Kami perlu mengubah suai kelas ini untuk membolehkan kami mendaftarkan halaman tetapan untuk plugin kami. Tambahkan kaedah awam ini ke arah akhir kelas.
Satu perkara yang perlu diperhatikan ialah kerana kita menggunakan kelas untuk menentukan cangkuk kita, kita perlu lulus array dalam bentuk array (
Kami belum selesai! Seperti yang dapat kita lihat, add_options_page memerlukan fungsi panggil balik yang sah, yang belum ditakrifkan dalam kelas usang_notice_admin kami. Mari tambahkannya. Ini sepatutnya cukup mudah kerana kita akan menggunakan yang disediakan untuk notice-admin-display.php yang disediakan dalam folder Admin/Partials kami. Oleh itu, semua yang perlu kita lakukan untuk fungsi panggilan balik kami ialah memasukkan fail itu.
<span>/** </span><span> * Add an options page under the Settings submenu </span><span> * </span><span> * <span>@since 1.0.0 </span></span><span> */ </span> <span>public function add_options_page() { </span> <span>$this->plugin_screen_hook_suffix = add_options_page( </span> <span>__( 'Outdated Notice Settings', 'outdated-notice' ), </span> <span>__( 'Outdated Notice', 'outdated-notice' ), </span> <span>'manage_options', </span> <span>$this->plugin_name, </span> <span>array( $this, 'display_options_page' ) </span> <span>); </span> <span>}</span>
yang harus melakukannya. Perkara terakhir yang perlu kita lakukan sekarang ialah memuatkannya dengan betul menggunakan kelas loader yang disediakan di dalam boilerplate. Buka kelas-out-notice.php anda dalam folder termasuk dan tambahkan cangkuk tambahan yang kami tentukan lebih awal di dalam kaedah define_admin_hooks. Cangkuk tindakan yang betul untuk dimasukkan ke dalam halaman pilihan kami adalah admin_menu jadi mari tambahkannya.
<span>/** </span><span> * Render the options page for plugin </span><span> * </span><span> * <span>@since 1.0.0 </span></span><span> */ </span> <span>public function display_options_page() { </span> <span>include_once 'partials/outdated-notice-admin-display.php'; </span> <span>}</span>
Anda kini harus melihat submenu "notis ketinggalan zaman" tambahan di bawah tetapan. Anda boleh mengakses halaman pilihan kosong dengan pergi ke url http: //
Ini adalah halaman kosong buat masa ini, jadi mari kita mulakan mengisi fail separa dengan markup yang betul.
Halaman API Tetapan di WordPress Codex memberikan penjelasan yang baik tentang cara mendaftarkan tetapan kami sendiri, termasuk memaparkannya pada halaman pilihan.
Berikut adalah pecahan apa yang akan kita lakukan dalam bahagian ini:
mari kita pergi melalui semua langkah satu demi satu.
Untuk mendaftarkan bahagian tetapan, kita perlu menggunakan fungsi register_set. Cangkuk yang betul untuk memulakan fungsi itu adalah admin_init. Oleh itu, pertama -tama kita akan menambah cangkuk lain ke dalam loader boilerplate untuk mendaftarkan tetapan kami di dalam kaedah define_admin_hooks kelas boilerplate utama kami, kelas ering_notice.
<span>$this->loader->add_action( 'admin_menu', $plugin_admin, 'add_options_page' );</span>
Untuk membuat perkara lebih mudah dan memberikan jenis nama asas kepada nama pilihan kami, kami akan menambah pemboleh ubah peribadi lain di atas kelas ini. Letakkan coretan ini di atas kelas ering_notice_admin.
<span>$this->loader->add_action( 'admin_init', $plugin_admin, 'register_setting' );</span>
mulai sekarang, kita akan menyediakan nilai ini kepada apa -apa yang berkaitan dengan pilihan kami.
perkara seterusnya adalah untuk benar -benar mendaftarkan bahagian Tetapan, medan Tetapan dan tetapan individu. Buka kelas ering_notice_admin sekali lagi dan tambahkan kaedah awam daftar_setting ke dalamnya.
Di dalam kaedah pendaftaran awam, kami akan mendaftarkan bahagian tetapan. Saya tidak akan menyelidiki terlalu banyak fungsi dan API untuk melakukan ini kerana Codex telah memberikan maklumat yang cukup untuk bermula. Oleh kerana tetapan plugin kami agak mudah, kami akan mendaftarkan hanya satu bahagian.
coretan ini akan membolehkan kami mendaftarkan bahagian "umum" untuk halaman pilihan kami menggunakan fungsi add_settings_section.
<span>/** </span><span> * Add an options page under the Settings submenu </span><span> * </span><span> * <span>@since 1.0.0 </span></span><span> */ </span> <span>public function add_options_page() { </span> <span>$this->plugin_screen_hook_suffix = add_options_page( </span> <span>__( 'Outdated Notice Settings', 'outdated-notice' ), </span> <span>__( 'Outdated Notice', 'outdated-notice' ), </span> <span>'manage_options', </span> <span>$this->plugin_name, </span> <span>array( $this, 'display_options_page' ) </span> <span>); </span> <span>}</span>
Perhatikan bahawa kami telah mendahului nama seksyen kami dengan pembolehubah $ option_name untuk mengelakkan konflik dengan plugin lain. Panggilan balik boleh digunakan untuk memberikan maklumat tambahan mengenai bahagian kami, yang mana yang kami mahukan.
kami akan menambah kaedah awam yang lain, usia usang_notice_general_cb yang akan menggema maklumat asas mengenai bahagian ini.
<span>/** </span><span> * Render the options page for plugin </span><span> * </span><span> * <span>@since 1.0.0 </span></span><span> */ </span> <span>public function display_options_page() { </span> <span>include_once 'partials/outdated-notice-admin-display.php'; </span> <span>}</span>
Bahagian seterusnya API Tetapan yang perlu kita gunakan adalah untuk mendaftarkan medan sebenar yang akan diberikan pada halaman Pilihan. Ini boleh dicapai menggunakan fungsi add_settings_field.
Kami akan menggunakan butang radio untuk konfigurasi kedudukan teks. Ini dilakukan dengan menambahkan kod ini ke fungsi register_set yang kita ada.
<span>$this->loader->add_action( 'admin_menu', $plugin_admin, 'add_options_page' );</span>
kita perlu memastikan bahawa hujah kelima add_settings_field akan menunjuk ke bahagian tetapan yang betul yang kami daftarkan sebelum atau kami mungkin tidak melihat medan pada halaman pilihan kami.
Ini belum dilakukan. Kami perlu menyediakan fungsi panggil balik yang akan menjadikan markup sebenar untuk butang radio kami. Dalam fungsi kami_NOTICE_POSITION_CB kami, kita perlu memasukkan blok kod ini:
<span>$this->loader->add_action( 'admin_init', $plugin_admin, 'register_setting' );</span>
Pilihan kedua untuk ambang hari boleh dikonfigurasikan menggunakan input teks biasa. Oleh itu, kami akan mendaftarkan bidang tetapan lain:
<span>/** </span><span> * The options name to be used in this plugin </span><span> * </span><span> * <span>@since 1.0.0 </span></span><span> * <span>@access private </span></span><span> * <span>@var <span>string</span> $option_name Option name of this plugin </span></span><span> */ </span> <span>private $option_name = 'outdated_notice';</span>
Sekali lagi, kita juga perlu menyediakan fungsi panggil balik yang akan menjadikan medan teks kami.
<span>// Add a General section </span> <span>add_settings_section( </span> <span>$this->option_name . '_general', </span> <span>__( 'General', 'outdated-notice' ), </span> <span>array( $this, $this->option_name . '_general_cb' ), </span> <span>$this->plugin_name </span> <span>);</span>
Akhir sekali, kita perlu mendaftarkan nama pilihan yang akan kita gunakan supaya ia dapat diiktiraf dalam WordPress. Oleh kerana kami menggunakan dua nama pilihan yang berbeza, usang_notice_position dan usang_notice_day, kami akan mendaftarkannya kedua -duanya menggunakan fungsi register_set.
<span>/** </span><span> * Render the text for the general section </span><span> * </span><span> * <span>@since 1.0.0 </span></span><span> */ </span> <span>public function outdated_notice_general_cb() { </span> <span>echo '<p>' . __( 'Please change the settings accordingly.', 'outdated-notice' ) . '</p>'; </span> <span>}</span>
Perhatikan bahawa parameter ketiga untuk fungsi register_setting adalah panggilan balik sanitisasi. Walaupun ia adalah pilihan, ia sentiasa berguna untuk memastikan nilai input dibersihkan sebelum disimpan ke pangkalan data.
Untuk sanitisasi hari, kami akan menggunakan fungsi PHP terbina dalam, Intval kerana ia cukup dalam kes kami. Bagi kedudukan notis teks, kami akan menentukan fungsi panggilan balik sanitisasi kami sendiri, yang hanya akan membolehkan nilai -nilai tertentu disimpan ke dalam pangkalan data. Ini amat berguna apabila berurusan dengan pilihan yang terhad kepada nilai tertentu, seperti dalam kes ini di mana kita hanya menerima dua nilai, yang sebelum dan selepas, jadi panggilan balik sanitisasi kita perlu memastikan bahawa jika nilai itu bukan salah satu daripada Ini, ia tidak akan diselamatkan ke dalam pangkalan data.
Berikut adalah fungsi panggilan balik sanitisasi yang mudah untuk mencapai itu:
<span>/** </span><span> * Add an options page under the Settings submenu </span><span> * </span><span> * <span>@since 1.0.0 </span></span><span> */ </span> <span>public function add_options_page() { </span> <span>$this->plugin_screen_hook_suffix = add_options_page( </span> <span>__( 'Outdated Notice Settings', 'outdated-notice' ), </span> <span>__( 'Outdated Notice', 'outdated-notice' ), </span> <span>'manage_options', </span> <span>$this->plugin_name, </span> <span>array( $this, 'display_options_page' ) </span> <span>); </span> <span>}</span>
Selepas kami selesai dengan mendaftarkan semua tetapan yang berkaitan, sekarang kami perlu memastikan halaman pilihan kami memberikan dengan betul. Oleh kerana kami menggunakan cara WordPress untuk mendaftarkan bidang dan tetapan kami, tugas ini sangat mudah.
Buka Notice-Admin-display.php yang sudah lapuk di dalam folder Admin/Partials. Berikut adalah cara kami boleh menjadikan halaman pilihan berdasarkan tetapan yang telah kami daftarkan sebelum ini.
<span>/** </span><span> * Render the options page for plugin </span><span> * </span><span> * <span>@since 1.0.0 </span></span><span> */ </span> <span>public function display_options_page() { </span> <span>include_once 'partials/outdated-notice-admin-display.php'; </span> <span>}</span>
Dengan kombinasi mudah DO_SETTINGS_SECTIONS dan Fungsi Tetapan_Fields, halaman pilihan anda dilakukan dalam masa yang singkat.
mari kita berehat dan muat semula halaman pilihan.
Cuba isi beberapa nilai dan simpan borang. Anda harus mendapatkan notis "Tetapan disimpan." Tetapi nothings berlaku. Biarkan cuba lakukan var_dump untuk kedua -dua pilihan kami. Letakkan ini di suatu tempat dalam fungsi yang berkaitan.
<span>$this->loader->add_action( 'admin_menu', $plugin_admin, 'add_options_page' );</span>
kita harus mendapatkan beberapa nilai dari pangkalan data, seperti contoh di bawah:
<span>$this->loader->add_action( 'admin_init', $plugin_admin, 'register_setting' );</span>
Ini bermakna bentuk kami berfungsi dengan baik, jadi satu -satunya perkara yang perlu dilakukan adalah untuk memaparkan nilai semasa dalam medan teks, dan pastikan butang radio yang betul diperiksa.
mari kita menangani butang radio terlebih dahulu. Sebagai jalan pintas, kami hanya akan menggunakan fungsi yang diperiksa oleh WordPress untuk menandakan nilai yang dipilih sebelum ini. Kami sudah ketinggalan zaman_notice_position_cb kami memerlukan beberapa pengubahsuaian.
Berikut adalah coretan yang dikemas kini untuk panggilan balik.
<span>/** </span><span> * The options name to be used in this plugin </span><span> * </span><span> * <span>@since 1.0.0 </span></span><span> * <span>@access private </span></span><span> * <span>@var <span>string</span> $option_name Option name of this plugin </span></span><span> */ </span> <span>private $option_name = 'outdated_notice';</span>
Sekarang, apabila kita menukar nilai sama ada bidang, ia akan dicerminkan dengan betul dalam halaman pilihan.
Ini tidak lengkap. Kami sentiasa dapat memperbaiki fungsi admin yang menghadapi plugin ini. Beberapa perkara yang boleh saya fikirkan ialah:
kami telah membuat plugin dengan fungsi asas pentadbir asas dengan mendaftarkan tetapan yang berkaitan, dan membuat halaman pilihan untuk pengguna menyesuaikan plugin kami. Dalam masa yang agak singkat menggunakan boilerplate plugin WordPress, kami mencapai ini tanpa menjejaskan kualiti kod dan masih mematuhi amalan terbaik seperti yang disyorkan oleh WordPress.
Tinggal untuk bahagian seterusnya siri di mana kami akan melakukan sisi awam yang menghadap plugin untuk memaparkan notis yang sesuai di dalam kandungan pos.
Untuk menambah fungsi khusus admin ke plugin anda, anda boleh menggunakan kelas dan kaedah yang disediakan dalam direktori admin plugin boilerplate plugin WordPress. Direktori ini merangkumi kelas untuk membuat halaman pentadbir, menambah bidang tetapan, dan penyerahan borang pengendalian. Plugin, anda boleh menggunakan kelas dan kaedah yang disediakan dalam direktori awam dari boilerplate plugin WordPress. Direktori ini merangkumi kelas untuk skrip dan gaya enqueuing, dan untuk memaparkan kandungan yang dihadapi awam.
Atas ialah kandungan terperinci Plugin WordPress Boilerplate Bahagian 2: Membangunkan plugin. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!