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

Menggunakan Namespaces dan Autoloading dalam Plugin WordPress, Bahagian 1

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Using Namespaces and Autoloading in WordPress Plugins.
Using Namespaces and Autoloading in WordPress Plugins, Part 2

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

Namespaces dan autoloading bukan topik yang lazim dibincangkan ketika bekerja dengan plugin WordPress.

Sebahagian daripada ini mempunyai kaitan dengan komuniti yang ada di sekelilingnya, beberapa perkara ini berkaitan dengan versi PHP yang menyokong WordPress, dan sebahagian daripadanya hanya berkaitan dengan hakikat bahawa tidak ramai yang bercakap mengenainya.

Dan tidak mengapa, setakat ini.

namespaces dan autoloading tidak adalah topik yang benar-benar perlu digunakan untuk membuat plugin. Walau bagaimanapun, mereka dapat menyediakan cara yang lebih baik untuk menyusun dan menyusun kod anda serta memotong jumlah permintaan, require_once, termasuk, atau include_once yang digunakan oleh plugin anda.

Dalam siri ini, kita akan melihat tepat apa namespaces PHP, mengapa mereka bermanfaat, dan bagaimana menggunakannya. Kemudian kami akan melihat cara menggunakan autoloader untuk memuatkan fail yang kami perlukan secara automatik tanpa perlu memuatkan secara manual dalam kode kami.

Sebelum Kami Mulakan

Untuk memulakan, anda memerlukan alat berikut:

  • Persekitaran pembangunan tempatan yang merangkumi PHP 5.6.20, pelayan web Apache, dan pelayan pangkalan data MySQL.
  • Satu direktori di mana WordPress 4.6 sedang dihoskan.
  • Editor teks atau IDE pilihan anda yang anda selesa gunakan untuk menulis plugin.
  • Pengetahuan kerja API Plugin WordPress.

Sebaik sahaja anda mendapat semua itu, mari kita mulakan untuk membina plugin. Perhatikan bahawa jika mana-mana perkara di atas kelihatan baru kepada anda, maka jangan teragak-agak untuk menyemak mana-mana tutorial saya sebelum ini di halaman profil saya.

Tambahan pula, anda boleh mengikuti saya di blog saya dan/atau Twitter di @tommcfarlin di mana saya bercakap tentang pembangunan perisian dalam konteks WordPress.

Dengan itu, mari kita mulakan.

Apa yang Kami Akan Bina

Dalam siri ini, kami akan membina sebuah plugin mudah terutamanya untuk menunjukkan bagaimana namespaces dan kerja autoloading dalam PHP. Tetapi untuk melakukan itu, ia sentiasa membantu untuk menerapkan konsep dengan cara yang praktikal.

Untuk itu, kami akan membina sebuah plugin yang menjadikannya mudah untuk memuat gaya stylesheets dan gaya JavaScript dalam plugin kami, dan yang memaparkan kotak meta yang mendorong pengguna dengan soalan untuk membantu mereka merangsang sesuatu tentang blog.

Tidak, ini bukan sesuatu yang anda mungkin tunduk kepada Repositori Plugin WordPress, ataupun sesuatu yang mungkin anda gunakan di luar demo tertentu ini. Tetapi ingat, tujuan siri ini adalah untuk menunjukkan bagaimana namespaces dan kerja autoloading.

Dan ia melalui contoh ini bahawa kita akan melakukan perkara itu.

Membina Plugin

Sekiranya anda mengikuti mana-mana tutorial terdahulu saya, maka anda tahu salah satu perkara yang saya suka lakukan ialah merancang apa yang akan kita bina sebelum kita melompat apa-apa kod. Jadi untuk lelaran pertama plugin ini, inilah yang kita tahu yang perlu kita lakukan:

  1. Tentukan fail bootstrap untuk memulakan plugin.
  2. Sediakan direktori untuk semua fail yang akan menyebabkan kotak meta.
  3. Buat direktori untuk perumahan kelas yang akan memuatkan dependencies kami.
  4. Sediakan stylesheets dan JavaScript untuk plugin kami.

Nampaknya langsung, kan? Jika tidak, jangan risau. Saya akan memandu anda melalui keseluruhan proses yang lengkap dengan kod, komen, tangkapan skrin dan penjelasan.

Mari kita mulakan.

Mewujudkan Direktori Plugin

Dari awal, kita tahu bahawa kita akan memerlukan fail yang berfungsi sebagai bootstrap untuk plugin. Kami juga tahu bahawa kami memerlukan direktori untuk fungsi pentadbiran.

Mari kita teruskan dan buat sekarang sekarang:

The plugins initial directory structure

Jelas sekali, kami mempunyai fail kosong tunggal dan direktori admin. Mari maju dan sediakan plugin ini supaya ia muncul dalam konteks skrin pengaktifan Plugin WordPress.

Untuk melakukan ini, kita perlu menambah kod blok berikut ke bahagian atas fail plugin:

Kemudian, apabila anda menavigasi ke Halaman Plugin WordPress di kawasan pentadbiran, anda harus melihatnya muncul dalam senarai pemalam anda. Jika anda memilih untuk mengaktifkannya, tiada apa yang akan berlaku kerana kami tidak menulis sebarang kod.

The Tuts Namespace Demo plugin in the WordPress administration area

Pada ketika ini, kita boleh meneruskan dan mula mendefinisikan kelas yang akan menjadikan kotak meta kami pada halaman Tambah New Post.

Menambah Kotak Meta

Bahagian tutorial ini akan menganggap bahawa anda agak mahir dalam membuat kotak meta. Jika tidak, jangan teragak-agak untuk mengkaji semula konsep-konsep dalam siri ini dan kemudian kembali ke bahagian ini sebaik sahaja selesai.

Pertama, mari buat fail bernama class-meta-box-display.php dalam direktori admin plugin kami. Kod harus termasuk yang berikut. Pastikan anda menyemak ulasan untuk memastikan anda memahami segala-galanya bahawa kelas ini bertanggungjawab untuk dilakukan.

Dari kod di atas, anda harus dapat memastikan bahawa kelas ini akan bertanggungjawab untuk memaparkan kandungan di dalam kotak meta. Walau bagaimanapun, buat masa ini, kami hanya mengulangi pernyataan untuk melihatnya.

Kami akan mengubahnya kemudian dalam tutorial ini.

Seterusnya, kita perlu memperkenalkan kelas yang mewakili kotak meta itu sendiri. Jadi buat fail  class-meta-box.php dalam direktori admin plugin kami. Berikut adalah kod untuk melakukannya dengan tepat. Sekali lagi, semak semula kod itu dan kemudian saya akan menerangkan apa yang berlaku di bawah kelas:

Kelas ini mengekalkan atribut tunggal yang merujuk kepada paparannya. Ini bermakna bahawa kelas ini bertanggungjawab untuk menentukan kotak meta (yang seterusnya, menyeru objek paparan untuk memberi mesej).

Paparan dipelihara sebagai harta persendirian yang ditetapkan dalam pembina. Kotak meta sebenarnya tidak ditakrifkan sehingga kaedah init dipanggil (yang akan kita lihat dalam bootstrap plugin kemudian dalam tutorial).

Pada ketika ini, kami mempunyai segala-galanya yang kami perlukan untuk memaparkan kotak meta asas pada Tambah Halaman Post Baru. Tetapi pertama, kita perlu menyediakan bootstrap plugin kami.

Dalam tutorial terdahulu, saya telah melakukan ini banyak supaya saya akan memasukkan hanya kod yang diperlukan (kerana saya telah menentukan tajuk di atas). Saya telah menambah komen, tetapi saya juga akan memastikan untuk menerangkan apa yang berlaku selepas kod.

Ini khusus berkaitan kerana autoloader kami akhirnya menafikan keperluan untuk beberapa perkara yang akan anda lihat.

Pertama, kami pastikan fail ini tidak boleh diakses secara langsung dan ia hanya boleh dijalankan oleh WordPress sendiri.

Seterusnya, kami include_once kelas yang telah kami buat setakat ini. Seterusnya, kami memberi contoh Meta_Box dan lulus contoh Meta_Box_Display dalam pembinanya.

Akhirnya, kita panggil kaedah init yang tinggal di kelas Meta_Box.

Dengan mengandaikan semuanya berjalan lancar, kita seharusnya dapat mengaktifkan plugin dan melihat kotak meta pada halaman Add New Post (atau, benar-benar, halaman Post Kemas Kini  juga).

Our Meta Box appearing on the New Post Edit Post page

Pada ketika ini, kami mempunyai plugin berfungsi, tetapi ia tidak melakukan apa-apa selain membuat kotak meta dan memaparkan rentetan teks.

Mari kita sekurang-kurangnya mendapatkannya untuk memaparkan sebut harga inspirasi dan memaparkan satu rawak setiap kali halaman dimuatkan.

Memaparkan Petikan Inspirasi

Pertama, kita perlu mencari fail teks petikan inspirasi. Untungnya, Internet menyediakan pelbagai jenis ini yang boleh kita gunakan dalam projek kami (dan mereka boleh didapati secara bebas). Untuk itu, saya telah mencipta subdirektori data dalam admin yang saya gunakan untuk menempatkan fail questions.txt saya.

The questionstxt file in the data subdirectory

Seterusnya, kita perlu membuat kelas yang akan:

  1. Buka fail.
  2. Baca garis rawak ke rentetan.
  3. Tutup fail.
  4. Kembalikan rentetan kepada pemanggil.

Mari kita pergi dan buat kelas sekarang. Kerana ini adalah utiliti dan ia akan digunakan di bahagian pentadbiran plugin, mari kita buat subdirektori util di admin. Seterusnya, mari buat fail bernama class-question-reader.php.

Kami akan menentukan kod untuk kelas ini dalam seketika, tetapi kembali ke fail bootstrap plugin dan ingat untuk menyertakan fail. Kod yang dihasilkan harus kelihatan seperti ini:

Seperti yang anda dapat lihat, bilangan fail yang kami perlu sertakan secara manual semakin lama. Bayangkan jika kami menggunakan plugin besar! Walau bagaimanapun, kami akan kembali ke sini dalam siri ini.

Buat masa ini, mari kita kembali perhatian kepada pembaca soalan. Kod untuk kelas harus kelihatan seperti ini:

Perhatikan bahawa kod untuk ini agak mudah, tetapi jika anda tidak biasa dengan beberapa operasi fail asas dalam PHP, inilah yang kami lakukan:

  1. Kami membuka fail menggunakan fopen, yang akan memberikan kami sumber untuk membaca fail tersebut.
  2. Seterusnya, kami membaca kandungan fail dan kemudian mengambil setiap baris fail dan menulisnya ke indeks array.
  3. Selepas itu, kami memilih nombor rawak dari pelbagai soalan dan mengembalikannya kepada kaedah yang memanggilnya. Jika ia mengembalikan rentetan kosong, kita melihat semula sehingga soalan terletak.
  4. Kemudian, kami menutup sumber ke fail tersebut.

Pada akhirnya, untuk menggunakan kelas ini, anda hanya perlu menyatakannya, ketahui laluan ke fail penuh soalan, dan kemudian panggil kaedah get_question_from_file.

Nota: Kelas ini tidak melakukan pengendalian ralat. Itu amalan biasa apabila bekerja dengan fail. Contohnya, apa yang perlu dilakukan jika fail itu tidak wujud? Apa yang perlu dilakukan jika ia tidak diformat dengan betul, atau bagaimana jika kami gagal menutup sumber?

Semua ini adalah soalan yang baik, tetapi mereka berada di luar skop tutorial ini. Semua maklumat ini boleh didapati dalam manual PHP (dan mungkin beberapa tutorial lain merentasi rangkaian Envato Tuts).

Buat masa sekarang, walaupun, kami mengambil berat tentang membaca fail yang kami tahu wujud, dan kami bimbang dengan memaparkan hasilnya dalam kotak meta.

Apa yang Kita Terlalu Banyak

Pada ketika ini, kita boleh mula meletakkan semuanya bersama-sama. Dengan mengandaikan kami telah melakukan semuanya dengan betul, kami sepatutnya dapat lulus contoh Question_Reader ke Meta_Box_Display, minta persoalan, dan kemudian memaparkannya di dalam kotak meta.

Pertama, mari kita kemas kini fail bootstrap:

Dalam kod di atas, perhatikan bahawa Meta_Box_Display kini menerima contoh pembaca soalan ke dalam pembangunnya. Ini bermakna kita perlu memperkenalkan harta baru, yang akan kita lakukan sekarang:

Perhatikan bahawa fail ini menggunakan laluan kepada soalan-soalan yang fail ditambahkan ke subdirektori data. Selain jalan yang dikodekan dengan keras, kelas ini juga bergantung pada contoh Question_Reader.

Untuk tujuan demo yang kami sedang berusaha ke arah (iaitu, ruang nama dan autoloading), tidak mengapa. Dalam projek masa depan, kami ingin projek-projek itu mempunyai kurang gandingan di kalangan mereka. Mungkin ini akan menjadi topik untuk tutorial masa depan.

Pengambilalihan utama dari kod di atas, bagaimanapun, adalah bahawa kelas Meta_Box_Display kini boleh memaparkan soalan kepada pengguna.

Selanjutnya, perhatikan penggunaan wp_kses demi membersihkan data sebelum menyampaikannya kepada pengguna.

Menyegarkan halaman Add New Post akan membentangkan anda dengan imej seperti ini:

Random questions appearing in a meta box

Dan jika anda memuat semula halaman maka anda dapat melihat soalan baru yang dimuatkan.

Di manakah kita pergi dari sini?

Jelas sekali, kami belum lagi mengatasi topik ruang nama dan autoloading, tetapi tidak mengapa! Penting untuk meletakkan asas untuk plugin yang tidak menggunakannya. Dengan cara itu, apabila kita melaksanakannya, kita dapat melihat manfaat yang mereka bawa.

Selain itu, kami masih mempunyai beberapa kerja tambahan yang perlu dilakukan: Kami perlu memperkenalkan JavaScript dan CSS dan aset loader. Ini akan membolehkan kita mendapatkan gambaran yang lebih luas tentang bagaimana pembungkusan fail kami ke dalam ruang nama bermanfaat.

Ingat, anda boleh mencari semua tutorial saya sebelum ini di halaman profil saya, dan anda boleh mengikuti saya di blog atau Twitter.

Seperti biasa, jika anda mencari utiliti lain untuk membantu anda membina set alat anda yang semakin berkembang untuk WordPress atau kod contoh untuk belajar dan menjadi lebih pandai dalam WordPress, jangan lupa untuk melihat apa yang kami ada di  Pasar Envato.

Dengan kata itu, kami akan mempunyai versi kerja plugin yang sedia untuk dimuat turun bermula dari tutorial seterusnya dalam siri ini. Jika anda ingin menggunakan kod dalam tutorial di atas, jangan teragak-agak untuk mencuba dan berbuat demikian. Selain itu, jangan ragu untuk bertanya apa-apa soalan dalam komen.

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.