Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. WordPress
Code

Aksi dan Penapis WordPress: Apa Perbezaannya?

by
Length:LongLanguages:

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

Tindakan dan penapis cangkuk adalah bahagian asas dari pelbagai API WordPress.  Tanpa mereka, anda menjadi terhad kepada apa yang boleh anda lakukan dalam tema anda dan (terutamanya) plugin anda.

Tetapi kadang-kadang mudah untuk menyalahkan kedua-dua mereka, terutamanya dalam kes di mana WordPress mempunyai cangkuk tindakan dan penapis cangkuk dengan nama yang sama.

Dalam artikel ini saya akan menentukan cangkuk tindakan dan cangkuk penapis dan menggambarkan perbezaan antara keduanya, dan saya akan menunjukkan kepada anda cara menggunakannya dalam tema dan plugin anda.  Saya juga akan memberikan beberapa contoh apabila anda boleh menggunakan setiap cangkuk.

Apabila anda menambah tindakan dan menapis cangkuk ke kod anda (atau anda mengaitkannya dengan fungsi), adalah baik untuk memahami bagaimana tindakan dan penapis dipanggil oleh WordPress dan apa yang berlaku, dalam urutan apa.  Saya tidak akan membincangkannya secara terperinci di sini kerana kita mempunyai tutorial lain yang akan melakukan tugas itu.

Definisi dan Perbezaan

Mari kita mulakan dengan beberapa definisi.  Saya akan menentukan cangkuk tindakan dan penapis cangkuk dan berfungsi juga, supaya anda dapat melihat perbezaan di antara mereka semua. Cangkuk dan penapis cangkuk

Fungsi

Fungsi adalah perkara pertama yang kebanyakan orang lakukan apabila mereka mempelajari perkembangan WordPress; jika anda telah menambah kod ke fail functions.php tema anda, maka anda telah menulis fungsi.

Fungsi menentukan bagaimana sesuatu akan berlaku.  Anda menyandikan fungsi untuk pertanyaan data, untuk menghasilkan kandungan, atau untuk melaksanakan banyak tugas lain.  Anda boleh memanggil fungsi terus pada fail templat tema anda, atau anda boleh menyambungkannya ke kait tindakan dan cangkuk penapis.  Fungsi juga boleh menyertakan tag templat seperti tag bersyarat, untuk menentukan bila fungsi itu perlu digunakan.

Saya akan menunjukkan kepada anda pelbagai cara untuk menjalankan fungsi ini di dalam artikel ini.

Cangkuk Tindakan

Cangkuk tindakan (atau tindakan) dicetuskan apabila sesuatu berlaku, seperti memuatkan halaman, pengguna log masuk, atau tindakan tersuai yang anda tetapkan dalam tema atau plugin anda.

Anda boleh menambah cangkuk tindakan anda sendiri menggunakan fungsi do_action () , yang akan saya tunjukkan dengan segera.  Setiap fungsi yang anda kaitkan dengan tindakan itu akan dijalankan pada ketika itu di dalam kod.

Penapis cangkuk

Penapis cangkuk, atau penapis, mengawal bagaimana perkara berlaku atau mengubah sesuatu yang telah menjadi hasilnya.  Anda boleh menggunakan penapis untuk menghasilkan metadata dalam format tertentu untuk menimpa hasil teks oleh pemalam anda, atau untuk menghalang sesuatu daripada dipaparkan.

Anda menambah penapis dalam kod anda menggunakan fungsi apply_filters () , yang akan saya tunjukkan dengan segera.  Memandangkan perkataan 'apply' menunjukkan anda menggunakan penapis pada kod yang ada, sementara tindakan yang anda buat menggunakan do_action () kosong sehingga anda menyambungkan fungsi tersebut.

Menggunakan Fungsi, Tindakan, dan Penapis

Mari lihat beberapa contoh yang menunjukkan bagaimana anda menggunakan setiap fungsi, tindakan, dan penapis.  Pertama, kita akan melihat penggunaan fungsi secara langsung dalam kod anda tanpa mengikatnya ke cangkuk.

Fungsi panggilan terus

Berikut adalah contoh fungsi yang dipanggil secara langsung dalam fail templat.  Di tapak klien saya, saya menambahkan colophon di footer, yang merangkumi maklumat hak cipta.  Berikut adalah fungsi:

Fungsi ini adalah pluggable seperti yang saya gunakan dalam tema ibu bapa;jika saya kemudian membuat fungsi baru dengan nama yang sama dengan tema anak saya, maka ia akan menggantikan fungsi ini.  Perhatikan bahawa fungsi itu termasuk fungsi lain, compass_colophon () , memanggilnya secara langsung dalam kod.

Fungsi ini berada di fail functions.php utama utama saya.  Saya boleh terus memanggil fail footer.php dari tema saya, seperti:

Ia memaparkan kod dalam fungsi pada satu titik dalam tema saya di mana saya memanggilnya.  Anda juga boleh lulus parameter untuk fungsi anda, yang kemudiannya digunakan di dalam fungsi tersebut.

Seperti yang akan saya tunjukkan tidak lama lagi, fungsi ini juga boleh dikaitkan dengan tindakan atau penapis.

Fungsi Hooking terhadap Tindakan

Daripada memanggil fungsi colophon secara langsung, saya akan menjadikannya lebih fleksibel jika saya melekatkannya ke cangkuk.

Buat Cangkuk Tindakan

Daripada memanggil fungsi compass_colophon () dalam fail footer saya, saya boleh menambah cangkuk tindakan pada masa itu dalam fail footer.php , dengan menambah ini:

Fungsi do_action () mempunyai satu parameter wajib, iaitu nama tindakan. Anda juga boleh menambah hujah kepadanya.

Menggalakkan fungsi terhadap tindakan

Jadi sekarang, daripada memanggil fungsi colophon saya, saya perlu menyambungkannya ke cangkuk tindakan baru saya.  Dalam fail functions.php saya menambah kepada fungsi saya:

Ia mengaitkan fungsi saya dengan tindakan compass_in_footer , yang bermaksud kod di dalam fungsi saya akan berjalan pada titik dalam kod di mana tindakan itu telah dilakukan.  Parameter pertama adalah nama aksi tindakan, dan yang kedua adalah nama fungsi saya.

Kelebihan melakukannya dengan cara ini ialah anda boleh menyambung lebih daripada satu fungsi ke tindakan yang sama, dan anda boleh menetapkan keutamaan untuk bekerja mengikut urutan yang anda inginkan.

Oleh itu katakan saya mempunyai fungsi lain yang saya mahu mengaitkan dengan cangkuk compass_in_footer saya, yang disebut compass_smallprint () , yang mengandungi beberapa cetakan kecil lagi:

Anda boleh lihat di sini bahawa saya telah menambah parameter ketiga untuk fungsi add_action () , yang merupakan keutamaan.  Keutamaan adalah 10,yang akan digunakan jika anda membiarkannya kosong.  Oleh kerana saya tidak menetapkan keutamaan untuk fungsi compass_colophon () , menetapkan 20 untuk fungsi compass_smallprint () akan menjadikan fungsi berjalan selepas fungsi compass_colophon ().

Fungsi Tidak Menyukai dari Tindakan

Kadang-kadang anda mahu menghentikan fungsi daripada berjalan, dan anda tidak boleh mengganti ia kerana ia tidak pluggable.  Sekiranya fungsi telah disambungkan kepada tindakan tindakan, maka anda boleh melakukannya menggunakan fungsi remove_action () .

Jadi jika saya ingin mengelakkan fungsi compass_smallprint () saya berjalan, saya mengeluarkannya dari tindakan compass_in_footer seperti:

Fungsi remove_action () mempunyai tiga parameter: nama tindakan cangkuk, nama fungsi, dan keutamaan di mana fungsi permulaan dikaitkan dengan tindakan tersebut.  Anda mesti memasukkan keutamaan agar kerja ini berfungsi.

Anda juga boleh melepaskan semua fungsi tindakan jika anda ingin menghalangnya daripada melaksanakan.  Berhati-hati apabila berbuat demikian, kerana mungkin terdapat fungsi yang tidak anda ketahui berkaitan dengan tindakan anda.

Untuk melakukan ini, gunakan fungsi remove_all_actions () :

Menambah nombor keutamaan sebagai parameter kedua hanya membuang fungsi yang berkaitan dengan cangkuk tindakan dengan keutamaan yang anda tetapkan, yang memberikan anda lebih banyak kawalan.

Fungsi Hooking terhadap Penapis

Anda juga mempunyai pilihan untuk mengaitkan fungsi anda untuk menapis cangkuk.  Anda melakukan ini apabila anda mahu menukar atau menggantikan beberapa kod yang sedia ada.  Apabila anda membuat penapis cangkuk (menggunakan fungsi apply_filters () , anda membungkus kod sekitar tema atau plugin anda, yang kemudiannya diubahsuai oleh penapis yang disambungkan ke cangkuk.

Ini berguna jika anda mempunyai pilihan tema atau plugin yang anda mahu ganti dengan tetapan lalai, atau jika anda membuat tema ibu bapa yang mungkin mempunyai elemen yang digantikan oleh tema kanak-kanak. 

Membuat Cangkuk Penapis

Fungsi apply_filters () mempunyai tiga parameter: nama penapis cangkuk, nilai yang anda ingin penapis (iaitu nilai lalai), dan pembolehubah pilihan anda kemudian lulus ke fungsi yang disambungkan ke penapis.

Anda boleh menambah penapis ke fail templat tema anda atau di dalam fungsi yang disambungkan melalui cangkuk tindakan.  Mari lihat kedua-dua pilihan.

Kembali ke fungsi compass_colophon () saya, saya mengubahnya menjadi penapis dengan menambahkan kandungannya ke fail footer.php saya di dalam fungsi apply_filters () seperti:

Ia memaparkan kod yang telah saya tetapkan sebagai parameter kedua fungsi apply_filters () .

Walau bagaimanapun, saya lebih suka untuk tidak menambahnya terus ke fail templat tema saya, jadi saya akan menambah penapis ke fungsi yang telah saya sambungkan melalui cangkuk tindakan.

Jadi saya menambah tindakan compass_in_footer ke fail footer.php saya menggunakan fungsi do_action () seperti yang ditunjukkan di atas, dan kemudian saya mencipta fungsi dalam fail functions.php yang disambungkan ke tindakan itu dan mengandungi penapis:

Ini bermakna saya kini boleh menggantikan kandungan lalai dalam salah satu daripada tiga cara:

  • dengan mewujudkan fungsi baru yang disebut compass_colophon () dalam tema anak saya, yang menggantikan fungsi tema ibu bapa saya kerana ia adalah pluggable.
  • dengan membuang fungsi compass_colophon () dari sudut action hook kompas compass_in_footer dan menulis fungsi baru yang saya pasang di tempat itu.
  • dengan mencipta fungsi baru yang kemudian saya compass_colophon_filter berkait dengan penapis corong compass_colophon_filter , yang menggantikan nilainya dalam fungsi apply_filters () .

Dalam kehidupan sebenar, anda tidak perlu mempunyai banyak pilihan ini, jadi kemungkinan anda akan menggunakan penapis ke bahagian kandungan fungsi anda dan bukan keseluruhannya.

Jadi saya boleh membuat dua penapis, satu untuk hak cipta dan satu untuk kredit:

Kemudian saya boleh menggantikan semua fungsi compass_colophon saya dengan mengeluarkan atau menulis tema baru dalam tema anak saya, atau saya boleh membuat fungsi yang berkaitan dengan compass_copyright_filter atau compass_credits_filter untuk mengatasi setiap elemen secara berasingan.

Fungsi Hooking terhadap Penapis

Untuk mengaitkan fungsi ke add_filter () penapis, anda menggunakan fungsi add_filter () , yang mempunyai dua parameter: nama hook dan nama fungsi.

Jadi untuk menukar kredit, saya akan menulis fungsi ini:

Ia mengatasi nilai yang dinyatakan dalam penapis corong compass_credits_filter asal saya dengan kandungan fungsi new_credits () , tetapi menyimpan segala yang lain dalam fungsi compass_colophon () untuk tetap sama.

Anda juga boleh menentukan keutamaan apabila mengaitkan fungsi kepada penapis dengan cara yang sama seperti dengan cangkuk tindakan.  Fungsi dengan keutamaan yang lebih rendah akan dijalankan terlebih dahulu.

Fungsi Tidak Menyukai dari Penapis

Seperti dengan cangkuk tindakan, anda juga boleh mengeluarkan fungsi dari penapis cangkuk.  Anda melakukan ini dengan menggunakan fungsi remove_filter () , yang mempunyai tiga parameter: nama penapis cangkuk, nama fungsi, dan keutamaan, yang diperlukan jika keutamaan ditetapkan apabila fungsi pada mulanya disambungkan ke penapis. 

Jadi untuk mengalih keluar fungsi new_credits () saya, saya menggunakan ini:

Keluaran kod kemudian akan kembali kepada nilai yang saya nyatakan dalam fungsi apply_filters() asal saya apply_filters() .  Jadi, jika saya ingin memadamkan fungsi new_credits () dan membuat apa-apa kelihatan di tempat, saya perlu menambah fungsi baru.  Saya kemudian memutuskan fungsi pertama dan mengaitkan fungsi baru saya seperti:

Ringkasan

Memahami perbezaan antara cangkuk tindakan dan cangkuk penapis dan dapat menggunakan kedua-duanya secara berkesan akan memberi perkembangan tema dan plugin anda.  Sebenarnya, tanpa menggunakan sekurang-kurangnya satu jenis cangkuk, anda tidak boleh menulis plugin sama sekali, kerana satu-satunya cara kod dalam plugin anda diaktifkan adalah melalui cangkuk tindakan dan penapis itu dilampirkan.

Panduan ini menunjukkan cara untuk menambah fungsi yang sama dengan menggunakan fungsi, cangkuk tindakan dan satu atau lebih penapis cangkuk, bersama-sama dengan teknik untuk menghapus fungsi dari cangkuk dan cadangan kerana setiap teknik lebih berguna. 

Serta mengaitkan fungsi dengan tindakan anda sendiri dan penapis cangkuk yang anda buat, anda boleh memautnya ke tindakan dan penapis yang disediakan oleh WordPress, seperti tindakan wp_head atau penapis body_class .

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.