Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress Plugins
Code

Mewujudkan Halaman Pentadbiran WordPress Custom, Bahagian 4

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Creating Custom WordPress Administration Pages.
Creating Custom WordPress Administration Pages, Part 3

Malay (Melayu) translation by Aisyah Arrafah (you can also view the original English article)

Semasa kita memulakan artikel akhir dalam siri ini untuk membuat laman pentadbiran WordPress tersuai di WordPress, saya fikir penting untuk menegaskan bahawa ini tidak dimaksudkan untuk mengatakan bahawa kita harus mengelakkan API Tetapan (atau mana-mana API asli).

Malah, setiap API mempunyai tempatnya, dan kami jelas menggunakan banyak daripada mereka melalui kod ini Tetapi mungkin ada masa di mana anda bekerja pada plugin tersuai atau aplikasi tersuai dan anda perlu melaksanakan sedikit pengesahan peribadi anda sendiri, penyusunan, penghalaan, dan sebagainya.

Dan itulah yang kami lakukan sepanjang siri ini. Oleh itu, apabila kita melangkah maju dalam menyelesaikan plugin kami, saya ingin memastikan bahawa anda memahami saya tidak menyokong mengelakkan sebarang API asli. Saya menganjurkan menggunakan API yang tersedia untuk keperluan projek anda.

Untuk Semakan Anda

Pada ketika ini, saya menganggap anda terperangkap dengan artikel sebelumnya. Jika tidak, anda mungkin akan mempunyai pemahaman yang sukar di mana kami datang dan mengapa kami membuat beberapa keputusan yang kami buat kerana ia berkaitan dengan kod.

Tambahan pula, anda akan terlepas beberapa prinsip yang telah dibincangkan sebelumnya Pendek kata, saya mengesyorkan menangkap dan kemudian kembali ke artikel ini.

Sebelum Kami Mulakan

Dengan itu (dan bercakap tentang keperluan), hanya ada beberapa perkara yang perlu kita bungkus kerana ia berkaitan dengan plugin ini.

Khususnya, kita perlu:

  • dapatkan maklumat dari pangkalan data
  • mengesahkan maklumat
  • memaparkannya di papan pemuka
  • memaparkan maklumat di bahagian hadapan

Untungnya, majoriti kerja telah dilakukan untuk kami. Kami mempunyai semua maklumat yang kami perlukan dalam pangkalan data. Pada ketika ini, ia adalah satu perkara yang memperkenalkan fungsi yang akan melakukan sesuatu dengan data itu.

Seperti biasa, saya menganggap bahawa anda mempunyai versi terbaru kod sumber dan anda bersedia untuk meneruskan siri ini sambil menambah kod baki yang tinggal.

Dengan itu, mari kita mulakan.

Menyediakan Plugin

Sebelum kita mula menulis kod, saya ingin menjelaskan bahawa kod yang akan kita tulis adalah mudah, tetapi ada tahap refactoring yang mungkin perlu kita peroleh sebaik sahaja kita dapat membuat maklumat yang tersedia pada kedua-dua back-end dan front-end.

Itulah perkara yang baik.

Bukan sahaja ia memberi kita peluang untuk berfikir secara kritis mengenai organisasi kod kami, tetapi ia juga akan mendedahkan kami kepada beberapa teknik berorientasikan objek tambahan yang belum kita lihat sepanjang siri tutorial setakat ini.

Dengan itu, mari kita bawa maklumat tersebut dari pangkalan data.

Dapatkan Maklumat Dari Pangkalan Data

Mendapatkan maklumat dari pangkalan data adalah proses yang mudah. Memandangkan kami pernah bekerja dengan fungsi seperti update_option, ini sepatutnya sangat mudah.

Kami akan bekerjasama dengan get_option. Ia hanya memerlukan hujah tunggal, dan itu adalah ID atau kunci yang kami gunakan untuk menyimpan maklumat tersebut. Dalam kes kita, itu tutsplus-adat-data. Jika anda ingin mendapatkan kreatif, anda boleh lulus hujah kedua pilihan yang akan dikembalikan jika maklumat itu tidak dijumpai.

Demi menunjukkan bagaimana ini boleh digunakan, saya akan mempunyai fungsi mengembalikan rentetan kosong supaya kita mempunyai sesuatu yang sah untuk dipaparkan kepada pengguna (walaupun tidak ada). Coretan kod untuk melakukan ini kelihatan seperti ini:

Tetapi ini menimbulkan dua soalan:

  1. Di manakah ini (terutamanya jika kita akan membuat ini dalam dua tempat dalam plugin)?
  2. Bukankah seharusnya kita mengesahkan maklumat ini?

Kami akan melihat soalan pertama sedikit kemudian dalam tutorial. Pertama, mari bercakap mengenai pengesahan.

Mengesahkan Maklumat

Ada banyak yang boleh dikatakan mengenai pengesahan di WordPress. Tetapi untuk memastikan tutorial ini secepat mungkin, kami akan bercakap mengenai pengesahan input. Lagipun, kami berurusan dengan input pengguna melalui elemen masukan, jadi masuk akal.

Anda boleh membacanya dalam Codex, tetapi pengesahan masukan sering ditakrifkan sebagai berikut:

Pengesahan data adalah proses memastikan bahawa program beroperasi pada data yang bersih, betul dan berguna.

Dalam artikel terakhir, kami membincangkan topik sanitasi, yang pada asasnya memastikan data bersih sebelum dimasukkan ke pangkalan data. Begitu juga, pengesahan memastikan bahawa ia bersih, selamat, dan boleh dibaca untuk pengguna kami.

Untuk itu, tidak cukup untuk merebut maklumat daripada pangkalan data. Kita perlu mengesahkannya, juga. Dalam kes plugin kami, data itu cukup sederhana yang mungkin kelihatan seperti berlebihan untuk mengesahkannya; Walau bagaimanapun, tujuan latihan ini adalah untuk membantu mengembangkan pemikiran bagaimana kita perlu membersihkan, menyimpan, mengambil, mengesahkan, dan memaparkan data.

Pengesahan Teknikal

Dan sama halnya dengan sanitasi, WordPress menawarkan beberapa fungsi yang memudahkan pengesahan, terutama kerana ia berkaitan dengan pengesahan masukan. Dalam keadaan ini, kita boleh menjadi agresif seperti yang kita suka.

Dalam kes kita, ia mungkin cukup untuk menggunakan esc_attr ketika membuat pilihan. Jika kami membenarkan pengguna memasukkan sebarang jenis HTML, kami mungkin mahu menggunakan wp_kses.

Fungsi yang terakhir ini mungkin memerlukan satu tutorial sendiri, terutamanya jika anda baru untuk WordPress, jadi kami akan melekat dengan yang pertama untuk tujuan kami.

Deserialization

Terdahulu dalam projek ini, kami mencipta kelas khusus untuk menyimpan maklumat ke pangkalan data. Kami memanggil Serializer kelas ini. Bagi mereka yang tidak ingat apa yang mereka lakukan:

  • Kelas menentukan fungsi yang menyala di cangkerang admin_post dan menyimpan maklumat yang dihantar ke pelayan.
  • Fungsi ini mengesahkan bahawa maklumat adalah selamat untuk disimpan dan pengguna mempunyai kebenaran untuk menyimpan ke pangkalan data.
  • Fungsi ini membersihkan data dan menulisnya ke pangkalan data.

Tetapi kita tidak mahu membebani kelas dengan tanggungjawab yang tidak masuk akal. Dan kerana kami akan memaparkan maklumat ini pada halaman pilihan dan bahagian depan laman web, ia akan memberi alasan bahawa kami mempunyai kelas untuk menghendaki nilai dan menjadikannya boleh diakses oleh seluruh aplikasi WordPress.

Jadi dalam akar direktori plugin anda, buat direktori kongsi dan tambahkan fail bernama class-deserializer.php.

The shared directory for our deserializer

Seterusnya, kami mahu kod kami ditubuhkan supaya ia:

  • berdasarkan prinsip berorientasikan objek
  • mendapatkan kembali maklumat yang diminta
  • mengesahkan maklumat
  • mengembalikannya kepada pemanggil

Untuk tujuan itu, rangka awal kelas mungkin kelihatan seperti ini:

Ia mudah, pasti. Kami akan menambahkan lebih banyak kod kepadanya sepanjang tutorial ini, tetapi ingat prinsip tanggungjawab tunggal, dan ini adalah kelas yang mesti digunakan di antara dua bahagian aplikasi WordPress.

Perhatikan bahawa dalam kod di atas, kami telah menentukan tiga fungsi. Mari kita bincangkan apa yang akan dilakukan setiap orang:

  • get_value akan menggunakan kekunci pilihan masuk yang, dalam kes kami adalah tutsplus-custom-data, dan akan mengembalikan nilai kepada pemanggil. Mengikut Piawaian Pengekodan WordPress, kita perlu menggunakan "lewat melarikan diri" untuk memastikan kami mengesahkan maklumat dengan betul. Translation service is temporarily unavailable

Dengan mengatakan itu, ayo kita lanjutkan dan hentikan fungsinya. I'll also provide PHP DocBlocks to explain what each function does.

Pada titik ini, kode di atas harus mudah diikuti mengingat poin bullet di atas dan komentar di dalam kode.

Tampilkan di Halaman Pilihan

Untuk menunjukkan ini pada halaman pilihan, kami perlu menyemak semula cara kami menyerahkan Submenu_Page dalam fail custom-admin-settings.php. Khususnya, kita perlu membuat instantiate deserializer dan lulus ke dalam pembina Submenu_Page.

Pertama, kita perlu memasukkan fail itu. Ini boleh berlaku sebaik sahaja kami menyemak untuk melihat sama ada fail plugin utama diakses terus:

Kod dalam fungsi utama akar plugin kini akan kelihatan seperti ini:

Dan kemudian pembina untuk Submenu_Page harus kelihatan seperti ini:

Dari sini, kita boleh menangani halaman pilihan. Kami hanya mengemas kini atribut nilai dengan membuat panggilan ke fungsi dalam deserializer. Ingat, kerana kami tanpa syarat mendapatkan kembali nilai itu dan akhirnya mengembalikan satu tali kosong jika tidak ada, ia sepatutnya berfungsi dengan baik.

Dan dengan itu, anda sepatutnya dapat menyimpan dan mengambil semula nilai anda pada halaman pilihan.

Tunjukkan Ia di Hujung Depan

Kami hampir selesai. Perkara terakhir yang perlu kita lakukan adalah memasang plugin untuk memaparkan mesej tersuai di bahagian hadapan. Khususnya, kami ingin memaparkan apa sahaja yang telah dimasukkan pengguna pada halaman pos tunggal (berbanding laman arkib atau halaman jenis lain) dan untuk melakukannya di atas setiap pos.

Ini bermakna kita perlu melakukan perkara berikut:

  • Sediakan fungsi yang akan menggunakan cangkuk the_content.
  • Baca nilai menggunakan deserializer kami.
  • Sediakan nilai sebelum kandungan (mungkin dalam elemennya sendiri).

Nasib baik, tidak banyak kerja, terutamanya kerana kita mempunyai banyak kerja yang perlu kita mulakan. Walau bagaimanapun, kita perlu mewujudkan kawasan plugin yang bertanggungjawab khusus untuk mengendalikan bahagian depan laman web ini.

Untuk tujuan itu, buat direktori awam di akar direktori plugin anda dan tambah kelas-kandungan-messenger.php.

The public directory with our Content Messenger

Di dalam kelas, kita perlu menentukan pembina yang akan menerima deserializer sebagai kebergantungan. Pembina (dan harta yang diperlukan) sepatutnya kelihatan seperti ini:

Kemudian kita perlu mencipta fungsi init yang akan mendaftarkan fungsi dalaman (yang akan kita paparkan paparan) untuk memberikan kandungan bersama dengan mesej baru.

Selepas itu, kami perlu mengemas kini fail plugin utama supaya ia meniru kelas baru kami dan melepasi deserializer kepada pembina. Kemudian ia akan memulakan kelas.

Pertama, kami akan menyertakannya:

Lalu kita akan instantiate itu:

Dari sini, kita perlu bersedia untuk pergi. Pastikan anda telah memasukkan nilai pada halaman pilihan. Simpan kerja anda dan lihat halaman pos tunggal di tapak anda. Ia sepatutnya kelihatan seperti ini:

The message displayed above the post

Jika tidak, bandingkan kod anda dengan apa yang di atas (atau yang dilampirkan) dan pastikan anda telah menetapkan semua kelas, fungsi, dan cangkuk anda dengan betul.

Satu Perkataan Mengenai Pandangan dan Ketergantungan

Walaupun kami telah membincangkan prinsip tanggungjawab tunggal dalam siri ini, kami sebenarnya tidak banyak bercakap mengenai topik yang lebih maju yang boleh kami gunakan untuk menjadikan kod itu lebih bersih dan mengikut amalan yang lebih baik.

Antara topik ini termasuk perkara-perkara seperti autoloading PHP dan perkara-perkara seperti Ketergantungan Suntikan. Saya tidak bercakap mengenai perkara ini kerana mereka berada di luar fokus utama dan titik utama siri ini bertujuan untuk mengajar.

Bergantung kepada bagaimana siri ini diterima, saya akan mempertimbangkan untuk membuat beberapa tutorial khusus mengenai topik ini.

Kesimpulan

Dan dengan itu, kami menyimpulkan siri untuk membuat halaman pentadbiran tersuai. Saya harap, sepanjang siri ini, anda telah mempelajari beberapa perkara di luar cara standard untuk membuat halaman pentadbiran.

Di samping itu, saya harap anda telah melihat bagaimana anda boleh menggunakan beberapa teknik pembangunan perisian dalam kerja harian anda dengan WordPress. Lebih-lebih lagi, saya berharap perbincangan mengenai pandangan dan ketergantungan telah mencetuskan minat dalam topik yang lebih maju juga. Ini adalah perkara-perkara yang saya harap dapat meliputi dalam tutorial masa depan, juga.

Seperti biasa, anda boleh melihat kursus dan tutorial saya di halaman profil saya, dan anda boleh mengikuti saya di blog saya dan / atau Twitter di @tommcfarlin di mana saya bercakap tentang pelbagai amalan pembangunan perisian dan bagaimana kita boleh menggunakannya di WordPress.

Jangan lupa untuk memuat turun kod pada bar sisi paparan ini, tinjau, bermain-main dengannya, dan lihat apa yang boleh anda lakukan untuk memperluasnya dan tambahkan fungsi anda sendiri. Seperti biasa, jangan ragu untuk menghubungi saya melalui komen mengenai tutorial.

sumber

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.