Lazy Load Images - Plugin Lazy Load untuk WordPress. Cara Terbaik untuk Mengizinkan Plugin untuk Aplikasi PHP Plugin php yang lamban

  • 20.06.2020

File fungsi adalah asisten yang menghibur dalam memperluas fungsionalitas situs! terutama jika digunakan untuk tujuan yang dimaksudkan - namun, banyak pemilik blog / situs yang hebat dalam mengubah functions.php menjadi kata kunci.

Dalam bisnis apa pun, ada kebijaksanaan dan batasan (pembatasan, seringkali logis), dan oleh karena itu beberapa kode yang dapat dieksekusi dirancang untuk menyesuaikan parameter inti WP (bukan tema), lebih tepat untuk mengeluarkan templat ...

Ketika percakapan adalah tentang memodernisasi fungsionalitas situs, di baris artikel "tanpa plugin ..." sangat disarankan untuk memasukkan semua blok kode ke functions.php yang legendaris. Itu tidak benar!

Lebih logis untuk mentransfer semua ekstensi teknis murni (tidak terkait langsung dengan gaya templat) ke dalam plugin yang diatur untuk pendaftarannya.

Mari kita ciptakan! dan juga berbicara tentang pro dan kontra (yang jauh lebih sedikit) ...


Bagian artikel:

cara membuat plugin Anda

dari teks di bawah ini, kita akan belajar cara membuat plugin Anda sendiri dengan tangan Anda sendiri: kami akan memahami semua detail, nuansa. Kami akan mencari tahu apa pro dan kontra (ada lebih sedikit kontra !! dan lebih tepatnya, ini bukan kontra sama sekali, tetapi satu atau lain kebijaksanaan untuk setiap administrator)

apa perbedaan antara file functions.php dan plugin?

Mengapa beberapa kode yang terkait langsung dengan fungsionalitas situs harus dipindahkan ke plugin terpisah?

File fungsi itu sendiri, tujuan dan konsistensinya tidak berbeda dengan plugin (hanya plugin dalam tema))! - tugas utamanya adalah memperkaya templat (aktif) tertentu dengan fungsionalitas yang bermanfaat.

Misalnya, "navigasi", di mana, secara logis, menu tombol ditata dengan CSS sesuai dengan gaya tema aktif - mungkin lebih tepat untuk membiarkannya di root template.

Apa manfaatnya - untuk membagi file fungsi menjadi file terpisah, atau plugin terpisah?

Misalnya, yang paling umum - Anda memutuskan untuk mengubah template !? ... akibatnya, semua pengembangan fungsional akan hilang, karena semua kode yang berguna terletak di file fungsi (saya pernah melihat ukuran file seperti itu 750KILO)

Tentu saja, Anda dapat mentransfer dokumentasi fungsi ke topik baru, tetapi yang terpenting, tanpa pengeditan yang menghabiskan banyak waktu, Anda tidak dapat melakukannya: monyet dan pekerjaan)

Lalu:

urutan memuat file situs

Secara singkat: urutan memuat file inti situs dalam contoh kami adalah sebagai berikut - plugin aktif situs (dari folder plugins) dan kontennya dimuat sedikit lebih awal, dan hanya kemudian file functions.php dengan kontennya diproses. Semuanya dalam milidetik, dan hampir tidak ada gunanya berbicara serius tentang mendapatkan kecepatan halaman itu sendiri.

Meskipun, tampaknya salah satu alasan untuk urutan pemuatan seperti itu dibuat oleh pengembang, di mana tempat kedua diberikan kepada file fungsi (seperti agaknya elemen yang lebih ringan), hanya fakta dari meluasnya penggunaan plugin, seringkali konten yang masif ...

Seseorang akan berseru: plugin lain ...? sulit!

Dan saya katakan, itu tidak akan mempengaruhi kecepatan apa pun ... sebaliknya - sebaliknya, jika Anda mendekati pembuatan situs dengan serius.

Selain itu, manfaat mentransfer beberapa kode terlihat jelas di sisi lain, yaitu, kecepatan memuat situs tidak bergantung pada jumlah plugin yang aktif, tetapi pada kontennya! Jadi mengapa tidak mengecilkan file fungsi, yang, sebagaimana disebutkan, dimuat sedikit kemudian ..? dan juga merupakan PLUGIN tingkat template besar yang lengkap! Jadi, di mana sebagian besar kodenya?

Menurut pendapat saya, templat (aktif, berfungsi) seharusnya hanya berisi parameter spesifiknya.

tamasya ke aritmatika ...

  1. dimuat kemudian, pertanyaannya adalah mengapa tidak memindahkannya ke tempat pemrosesan kode dilakukan terlebih dahulu, dan, karenanya, penyesuaian parameter inti WP yang ditentukan oleh admin akan dibaca lebih cepat dan diproses pada tahap peluncuran situs yang sesuai ?
  2. kemanfaatan terkenal dan organisasi logis dari fungsionalitas situs.
  3. kenyamanan, yang tidak penting!

Selain itu, seperti yang dikatakan, file fungsinya adalah plug-in yang sama - sekali lagi saya akan bertanya, mengapa memasukkan semua yang Anda dapatkan ke dalamnya? dan dalam proses bekerja dengan situs menjadi bingung dalam dokumen kode besar yang sulit dibaca, yang, omong-omong, membengkak secara luar biasa dan tidak dapat dibenarkan oleh isinya.

Lebih mudah dan lebih logis untuk membuat plugin yang ringan, mengonfigurasi, dan melupakan ...

Singkatnya, setiap orang memutuskan untuk dirinya sendiri: apakah akan mendengarkan pengalamannya sendiri, atau pendapat penulis artikel pendidikan tertentu.

Sedangkan pembelajaran mengikuti di perpustakaan WordPress, tetapi tidak menurut artikel ... dari artikel dimungkinkan untuk mengumpulkan hanya satu ide atau yang lain ...

Entah bagaimana, Pak)

... bagi yang berminat :

Anda dapat mempelajari semua aturan kernel (dan, omong-omong, urutan pemuatan direktori kernel)) dengan cara yang luar biasa di kode WordPress.

... di salah satu artikel berikut, topik-beaker seperti itu! ... dan link ke halaman yang berguna.


! .. dengan berlangganan pembaruan situs -
... berpisah dengan ketidaktahuan..!

cara membuat plugin file functions.php tambahan

Plugin yang dimaksud, tentu saja, adalah solusi sederhana, tetapi studinya harus dimulai dari awal!

Selain itu, untuk mencapai tujuan yang diambil dalam artikel, tidak diperlukan plugin yang kuat!

Buka panel kontrol host (atau FTP) dan buka pengelola file.

Buka folder plugins dan buat direktori lain di dalamnya (folder untuk file plugin kami). Benar-benar nama apa pun, dalam bahasa Latin. Saya memiliki nama "test" sebagai contoh.

Harap dicatat bahwa nama plugin di panel admin akan sama dengan yang tertulis di header informasi Nama Plugin: test (lihat komentar).

Buka folder yang dibuat dan buat file plugin utama di dalamnya:

... dengan nama, ucapkan my-functions.php dan tambahkan baris seperti itu ke tubuhnya (dan nama file bisa apa saja)

Baris di komentar - informasi tentang plugin yang akan muncul di panel admin (menu plugin).

Segera setelah membuat folder dan file, plugin Anda akan muncul di panel admin. Lihatlah.

Sebagai mantan, Anda dapat mengaktifkannya untuk sementara waktu - tetapi tidak ada yang terjadi, plugin masih menganggur.

Itu saja!! sebuah plug-in sederhana telah dibuat dan, yang luar biasa, dengan tangannya sendiri dan untuk keuntungannya sendiri (seperti yang biasa dikatakan kucing Matroskin).

Saat ini, tirai pertunjukan jatuh ...
... debu sedih jatuh di landai ...

Dan omong-omong, film yang bermanfaat dari seri "tanpa plugin" - lihat, pikirkan apakah kode yang diusulkan dalam video harus dibiarkan di file fungsi ??

Tentunya, Anda telah berulang kali menemukan fakta bahwa Anda perlu menambahkan beberapa kode untuk situs WordPress Anda untuk menambahkan fungsionalitas baru. Saya tidak berbicara tentang skrip analitik Google yang Anda masukkan ke bagian header tema Anda sekarang. Tidak. Saya berbicara tentang potongan kode kecil yang Anda temukan di forum di Internet dan segera berlari untuk menambahkannya ke file Anda function.php.

Jujur saja, Anda pernah melakukan ini setidaknya sekali, bukan? Dan ini bisa dimengerti, karena ditulis di forum - tambahkan kode ini ke functions.php tema WordPress Anda.

Sebenarnya, menambahkan setiap kode yang Anda temukan di internet ke functions.php adalah tidak selalu merupakan ide yang bagus... Solusi yang lebih aman adalah dengan membuat plugin mini kustom Anda sendiri dengan kode ini.

Dalam tutorial ini, kami akan memberi tahu Anda dalam hal apa Anda dapat menambahkan kode ke functions.php, dan di mana lebih baik menggunakan plugin terpisah. Kami juga akan menunjukkan kepada Anda bagaimana Anda dapat membuat plugin khusus sendiri dan menambahkan kode Anda ke dalamnya.

Apa itu function.php?

Jika Anda pernah menggulir file situs WordPress Anda, Anda mungkin menemukan beberapa file functions.php. File functions.php yang akan kita bicarakan dalam tutorial ini terletak di folder: wp-contentthemesyour_themefunctions.php.

Jelas, ini adalah file yang sama yang menyimpan semua fungsi dan pengaturan untuk tema khusus Anda, saat ini aktif... Perhatikan kata "aktif", karena ini akan menjadi pesan utama dari pelajaran ini.

Mengapa selalu menggunakan function.php merupakan ide yang buruk?

Jangan salah paham, sangat normal menggunakan function.php untuk potongan kecil kode dalam beberapa baris. Kita berbicara tentang fakta bahwa tidak diinginkan untuk menggunakan functions.php sebagai repositori untuk semua yang Anda tambahkan kode. Ini bukan solusi satu ukuran untuk semua untuk setiap situasi.

Alasan #1.

Jika pembaruan dirilis untuk tema Anda, Anda akan kehilangan semua yang Anda tambahkan di file functions.php. Saya tahu apa yang baru saja Anda pikirkan - tetapi apakah ada hanya untuk situasi seperti itu?

Tentu saja memiliki. Namun banyak juga yang belum mengetahui apa itu child theme. Atau ada orang yang meminta Anda untuk membantu menambahkan potongan kode ke tema mereka.

Oleh karena itu, alasan ini ada dalam daftar ini. Jika Anda menambahkan kode ke functions.php tanpa menggunakan tema anak, ini adalah panggilan bangun pertama Anda.

Alasan #2.

Meskipun Anda telah mengonfigurasi dan menggunakan tema anak dengan benar. Apa yang terjadi jika Anda ingin beralih ke tema desain yang berbeda? Saya harap Anda menambahkan komentar untuk setiap perubahan yang Anda buat di file functions.php Anda, karena tanpa itu, beralih ke topik lain akan sangat menyakitkan. Saya pikir Anda mendapatkan ide.

Alasan nomor 3.

Jika Anda menambahkan kode ke functions.php yang secara tidak terduga merusak situs Anda dan Anda melihat layar putih kosong - Anda akan memerlukan klien FTP untuk mengunggah function.php yang "rusak", mengeditnya dan mengunggahnya kembali ke situs. Seperti kesenangan untuk dirinya sendiri.

Kapan harus menggunakan function.php

Menggunakan function.php dengan benar untuk tema anak yang saat ini aktif adalah opsi yang valid. Tapi ingat, saya fokus pada kata ini " aktif"?

Jika Anda menambahkan potongan kode yang hanya akan masuk akal saat bekerja dengan tema khusus ini, maka Anda dapat dengan aman menggunakan functions.php (dalam tema anak). Berikut adalah beberapa contoh di mana ini mungkin sesuai:

  • Menambahkan stylesheet lain (.css) untuk tema Anda
  • Ubah panjang kutipan posting untuk membuat situs terlihat lebih baik
  • Menambahkan font khusus untuk tema saat ini
  • Menambahkan file lokalisasi untuk menerjemahkan tema saat ini

Dengan kata lain, setiap kali Anda menambahkan atau mengubah apa pun yang terkait dengan tema tertentu saat ini, jangan ragu untuk menggunakan functions.php.

Kapan lebih baik melakukannya tanpa function.php

Menggunakan function.php untuk menambahkan lebih banyak hal dan fungsi global yang secara teoritis dapat berguna bagi Anda untuk tema lain adalah ide yang buruk.

Berikut adalah beberapa contoh kapan lebih baik melakukannya tanpa functions.php:

  • Membuat widget khusus yang akan sering Anda gunakan
  • Membuat kode pendek khusus
  • Menambahkan kode tema-independen (kode Google Analytics, dll.)

Dalam kasus seperti itu, yang terbaik adalah menyimpan kode ini terlepas dari tema Anda. Dan Anda dapat melakukannya dengan plugin khusus.

Anda sekarang berpikir - bingung tentang pembuatan plugin, kapan Anda bisa mengedit functions.php? Ini terlalu sulit! Percayalah, ini tidak terjadi. Ini dilakukan dengan sangat cepat dan mudah.

Cara mengatur plugin khusus alih-alih functions.php

Untuk membuat plugin khusus Anda sendiri untuk menyimpan kode Anda, Anda perlu:

  1. Buat file teks dengan kode Anda dan simpan sebagai file .php
  2. Kemas file .php yang dihasilkan ke dalam arsip .zip
  3. Instal arsip ini sebagai plugin WordPress biasa di menu Plugin → Tambah Baru

Itu saja, hanya 3 tindakan.

Langkah 1. Buat file .php dengan kode Anda

Buka Notepad di komputer Anda dan rekatkan teks berikut:

Anda tentu saja dapat menggunakan nama Anda untuk plugin di baris Nama Plugin:

Simpan file dan beri nama yang unik agar WordPress tidak membingungkan plugin Anda dengan yang sudah diinstal. Misalnya: wpcafe-custom-functions.php.

Ya, jangan lupa untuk memilih jenis file "Semua file" dan tambahkan ekstensi .php saat menyimpan:

Langkah 2. Buat arsip .zip

Saya pikir tidak perlu ada penjelasan di sini. Cukup buat arsip .zip dengan file Anda menggunakan pengarsip yang nyaman.

Langkah 3. Instal sebagai plugin biasa

Bagian termudah. Cukup buka area admin WordPress Anda di Plugin → Tambah Baru dan unggah arsip Anda sebagai plugin biasa.

Setelah Anda mengaktifkannya, Anda seharusnya dapat melihat plugin baru Anda di daftar semua plugin lain yang diinstal:

Bagaimana cara menambahkan kode Anda?

Untuk menambahkan cuplikan kode Anda, cukup tempelkan ke file .php yang Anda buat. Atau Anda selalu dapat membuat plugin terpisah lainnya untuk dua fungsi yang berbeda.

Misalnya, seperti inilah tampilan file .php Anda jika Anda ingin membuat shortcode "Hello World!":

Komentar ini sama sekali tidak memengaruhi kinerja kode Anda dan kecepatan eksekusi plugin. Tetapi dengan mereka akan lebih mudah bagi Anda untuk menavigasi dan mengingat apa yang dilakukan setiap fungsi yang Anda tambahkan.

Cukup bungkus komentar Anda dengan sintaks garis miring dan tanda bintang: /* komentar Anda */

Setelah membuat perubahan pada kode Anda, Anda dapat memuat ulang file .php melalui FTP atau cukup buat arsip .zip baru dan unggah sebagai plugin baru dan hapus yang lama.

Cara lain untuk menghindari pengeditan functions.php

Pada dasarnya, jika Anda cukup percaya diri dengan kemampuan Anda dan tahu cara menambahkan kode ke functions.php, Anda juga tidak akan kesulitan dengan plugin khusus. Tidak ada yang sulit di sini.

Tapi kami sangat memahami jika Anda tidak memiliki keinginan untuk mengotak-atik semua ini secara manual. Namun, ini adalah WordPress. Oleh karena itu, plugin Cuplikan Kode gratis mungkin berguna, yang memudahkan untuk menambahkan kode tambahan Anda ke situs:

Dengan plugin ini, Anda dapat menambahkan potongan kode yang berbeda, memberi mereka nama, deskripsi, mengaktifkan dan menonaktifkan satu atau beberapa bagian kode secara selektif.

Fitur keren lainnya adalah Anda dapat mengimpor / mengekspor cuplikan kode antar situs.

Hasil

Ini mungkin tampak seperti detail kecil, tetapi penempatan yang benar dari kode tambahan Anda akan memungkinkan Anda untuk dengan mudah beralih di antara tema-tema lain di masa mendatang. Anda juga dapat mengaktifkan atau menonaktifkan satu atau fungsi lain secara terpisah jika Anda membagi setiap fungsi tambahan di antara plugin yang terpisah.

Jadi metode ini benar-benar patut mendapat perhatian.

cms mysql (4)

Saya mencoba membuat sistem plugin dasar yang mirip dengan yang sering Anda temukan di CMS seperti WordPress. Anda memiliki folder plugin yang terkait dengan operasi sistem utama menggunakan pemberitahuan tentang perkembangan sejak menggunakan pola desain Pengamat atau Peristiwa .

Masalahnya adalah bahwa sistem tidak dapat mengetahui dengan acara apa plugin ingin bertindak - jadi sistem harus memuat setiap plugin untuk setiap permintaan halaman untuk melihat apakah plugin itu benar-benar diperlukan di beberapa titik. Tak perlu dikatakan, ini adalah banyak sumber daya yang terbuang - dalam kasus WordPress, yang menambahkan hingga beberapa MB memori tambahan untuk setiap permintaan!

Apakah ada cara alternatif untuk melakukan ini?

Misalnya, apakah ada cara untuk memuat semuanya sekali dan kemudian men-cache hasilnya sehingga sistem Anda tahu seperti plugin pemuatan malas? Dengan kata lain, apakah sistem memuat file konfigurasi yang mencantumkan semua peristiwa yang ingin diikat oleh plugin dan kemudian menyimpannya di APC atau sesuatu untuk permintaan di masa mendatang?

Jika itu juga tidak bekerja dengan baik, maka mungkin ada struktur file khusus yang dapat digunakan untuk membuat tebakan tentang kapan plugin tertentu tidak diperlukan untuk memenuhi permintaan.

Jawaban

Saya memiliki alat manajemen plugin, tetapi saya hanya menggunakannya dengan plugin prosedural dan dengan semua yang disertakan biasanya langsung dimuat. Tetapi untuk API berbasis acara dan pemuatan lambat, saya dapat membayangkan menggunakan pembungkus dangkal untuk mengelola plugin dan beralih ke pemuatan otomatis untuk ekstensi yang sebenarnya.

/ ** * api: apa saja * versi: 0.1 * judul: contoh plugin * deskripsi: ... * config: * tergantung: plugin lain * /$ plugins ["title_event"] = "TitleEventClass"; $ plugins ["sekunder"] = array ("Kelas2", "panggilan balik"); ?>

Untuk contoh ini, saya berasumsi bahwa plugin API adalah daftar sederhana. Contoh skrip feature-plugin-123.php ini tidak melakukan apa-apa selain menambahkannya ke array saat dimuat. Dengan cara ini, bahkan jika Anda memiliki selusin plugin fitur, itu hanya akan menghasilkan tambahan include_once untuk masing-masing plugin.

Tetapi aplikasi utama / atau plugin API malah dapat membuat instance kelas yang disebutkan (baik $ eventcb baru; untuk raw-call_user_func_array atau call_user_func_array untuk panggilan balik). Pada gilirannya, ini akan memuat tugas sebenarnya ke autoloader. Jadi Anda memiliki sistem ganda di mana satu bagian mengelola daftar, yang lain adalah kode sebenarnya.

Jadi saya masih membayangkan config.php sederhana yang hanya mencantumkan plugin dan pengaturan seperti ini:

"pengguna / pembungkus-untuk-htmlpurifier.php"); $cfg ["cantik"] = 1;

Sekali lagi mempertimbangkan bahwa ini hanyalah pembungkus data / skrip, dengan deskripsi plugin untuk pengelolaan. Anda juga dapat menggunakan API register_even() aktual dan mendefinisikan fungsi pembungkus tambahan di masing-masing. Namun daftar nama keren sepertinya menjadi pilihan termudah.

Alat manajemen di atas terlihat berkarat dan jelek: http://milki.include-once.org/genericplugins/
Tetapi tidak digunakan jika yang Anda inginkan hanyalah daftar (tabel sql) dan manajemen pengaturan. Overhead ini hanya untuk mencetak metadata plugin dengan baik dan menjaga config.php yang dapat dibaca.

Akhirnya:

spl_autoload () ke include_path dan simple case event-> classname, masing-masing satu skrip pembungkus, cukup sertakan semuanya sekaligus.

Saya akan menyimpan nama kelas plugin bersama dengan acara yang ditandatangani dalam file konfigurasi dan kemudian menyimpan file konfigurasi yang diuraikan ke APC misalnya. Kemudian, saat peristiwa tersebut diaktifkan, sistem dapat dengan malas memuat kelas plugin yang sesuai sesuai kebutuhan.

Wordpress dan sistem CMS lainnya adalah contoh yang sangat buruk.

Kita harus memahami bahwa modular hampir selalu berarti lebih berat.

Skema terbaik yang pernah saya kerjakan untuk mengatasi situasi ini adalah plugin berbasis kelas, dengan konvensi penamaan yang ketat, menggunakan autoloader.

Jadi, Anda perlu membuat instance atau menggunakan fungsi statis sebelum menggunakan plugin.

Anda bahkan dapat memanggil plugin:

Misalnya:

"/plugins/($parts)/($parts).php"); merusak; ) // ...)?>

Adapun acara:

Anda harus mendaftarkan acara ini secara statis untuk menghindari perubahan dinamis.

Database akan menjadi tempat yang tepat untuk ini. Anda dapat memiliki tabel acara dan menginstal () dan menghapus () metode di kelas plugin untuk menambahkan acara tertentu atau mengikat metode ke acara lain. Ini adalah salah satu kueri basis data, dan jika Anda ingin mendapatkan lebih banyak darinya, tambahkan ke memcached atau flat ini file.

Bekerja dengan baik untuk saya. Dengan cara ini saya bisa mendapatkan sistem berat yang menghabiskan 8MB per permintaan untuk turun menjadi 1MB, dengan daftar fitur yang persis sama, tanpa pra-caching. Sekarang kita dapat menambahkan lebih banyak fitur dan menjaga sistem tetap "bersih"

semoga ini membantu

Cara terbaik adalah memulai coding dengan mereka. Pola desain adalah konsep hebat yang sulit diterapkan hanya dengan membacanya. Ambil beberapa contoh implementasi yang Anda temukan di Internet dan buat di sekitarnya.

Sumber yang bagus adalah halaman Data dan Objek. Mereka menelusuri templat dan memberi Anda contoh konseptual dan dunia nyata. Bahan referensi mereka juga bagus.

Ini adalah file utama dalam tema WordPress Anda. Terletak di /wp-content/themes/(ini adalah nama tema Anda) /functions.php.
Ini mendefinisikan properti penting dari tema, menyesuaikan kait, tampilan dan fungsionalitas, dan juga menambahkan beberapa fitur yang Anda butuhkan. File ini dimuat setiap kali Anda membuka halaman WordPress apa pun, sehingga dapat digunakan untuk memodifikasi elemen situs apa pun. Dalam hal ini, banyak tips ala" cara mengubah sesuatu di WordPress tanpa plugin »Seringkali menyangkut membuat perubahan pada functions.php, daripada membuat plugin terpisah untuk fungsi ini atau menggunakan solusi yang sudah jadi. Hal ini sering menyebabkan kelebihan informasi dari file ini, membuat kode sulit untuk diuraikan, dan membuat koreksi menjadi lebih sulit. Tapi ini bukan hal yang paling berbahaya. Hal yang paling berbahaya adalah itu saat mengubah tema aktif, sebagian atau semua fungsi situs yang diperlukan akan hilang.

Bagaimana function.php berbeda dari sebuah plugin

Tidak. Pada intinya, functions.php adalah sejenis plugin global non-switchable yang terikat dengan tema saat ini. Anda dapat melihat bagaimana itu terhubung di WordPress di wp-settings.php. Seperti yang Anda lihat dari kode sumber, itu dimuat setelah semua plugin, namun, ini tidak memberikan kerugian atau keuntungan apa pun, kecuali mungkin kemampuan untuk menimpa sesuatu di plugin yang terhubung. Ini juga tidak akan mempengaruhi kecepatan eksekusi kode. Hanya konten plugin dan functions.php yang terpengaruh. Oleh karena itu, berhati-hatilah saat memilih plugin aktif untuk tema Anda dan berikan yang tidak perlu, yang tidak berguna bagi Anda, maka Anda dapat meringankan situs Anda dan mempercepat pekerjaannya.

Kapan harus menggunakan function.php

Dipandu oleh aturan berikut: jika fungsionalitas terkait langsung dengan tema saat ini, tetapi tidak dengan pengoperasian situs, tulis di functions.php.

Misalnya, bisa jadi

  • Menyiapkan thumbnail
  • Mengatur ukuran bilah sisi
  • Menyiapkan tempat untuk widget
  • Pengumuman tempat di bawah menu navigasi
  • Pengaturan tema
  • Fitur tambahan dari tema Anda

Kapan harus menghindari penggunaan functions.php

Jika fungsionalitasnya berfungsi bahkan ketika mengubah tema aktif, Anda harus berhati-hati memasukkannya ke dalam plugin terpisah.
Ini termasuk:

  • Definisi penghitung kehadiran (Google Analytics, Yandex.Metrika, Liveinternet)
  • Menyiapkan fungsionalitas tambahan dari panel admin (misalnya)
  • Mengonfigurasi kode sumber ()
  • Mendefinisikan shortcode
  • Registrasi

Daftarnya tidak lengkap, Anda dapat menentukan kontennya sendiri.

Di mana saya bisa menambahkan kode ini jika tidak di functions.php? Anda dapat menulis plugin khusus untuk mereka, namun, ada cara yang lebih menarik dan sederhana.

mu-plugin alternatif untuk functions.php

Fungsi menarik telah datang kepada kami dalam versi modern WordPress dari WordPress MU (Multi-Pengguna), yang disebut Plugin MU... Esensinya adalah sebagai berikut. Administrator WordPress MU terkadang perlu menentukan plugin untuk seluruh jaringan situs. Ini tidak dapat dicapai dengan fungsionalitas biasa, jadi bagian khusus diperkenalkan: / wp-content / mu-plugins /, di mana mereka didefinisikan. Hal menarik lainnya adalah bahwa file plugin dari direktori ini dimuat sebelum semua yang lain, yang memungkinkan untuk menetapkan beberapa konstanta atau pengaturan.
Kemudian, WPMU dihapus, kodenya terintegrasi dengan blog utama, dan sekarang WordPress apa pun dapat menggunakan fungsionalitas plugin MU, yang sekarang menjadi singkatan dari Harus menggunakan, yaitu wajib untuk digunakan.

Cara menggunakan mu-plugin

Pertama, Anda perlu membuat bagian khusus / wp-content / mu-plugins /
Kami memasukkan file plugin yang diperlukan ke dalamnya. Tidak seperti plugin konvensional, tidak perlu mematuhi sintaks khusus, dan fungsionalitasnya dapat dideklarasikan secara langsung

Di sini, misalnya, file dengan kode penghitung kehadiran telah dibuat.
Di dalam, file ini terlihat seperti ini

// ... Alih-alih baris ini, masukkan kode penghitung ...

Di area admin, itu akan terlihat seperti Diperlukan

8 jawaban

Anda dapat menggunakan pola Pengamat. Cara fungsional sederhana untuk mencapai ini:

Keluaran:

Ini aplikasi GILA saya 4 + 5 = 9 4 * 5 = 20

Catatan:

Dalam contoh kode sumber ini, Anda harus mendeklarasikan semua plugin Anda sebelum kode sumber sebenarnya yang ingin Anda perbarui. Saya telah menyertakan contoh cara menangani satu atau lebih nilai yang diteruskan ke plugin. Bagian tersulit dari ini adalah menulis dokumentasi aktual yang mencantumkan argumen mana yang diteruskan ke setiap kait.

Ini hanyalah salah satu cara untuk membuat sistem plugin di PHP. Ada alternatif yang lebih baik, saya sarankan Anda memeriksa dokumentasi WordPress untuk informasi lebih lanjut.

Maaf, sepertinya garis bawah diganti dengan entitas Penurunan Harga HTML? Saya dapat memposting ulang kode ini ketika bug ini diperbaiki.

Sunting: Tidak apa-apa, itu hanya muncul ketika Anda mengedit

Jadi katakanlah Anda tidak memerlukan pola Observer karena mengharuskan Anda untuk mengubah metode kelas untuk menangani tugas mendengarkan dan Anda menginginkan kesamaan. Dan katakanlah Anda tidak ingin menggunakan warisan yang diperluas karena Anda sudah dapat mewarisi kelas Anda dari beberapa kelas lain. Bukankah lebih bagus untuk memiliki cara umum untuk membuat kelas apa pun dapat dipasang dengan mudah? Berikut caranya:

_Class = get_class (& $ RefObject); $ this -> _ RefObject = $ RefObject; ) fungsi publik __set ($ sProperty, $ campuran) ($ sPlugin = $ this -> _ Class. "_". $ sProperty. "_setEvent"; if (is_callable ($ sPlugin)) ($ campuran = call_user_func_array ($ sPlugin, $ campuran);) $ this -> _ RefObject -> $ sProperty = $ campuran;) fungsi publik __get ($ sProperty) ($ asItems = (array) $ this -> _ RefObject; $ campuran = $ asItems [$ sProperty] ; $ sPlugin = $ this -> _ Class. "_". $ sProperty. "_getEvent"; if (is_callable ($ sPlugin)) ($ campuran = call_user_func_array ($ sPlugin, $ campuran);) return $ campuran;) publik function __call ($ sMethod, $ mixed) ($ sPlugin = $ this -> _ Class. "_". $ sMethod. "_beforeEvent"; if (is_callable ($ sPlugin)) ($ campuran = call_user_func_array ($ sPlugin, $ campuran );) if ( $ mixed! = "BLOCK_EVENT") (call_user_func_array (array (& $ this -> _ RefObject, $ sMethod), $ mixed); $ sPlugin = $ this -> _ Class. "_". $ sMethod . "_afterEvent"; if ( is_callable ($ sPlugin)) (call_user_func_array ($ sPlugin, $ campuran);)))) // kelas akhir Kelas plugin Pluggable extends Plugin () // kelas akhir Pl uggable //////////////////// // BAGIAN 2 /////////////////// class Dog (public $ Nama = ""; fungsi publik menggonggong (& $ sHow) (echo "$ sHow
\ n ";) fungsi publik sayName() (echo"
\ nNama Saya adalah: ". $ this-> Name."
\ n ";)) // akhir kelas Anjing $ Anjing = Anjing baru (); //////////////// // BAGIAN 3 /////// // /////////// $ PDog = new Pluggable ($ Dog); fungsi Dog_bark_beforeEvent (& $ campuran) ($ campuran = "Guk"; // Ganti kata "meow" dengan "Guk" / / $ campuran = "BLOCK_EVENT"; // jika Anda ingin memblokir acara kembali $ campuran;) fungsi Dog_bark_afterEvent (& $ campuran) (gema $ campuran; // tampilkan override) fungsi Dog_Name_setEvent (& $ campuran) ($ campuran = " Coco"; // menimpa "Fido" dengan "Coco" mengembalikan $ campuran;) fungsi Dog_Name_getEvent (& $ campuran) ($ campuran = "Berbeda"; // menimpa "Coco" dengan "Berbeda" return $ campuran;) // ////////////////// // BAGIAN 4 ///////////////// $ PDog-> Nama = "Fido "; $PDog-> Bark("meow"); $PDog-> SayName(); echo "Nama Baru Saya adalah:". $PDog-> Name;

Bagian pertama adalah apa yang dapat Anda sertakan dengan panggilan require_once () di bagian atas skrip PHP Anda. Itu memuat kelas untuk membuat sesuatu yang dapat dipasang.

Di bagian 2, di mana kita memuat kelas. Catatan. Saya tidak perlu melakukan sesuatu yang istimewa untuk kelas yang secara signifikan berbeda dari pola Pengamat.

Di bagian 3, di mana kita akan mengalihkan kelas kita ke "pluggable" (yaitu kita mendukung plugin yang memungkinkan kita untuk mengganti metode dan properti kelas). Jadi, misalnya, jika Anda memiliki aplikasi web, Anda dapat memiliki registri plugin dan Anda dapat mengaktifkan plugin di sini. Perhatikan juga fungsi Dog_bark_beforeEvent (). Jika saya menetapkan $ mixed = "BLOCK_EVENT" sebelum pernyataan pengembalian, itu akan memblokir anjing dari menggonggong dan juga akan memblokir Dog_bark_afterEvent karena tidak akan ada acara.

Di bagian 4, itu adalah opcode normal, tetapi perhatikan bahwa apa yang Anda pikirkan tidak akan berfungsi seperti ini. Misalnya, seekor anjing tidak melafalkannya dengan nama "Fido" tetapi "Coco". Anjing itu tidak mengatakan meong, tapi whoof. Dan ketika Anda ingin melihat nama anjing itu nanti, Anda akan menemukan bahwa itu adalah "Lain-lain" dan bukan "Coco". Semua penggantian ini diperkenalkan di Bagian 3.

Jadi bagaimana cara kerjanya? Nah, mari kita singkirkan eval () (yang semua orang katakan "jahat") dan singkirkan itu bukan pola Pengamat. Jadi cara kerjanya adalah dengan kelas kosong tersembunyi yang disebut Pluggable yang tidak berisi metode dan properti yang digunakan oleh kelas Anjing. Jadi, saat ini terjadi, metode magis akan digunakan untuk kita. Oleh karena itu, di bagian 3 dan 4, kami menautkan ke objek yang diturunkan dari kelas Pluggable, dan bukan ke kelas Anjing itu sendiri. Sebagai gantinya, kami membiarkan kelas Plugin "menyentuh" ​​objek Anjing untuk kami. (Jika ini adalah beberapa desain yang saya tidak tahu, beri tahu saya.)

Metode pengait dan pendengar adalah yang paling umum digunakan, tetapi ada hal lain yang dapat Anda lakukan. Tergantung pada ukuran aplikasi Anda dan siapa yang ingin melihat kode (ini akan menjadi skrip FOSS, atau apa pun di rumah) akan sangat mempengaruhi bagaimana Anda ingin menyelesaikan plugin.

kdeloach memiliki contoh yang bagus, tetapi implementasi dan fungsi pengaitnya agak tidak aman. Saya akan meminta Anda untuk informasi lebih lanjut tentang sifat aplikasi php untuk email Anda, dan bagaimana Anda melihat plugin.

1 untuk kdeloach dari saya.

Inilah pendekatan yang saya gunakan, ia mencoba menyalin dari mekanisme sinyal / slot Qt, semacam pola Pengamat. Objek dapat memancarkan sinyal. Setiap sinyal memiliki pengidentifikasi dalam sistem - terdiri dari id + objek pengirim Setiap sinyal dapat diikat ke penerima, yang hanya merupakan "callable", Anda menggunakan kelas bus untuk mengirim sinyal kepada siapa pun yang tertarik untuk menerimanya. sesuatu terjadi, Anda mengirim sinyal. Di bawah ini adalah contoh dan contoh implementasi

Gabung (); ?>

Saya menemukan cara termudah adalah mengikuti saran Jeff dan melihat kode yang ada. Coba lihat Wordpress, Drupal, Joomla, dan PHP-CMS terkenal lainnya untuk melihat bagaimana tampilan dan nuansa API mereka. Dengan cara ini, Anda bahkan bisa mendapatkan ide yang mungkin tidak terpikirkan sebelumnya untuk membuat segalanya sedikit lebih tebal.

Jawaban yang lebih langsung adalah dengan menulis file generik yang akan mereka sertakan dalam file sertakan untuk memastikan kegunaan. Ini akan dikategorikan dan TIDAK disediakan dalam satu file MASSIVE "hooks.php". Hati-hati, karena pada akhirnya file yang mereka sertakan pada akhirnya memiliki lebih banyak dependensi dan fungsionalitas. Cobalah untuk membatasi ketergantungan API. I.E lebih sedikit file untuk disertakan.

Ada proyek rapi yang disebut