Imej Lazy Load - pemalam Lazy Load untuk WordPress. Cara Terbaik untuk Membolehkan Plugin untuk Aplikasi PHP Plugin php Sluggish

  • 20.06.2020

Fail fungsi adalah pembantu yang menghiburkan dalam mengembangkan fungsi laman web ini! terutamanya jika digunakan untuk tujuan yang disengajakan - namun, banyak pemilik blog / laman web yang hebat mengubah fungsi.php menjadi kata kunci.

Dalam perniagaan apa pun, ada kesesuaian dan batasan (sekatan, sering logik), dan oleh itu beberapa kod boleh dilaksanakan yang dirancang untuk menyesuaikan parameter inti WP (bukan tema), lebih tepat untuk mengambil templat ...

Apabila perbualan adalah mengenai memodenkan fungsi laman web ini, dalam baris artikel "tanpa pemalam ..." disarankan untuk memasukkan semua blok kod ke dalam fungsi legenda.php. Ia tidak betul!

Adalah lebih logik untuk memindahkan semua sambungan teknikal semata-mata (tidak berkaitan langsung dengan gaya templat) ke dalam pemalam yang diatur untuk pendaftaran mereka.

Mari buat! dan juga membincangkan kebaikan dan keburukan (yang mana lebih kurang) ...


Bahagian artikel:

cara membuat pemalam anda

dari teks di bawah, kami akan belajar bagaimana membuat plugin anda sendiri dengan tangan anda sendiri: kami akan memahami semua perincian, nuansa. Kami akan mengetahui apa kebaikan dan keburukannya (ada lebih sedikit kekurangan !! dan lebih tepatnya, ini bukan keburukan sama sekali, tetapi satu atau keperluan lain untuk setiap pentadbir)

apakah perbezaan antara fail functions.php dan plugin

Mengapa beberapa kod yang berkaitan secara langsung dengan fungsi laman web dipindahkan ke pemalam yang berasingan?

Fail fungsi itu sendiri, tujuan dan konsistensinya tidak berbeza dengan plugin (hanya plugin dalam tema))! - Tugas utamanya adalah untuk memperkayakan templat (aktif) tertentu dengan fungsi berguna.

Sebagai contoh, "navigasi", di mana, secara logiknya, menu butang digayakan dengan CSS sesuai dengan gaya tema aktif - mungkin lebih tepat untuk meletakkannya di akar templat.

Apa faedahnya - untuk memisahkan fail fungsi menjadi fail berasingan, atau pemalam yang berasingan?

Contohnya, yang paling biasa - anda memutuskan untuk menukar templat !? ... sebagai hasilnya, semua perkembangan fungsional akan hilang, kerana semua kod berguna terletak di dalam fail fungsi (saya pernah melihat ukuran fail seperti 750KILO)

Sudah tentu, anda boleh memindahkan dokumentasi fungsi ke topik baru, tetapi yang paling penting, tanpa pengeditan yang memerlukan banyak masa, anda tidak boleh melakukannya: monyet dan bekerja)

Dan kemudian:

pesanan memuatkan fail laman web

Secara ringkas: urutan memuat fail inti laman dalam contoh kami adalah seperti berikut - pemalam aktif laman web (dari folder pemalam) dan kandungannya dimuat sedikit lebih awal, dan barulah fail fungsi.php dengan kandungannya telah di proses. Semuanya dalam milisaat, dan sukar untuk dibincangkan dengan serius untuk mendapatkan kelajuan halaman itu sendiri.

Walaupun, nampaknya salah satu sebab pesanan pemuatan seperti itu dibuat oleh pemaju, di mana tempat kedua diberikan kepada fail fungsi (seperti mungkin elemen yang lebih ringan), hanya kenyataan penggunaan pemalam yang meluas, selalunya kandungannya banyak ...

Seseorang akan berseru: pemalam lain ...? ia sukar!

Dan saya katakan, ia tidak akan mempengaruhi kelajuan apa-apa ... sebaliknya - sebaliknya, jika anda menghampiri pembuatan laman web dengan teliti.

Lebih-lebih lagi, faedah memindahkan beberapa kod jelas pada yang lain, iaitu, kecepatan memuatkan laman web tidak bergantung pada jumlah plugin aktif, tetapi pada kandungannya! Jadi mengapa tidak mengecilkan fail fungsi, yang, seperti yang disebutkan, dimuat sedikit kemudian ..? dan juga PLUGIN peringkat templat besar-besaran! Jadi di mana sebahagian besar kodnya dimiliki?

Pada pendapat saya, templat (aktif, berfungsi) hanya boleh mengandungi parameter spesifiknya.

lawatan ke aritmetik ...

  1. dimuat kemudian, persoalannya mengapa tidak memindahkannya ke tempat di mana pemprosesan kod dilakukan terlebih dahulu, dan, dengan demikian, penyesuaian parameter inti WP yang ditentukan oleh pentadbir akan dibaca lebih cepat dan diproses pada tahap pelancaran laman web yang sesuai ?
  2. kegunaan dan organisasi logik fungsi laman web ini.
  3. kemudahan, yang tidak penting!

Sebagai tambahan, seperti yang dikatakan, fail fungsi adalah pemalam yang sama - sekali lagi saya akan bertanya, mengapa mendorong semua yang anda masuki? dan dalam proses bekerja dengan laman web ini, keliru dalam dokumen kod yang besar dan sukar dibaca, yang, dengan cara itu, sangat kembung dan tidak wajar kandungannya.

Lebih mudah dan lebih logik untuk membuat plugin ringan, mengkonfigurasi dan lupa ...

Dengan kata lain, setiap orang memutuskan untuk dirinya sendiri: sama ada untuk mendengar pengalamannya sendiri, atau pendapat penulis artikel pendidikan tertentu.

Walaupun pembelajaran berlaku di perpustakaan WordPress, tetapi tidak mengikut artikel ... dari artikel adalah mungkin untuk mengumpulkan satu idea atau idea lain ...

Entah bagaimana, tuan)

... bagi mereka yang berminat:

anda dapat mempelajari semua peraturan kernel (dan, by the way, urutan memuatkan direktori kernel)) dengan cara yang indah dalam kod WordPress.

... dalam salah satu artikel berikut, hanya topik pembakar topik! ... dan pautan ke halaman yang berguna.


! .. dengan melanggan kemas kini laman web -
... berpisah dengan kejahilan ..!

cara membuat pemalam fail fungsi.php tambahan

Plugin yang dimaksudkan, tentu saja, adalah penyelesaian yang mudah, tetapi kajiannya harus bermula dari awal!

Lebih-lebih lagi, untuk mencapai matlamat yang diambil dalam artikel, tidak diperlukan plugin yang kuat!

Pergi ke panel kawalan hos (atau FTP) dan buka pengurus fail.

Buka folder plugin dan buat direktori lain di dalamnya (folder untuk fail plugin kami). Sama sekali nama, dalam bahasa Latin. Saya mempunyai nama "ujian" sebagai contoh.

Harap maklum bahawa nama pemalam di panel pentadbir akan sama seperti yang tertulis di tajuk maklumat Nama Plugin: ujian (lihat komen).

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

... dengan nama, sebutkan my-functions.php dan tambahkan baris seperti itu ke badannya (dan nama failnya boleh menjadi apa-apa)

Garis dalam komen - maklumat mengenai pemalam yang akan muncul di panel pentadbir (menu pemalam).

Segera setelah membuat folder dan fail, plugin anda akan muncul di panel admin. Tengoklah.

Sebagai bekas, anda boleh mengaktifkannya untuk sementara waktu - tetapi tidak ada yang berlaku, pemalamnya masih tidak berfungsi.

Itu sahaja!! plug-in ringkas telah dibuat dan, apa yang luar biasa, dengan tangannya sendiri dan untuk kepentingannya sendiri (seperti yang dikatakan oleh kucing Matroskin).

Pada saat ini, tirai persembahan jatuh ...
... debu sedih jatuh di tanjakan ...

Dan omong-omong, filem yang berguna dari siri "tanpa plugin" - lihat, fikirkan apakah kod yang dicadangkan dalam video harus ditinggalkan dalam fail fungsi ??

Tentunya, anda telah berulang kali menemui kenyataan bahawa anda perlu menambahkan beberapa kod untuk laman WordPress anda untuk menambahkan fungsi baru. Saya tidak membincangkan skrip analisis Google yang anda masukkan ke bahagian tajuk tema anda sekarang. Tidak. Saya bercakap mengenai potongan kecil kod yang anda dapati di forum di Internet dan segera berlari untuk menambahkannya ke fail anda fungsi.php.

Mari kita jujur, anda telah melakukan ini sekurang-kurangnya sekali, bukan? Dan ini dapat difahami, kerana ia ditulis di forum - tambahkan kod ini ke function.php tema WordPress anda.

Yang benar adalah, menambahkan setiap kod yang anda dapati di internet ke functions.php adalah bukan selalu idea yang baik... Penyelesaian yang lebih selamat adalah dengan membuat plugin mini tersuai anda sendiri dengan kod ini.

Dalam tutorial ini, kami akan memberitahu anda di mana anda boleh menambahkan kod ke functions.php, dan di mana lebih baik menggunakan pemalam yang terpisah. Kami juga akan menunjukkan kepada anda bagaimana anda boleh membuat plugin tersuai sendiri dan menambahkan kod anda ke dalamnya.

Apa itu fungsi.php

Sekiranya anda pernah menelusuri fail laman WordPress anda, anda mungkin tersandung pada beberapa fail function.php. Fail functions.php yang akan kita bicarakan dalam tutorial ini terletak di folder: wp-contentthemesyour_themefunctions.php.

Jelas, ini adalah fail yang sama yang menyimpan semua fungsi dan tetapan untuk tema tertentu anda, sedang aktif... Perhatikan kata "aktif", kerana ini akan menjadi pesan utama pelajaran ini.

Mengapa adalah idea yang tidak baik untuk selalu menggunakan fungsi.php

Jangan salah faham, biasa menggunakan fungsi.php untuk beberapa kod kecil dalam beberapa baris. Kami bercakap tentang hakikat bahawa tidak diinginkan untuk menggunakan function.php sebagai repositori untuk semua yang anda tambahkan kod. Ini bukan satu-satunya penyelesaian yang sesuai untuk setiap keadaan.

Sebab # 1.

Sekiranya kemas kini dilancarkan untuk tema anda, anda akan kehilangan semua yang anda tambahkan dalam fail functions.php. Saya tahu apa yang anda fikirkan - tetapi adakah hanya untuk situasi seperti itu?

Sudah tentu mempunyai. Tetapi ada juga banyak orang yang tidak tahu apa itu tema kanak-kanak. Atau ada orang yang meminta anda membantu menambahkan sekeping kod pada tema mereka.

Oleh itu, sebab ini ada dalam senarai ini. Sekiranya anda menambahkan kod ke functions.php tanpa menggunakan tema kanak-kanak, ini adalah panggilan bangun pertama anda.

Sebab # 2.

Walaupun anda telah mengkonfigurasi dan menggunakan tema kanak-kanak dengan betul. Apa yang berlaku jika anda ingin beralih ke tema reka bentuk yang berbeza? Saya harap anda menambahkan komen pada setiap perubahan yang anda buat dalam fail functions.php anda, kerana tanpa itu, beralih ke topik lain akan sangat menyakitkan. Saya fikir anda mendapat idea.

Sebab nombor 3.

Sekiranya anda menambahkan kod ke functions.php yang secara tiba-tiba memecah laman web anda dan anda melihat skrin putih kosong - anda memerlukan klien FTP untuk memuat naik fungsi "rusak". Php, edit dan muat naik kembali ke laman web. Keseronokan itu sendiri.

Bila hendak menggunakan function.php

Menggunakan function.php dengan betul untuk tema kanak-kanak yang sedang aktif adalah pilihan yang sah. Tetapi ingat, saya fokus pada perkataan ini " aktif"?

Sekiranya anda menambahkan potongan kod yang hanya akan masuk akal ketika bekerja dengan tema tertentu ini, maka anda boleh menggunakan functions.php (dalam tema kanak-kanak) dengan selamat. Berikut adalah beberapa contoh yang mungkin sesuai:

  • Menambah helaian gaya lain (.css) untuk tema anda
  • Tukar panjang petikan catatan untuk menjadikan laman web kelihatan lebih baik
  • Menambah fon khas untuk tema semasa
  • Menambah fail penyetempatan untuk menterjemahkan tema semasa

Dengan kata lain, setiap kali anda menambah atau mengubah apa-apa yang berkaitan dengan tema semasa tertentu, sila gunakan function.php.

Bilakah lebih baik dilakukan tanpa fungsi.php

Menggunakan functions.php untuk menambahkan lebih banyak perkara dan fungsi global yang secara teorinya berguna untuk tema lain adalah idea yang tidak baik.

Berikut adalah beberapa contoh bila lebih baik dilakukan tanpa fungsi.php:

  • Membuat widget tersuai yang sering anda gunakan
  • Membuat kod pendek tersuai
  • Menambah kod bebas tema (kod Analitis Google, dll.)

Dalam kes sedemikian, lebih baik menyimpan kod ini tanpa mengira tema anda. Dan anda boleh melakukannya dengan pemalam tersuai.

Anda sekarang berfikir - hairan dengan penciptaan plugin, kapan anda boleh mengedit function.php? Ia terlalu sukar! Percayalah, ini tidak berlaku. Ini dilakukan dengan cepat dan mudah.

Cara menyediakan plugin tersuai dan bukannya function.php

Untuk membuat pemalam tersuai anda sendiri untuk menyimpan kod anda, anda memerlukan:

  1. Buat fail teks dengan kod anda dan simpan sebagai fail .php
  2. Kemas fail .php yang dihasilkan ke dalam arkib .zip
  3. Pasang arkib ini sebagai pemalam WordPress biasa dalam menu Pemalam → Tambah Baru

Itu sahaja, hanya 3 tindakan.

Langkah 1. Buat fail .php dengan kod anda

Buka Notepad di komputer anda dan tampal teks berikut:

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

Simpan fail dan beri nama yang unik agar WordPress tidak mengelirukan pemalam anda dengan yang sudah dipasang. Contohnya: wpcafe-custom-functions.php.

Ya, jangan lupa memilih jenis fail "Semua fail" dan tambahkan pelanjutan .php semasa menyimpan:

Langkah 2. Buat arkib .zip

Saya rasa tidak perlu ada penjelasan di sini. Cukup buat arkib .zip dengan fail anda menggunakan pengarkib yang sesuai.

Langkah 3. Pasang sebagai pemalam biasa

Bahagian paling senang. Pergi ke kawasan pentadbir WordPress anda di Pemalam → Tambah Baru dan muat naik arkib anda sebagai pemalam biasa.

Setelah anda mengaktifkannya, anda seharusnya dapat melihat pemalam baru anda dalam senarai semua pemalam yang dipasang:

Cara menambah kod anda

Untuk menambahkan coretan kod anda, masukkan sahaja ke fail .php yang anda buat. Atau anda selalu boleh membuat pemalam yang lain untuk dua fungsi yang berbeza.

Contohnya, seperti inilah fail .php anda jika anda ingin membuat Shortcode "Hello World!"

Komen ini sama sekali tidak mempengaruhi prestasi kod anda dan kelajuan pelaksanaan pemalam. Tetapi dengan mereka akan lebih mudah bagi anda untuk menavigasi dan mengingati apa yang dilakukan oleh setiap fungsi yang anda tambahkan.

Cukup bungkus komen anda dalam sintaks garis miring dan tanda bintang: /* komen anda */

Setelah membuat perubahan pada kod anda, anda boleh memuat semula fail .php melalui FTP atau hanya membuat arkib .zip baru dan memuat naik sebagai pemalam baru dan hapus yang lama.

Cara lain untuk mengelakkan fungsi penyuntingan.php

Pada dasarnya, jika anda cukup yakin dengan kebolehan anda dan tahu bagaimana menambahkan kod ke functions.php, anda juga tidak akan menghadapi masalah dengan pemalam tersuai. Tidak ada yang sukar di sini.

Tetapi kami memahami dengan baik jika anda tidak mempunyai keinginan untuk memperhatikan semua ini secara manual. Namun, ini adalah WordPress. Oleh itu, plugin Code Snippets percuma mungkin berguna, yang memudahkan anda menambahkan kod tambahan anda ke laman web:

Dengan pemalam ini, anda boleh menambah coretan kod yang berbeza, memberi mereka nama, keterangan, mengaktifkan dan menyahaktifkan satu atau sekeping kod lain secara selektif.

Satu lagi ciri menarik ialah anda boleh mengimport / mengeksport coretan kod anda di antara laman web.

Hasil

Ini mungkin kelihatan seperti perincian kecil, tetapi penempatan kod tambahan anda yang betul akan membolehkan anda beralih antara tema lain dengan mudah pada masa akan datang. Anda juga boleh mengaktifkan atau mematikan fungsi satu atau yang lain secara berasingan jika anda membahagikan setiap fungsi tambahan antara pemalam yang berasingan.

Jadi kaedah ini benar-benar memerlukan perhatian.

sms mysql (4)

Saya cuba membuat sistem pemalam asas yang serupa dengan sistem yang sering anda temui di CMS seperti WordPress. Anda mempunyai folder pemalam yang terikat dengan operasi sistem utama menggunakan pemberitahuan mengenai perkembangan sejak menggunakan corak rekaan Pemerhati atau Acara .

Masalahnya ialah sistem tidak dapat mengetahui peristiwa apa plugin mahu bertindak - jadi sistem harus memuat setiap plugin untuk setiap permintaan halaman untuk melihat apakah plugin itu benar-benar diperlukan pada satu ketika. Tidak perlu dikatakan, ini banyak sumber yang terbuang - dalam kes WordPress, yang menambah beberapa MB memori tambahan untuk setiap permintaan!

Adakah terdapat kaedah alternatif untuk melakukan ini?

Sebagai contoh, adakah cara untuk memuatkan semuanya sekali dan kemudian menyimpan hasilnya sehingga sistem anda tahu seperti pemuatan pemalas yang malas? Dengan kata lain, adakah sistem memuat fail konfigurasi yang menyenaraikan semua peristiwa yang ingin diikat oleh pemalam dan kemudian menyimpannya dalam APC atau sesuatu untuk permintaan masa depan?

Sekiranya itu juga tidak berfungsi dengan baik, mungkin ada struktur fail khas yang dapat digunakan untuk membuat tekaan tentang kapan plugin tertentu tidak diperlukan untuk memenuhi permintaan tersebut.

Jawapan

Saya mempunyai alat pengurusan pemalam, tetapi saya hanya menggunakannya dengan pemalam prosedural dan dengan semua yang disertakan biasanya dimuat dengan segera. Tetapi untuk API berasaskan acara dan pemuatan yang malas, saya dapat membayangkan menggunakan pembungkus dangkal untuk menguruskan pemalam dan menggunakan pemuatan automatik untuk peluasan sebenar.

/ ** * api: apa sahaja * versi: 0.1 * tajuk: contoh pemalam * keterangan: ... * konfigurasi: * bergantung: plugin lain * /$ plugin ["title_event"] = "TitleEventClass"; $ plugin ["sekunder"] = array ("Class2", "callback"); ?>

Untuk contoh ini, saya menganggap API pemalam adalah senarai yang mudah. Contoh skrip feature-plugin-123.php ini tidak lain selain menambahkannya ke array yang dimuat. Dengan cara ini, walaupun anda mempunyai selusin plugin ciri, ia hanya akan menghasilkan include_once tambahan untuk masing-masing.

Tetapi API aplikasi / atau plugin utama hanya dapat memberi contoh kelas yang disebutkan (sama ada $ eventcb baru; untuk raw-call_user_func_array atau call_user_func_array untuk panggilan balik). Sebaliknya, ini akan memuatkan tugas sebenar ke pemuat automatik. Oleh itu, anda mempunyai sistem dua di mana satu bahagian menguruskan senarai, yang lain adalah kod sebenar.

Oleh itu, saya masih membayangkan config.php ringkas yang hanya menyenaraikan pemalam dan tetapan seperti ini:

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

Sekali lagi dengan mengambil kira bahawa ini hanyalah pembungkus data / skrip, dengan keterangan pemalam untuk dikendalikan. Anda juga boleh menggunakan API register_even () sebenar dan menentukan fungsi pembungkus tambahan di masing-masing. Tetapi senarai nama yang menarik nampaknya merupakan pilihan paling mudah.

Alat pengurusan di atas kelihatan berkarat dan hodoh: http://milki.include-once.org/genericplugins/
Tetapi ia tidak digunakan jika semua yang anda mahukan adalah senarai (jadual sql) dan pengurusan tetapan. Overhead ini hanya untuk mencetak metadata plugin dengan baik dan menjaga config.php yang dapat dibaca.

Akhirnya:

spl_autoload () untuk memasukkan_path dan acara kes sederhana-> nama kelas, masing-masing satu skrip pembungkus, sertakan semuanya sekaligus.

Saya akan menyimpan nama kelas pemalam bersama dengan peristiwa yang ditandatangani dalam fail konfigurasi dan kemudian menyimpan fail konfigurasi yang dihuraikan ke APC misalnya. Kemudian, apabila peristiwa itu menyala, sistem boleh malas memuat kelas plugin yang sesuai jika diperlukan.

Wordpress dan sistem CMS lain adalah contoh yang sangat buruk.

Kita harus memahami bahawa modular hampir selalu bermaksud ia lebih berat.

Skema terbaik yang pernah saya bekerjasama untuk menyelesaikan keadaan ini ialah pemalam berdasarkan kelas, dengan konvensyen penamaan yang ketat, menggunakan pemuat automatik.

Oleh itu, anda perlu membuat instansi atau menggunakan fungsi statik sebelum menggunakan pemalam.

Anda juga boleh memanggil pemalam:

sebagai contoh:

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

Bagi acara:

Anda mesti mendaftarkan acara ini secara statik untuk mengelakkan perubahan dinamik.

Pangkalan data akan menjadi tempat yang tepat untuk ini. Anda boleh mempunyai jadual acara dan memasang () dan menyahpasang () kaedah di kelas pemalam untuk menambah peristiwa tertentu atau mengikat kaedah ke acara lain. Ini adalah satu pertanyaan pangkalan data, dan jika anda ingin memanfaatkannya, tambahkan ke fail memcached atau flat ini.

Berfungsi dengan baik untuk saya. Dengan cara ini saya dapat mendapatkan sistem berat yang menggunakan 8MB setiap permintaan untuk jatuh ke 1MB, dengan senarai ciri yang sama, tanpa pra-cache. Sekarang kita dapat menambahkan lebih banyak ciri dan menjaga sistem "bersih"

semoga ini membantu

Cara terbaik adalah dengan memulakan pengekodan dengan mereka. Corak reka bentuk adalah konsep hebat yang sukar diterapkan hanya dengan membaca tentangnya. Ambil beberapa contoh pelaksanaan yang anda dapati di Internet dan buat di sekitarnya.

Sumber yang hebat adalah halaman Data dan Objek. Mereka melalui templat dan memberi anda contoh konsep dan dunia nyata. Bahan rujukan mereka juga hebat.

Ini adalah fail utama dalam tema WordPress anda. Terletak di / wp-content / themes / (berikut adalah nama tema anda) /functions.php.
Ini menentukan sifat penting tema, menyesuaikan cangkuk, penampilan dan fungsi, dan juga menambah beberapa ciri yang anda perlukan. Fail ini dimuat setiap kali anda membuka halaman WordPress apa pun, sehingga dapat digunakan untuk mengubahsuai elemen laman web apa pun. Dalam hal ini, banyak petua a la " cara menukar sesuatu di WordPress tanpa pemalam »Sering kali membuat perubahan pada fungsi.php, bukannya membuat pemalam yang berasingan untuk fungsi ini atau menggunakan penyelesaian siap pakai. Ini sering membawa kepada maklumat yang berlebihan dari fail ini, membuat kod sukar dihuraikan, dan membuat pembetulan menjadi lebih sukar. Tetapi ini bukan perkara yang paling berbahaya. Perkara yang paling berbahaya adalah semasa menukar tema aktif, sebahagian atau semua fungsi laman web yang diperlukan akan hilang.

Bagaimana fungsi.php berbeza dengan pemalam

Tidak ada. Pada intinya, functions.php adalah sejenis plugin global yang tidak boleh ditukar yang berkaitan dengan tema semasa. Anda dapat melihat bagaimana ia menghubungkan di WordPress di wp-setting.php. Seperti yang anda lihat dari kod sumber, ia dimuat setelah semua pemalam, namun, ini tidak memberikan kekurangan atau kelebihan, kecuali mungkin kemampuan untuk mengganti sesuatu pada pemalam yang disambungkan. Ini juga tidak akan mempengaruhi kelajuan pelaksanaan kod. Hanya kandungan plugin dan fungsi.php yang terpengaruh. Oleh itu, berhati-hatilah ketika memilih plugin aktif untuk tema anda dan jangan gunakan, tidak banyak berguna kepada anda, maka anda boleh meringankan laman web anda dan mempercepat kerjanya.

Bila hendak menggunakan function.php

Berpandukan kepada peraturan berikut: jika fungsi tersebut berkaitan secara langsung dengan tema semasa, tetapi tidak dengan pengoperasian laman web ini, tuliskan di functions.php.

Contohnya, mungkin

  • Menyiapkan lakaran kecil
  • Menetapkan saiz bar sisi
  • Menyiapkan tempat untuk widget
  • Pengumuman tempat di bawah menu navigasi
  • Tetapan tema
  • Ciri tambahan tema anda

Bila tidak boleh menggunakan fungsi.php

Sekiranya fungsi berfungsi walaupun menukar tema aktif, anda harus berhati-hati memasukkannya ke pemalam yang berasingan.
Ini termasuk:

  • Definisi kaunter kehadiran (Google Analytics, Yandex.Metrika, Liveinternet)
  • Menyiapkan fungsi tambahan panel pentadbir (contohnya)
  • Mengkonfigurasi kod sumber ()
  • Mendefinisikan kod pendek
  • pendaftaran

Senarai tidak lengkap, anda boleh menentukan sendiri kandungannya.

Di mana saya boleh menambahkan kod ini jika tidak di functions.php? Anda boleh menulis pemalam khas untuk mereka, namun ada cara yang lebih menarik dan lebih mudah.

mu-plugin alternatif kepada functions.php

Fungsi yang menarik telah datang kepada kami dalam versi moden WordPress dari WordPress MU (Multi-User), yang dipanggil Pemalam MU... Intinya adalah seperti berikut. Pentadbir WordPress MU kadang-kadang perlu menentukan plugin untuk seluruh rangkaian laman web. Ini tidak dapat dicapai dengan fungsi biasa, jadi bahagian khas diperkenalkan: / wp-content / mu-plugins /, di mana mereka ditentukan. Perkara lain yang menarik ialah fail pemalam dari direktori ini dimuat sebelum semua yang lain, yang memungkinkan untuk menentukan beberapa pemalar atau tetapan.
Kemudian, WPMU dihapuskan, kodnya disatukan dengan blogging utama, dan sekarang mana-mana WordPress dapat menggunakan fungsi plugin MU, yang kini merupakan singkatan Mesti pakai, iaitu, wajib digunakan.

Cara menggunakan mu-plugin

Pertama, anda perlu membuat bahagian khas / wp-content / mu-plugins /
Kami memasukkan fail plugin yang diperlukan ke dalamnya. Tidak seperti pemalam konvensional, tidak perlu mematuhi sintaks khas, dan fungsinya dapat dinyatakan secara langsung

Sebagai contoh, di sini, fail dengan kod kaunter kehadiran telah dibuat.
Di dalamnya, fail ini kelihatan seperti ini

// ... Daripada baris ini, masukkan kod kaunter ...

Di kawasan pentadbir, ia akan kelihatan seperti Perlu

8 jawapan

Anda boleh menggunakan corak Observer. Kaedah berfungsi yang mudah untuk mencapai ini:

Pengeluaran:

Ini adalah aplikasi CRAZY saya 4 + 5 = 9 4 * 5 = 20

Catatan:

Dalam contoh kod sumber ini, anda mesti menyatakan semua pemalam anda sebelum kod sumber sebenar yang ingin anda perbaharui. Saya telah memasukkan contoh bagaimana menangani satu atau lebih nilai yang dihantar ke pemalam. Bahagian yang paling sukar adalah menulis dokumentasi sebenar yang menyenaraikan hujah-hujah mana yang disampaikan ke setiap mata kail.

Ini adalah satu cara untuk membuat sistem pemalam di PHP. Terdapat alternatif yang lebih baik, saya cadangkan anda melihat dokumentasi WordPress untuk maklumat lebih lanjut.

Maaf, nampaknya garis bawah diganti dengan entiti Penurunan HTML? Saya boleh menghantar semula kod ini apabila pepijat ini diperbaiki.

Edit: Sudahlah, ia hanya muncul semasa anda mengedit

Oleh itu, katakan anda tidak memerlukan corak Pemerhati kerana ia memerlukan anda mengubah kaedah kelas untuk menangani tugas mendengar dan anda menginginkan sesuatu yang sama. Dan katakan anda tidak mahu menggunakan memperpanjang warisan kerana anda sudah boleh mewarisi kelas anda dari kelas lain. Bukankah lebih baik untuk mempunyai cara generik untuk membuat kelas yang boleh dilancarkan dengan mudah? Ini caranya:

_Class = get_class (& $ RefObject); $ ini -> _ RefObject = $ RefObject; ) fungsi awam __set ($ sProperty, $ mixed) ($ sPlugin = $ this -> _ Class. "_". $ sProperty. "_setEvent"; if (is_callable ($ sPlugin)) ($ mixed = call_user_func_array ($ sPlugin, $ campuran);) $ ini -> _ RefObject -> $ sProperty = $ campuran;) fungsi awam __get ($ sProperty) ($ asItems = (array) $ this -> _ RefObject; $ mixed = $ asItems [$ sProperty] ; $ sPlugin = $ this -> _ Class. "_". $ sProperty. "_getEvent"; if (is_callable ($ sPlugin)) ($ mixed = call_user_func_array ($ sPlugin, $ mixed);) kembali $ dicampur;) awam fungsi __call ($ sMethod, $ mixed) ($ sPlugin = $ this -> _ Class. "_". $ sMethod. "_beforeEvent"; if (is_callable ($ sPlugin)) ($ mixed = call_user_func_array ($ sPlugin, $ campuran );) jika ($ dicampur! = "BLOCK_EVENT") (call_user_func_array (array (& $ this -> _ RefObject, $ sMethod), $ mixed); $ sPlugin = $ this -> _ Class. "_". $ sM Method . "_afterEvent"; if (is_callable ($ sPlugin)) (call_user_func_array ($ sPlugin, $ mixed);))))) // kelas akhir kelas Plugin Pluggable meluaskan Plugin () // kelas akhir Pl uggable //////////////////// // BAHAGIAN 2 //////////////////// kelas Anjing (awam $ Nama = ""; kulit fungsi awam (& $ sHow) (gema "$ sHow
\ n ";) fungsi awam sayName () (gema"
\ nNama saya adalah: ". $ this-> Nama."
\ n ";)) // anjing kelas akhir $ Dog = anjing baru (); ////////////////// // BAHAGIAN 3 /////// // /////////// $ PDog = baru Pluggable ($ Dog); fungsi Dog_bark_beforeEvent (& $ mixed) ($ mixed = "Woof"; // Tolak kata "meow" dengan "Woof" / / $ campuran = "BLOCK_EVENT"; // jika anda ingin menyekat acara mengembalikan $ campuran;) fungsi Dog_bark_afterEvent (& $ mixed) (echo $ mixed; // tunjukkan penggantian) fungsi Dog_Name_setEvent (& $ campuran) ($ campuran = " Coco "; // ganti" Fido "dengan" Coco "return $ mixed;) fungsi Dog_Name_getEvent (& $ mixed) ($ mixed =" Different "; // ganti" Coco "dengan" Berbeza "pulangan $ bercampur;) // ////////////////// // BAHAGIAN 4 ////////////////// $ PDog-> Nama = "Fido "; $ PDog-> Bark (" meow "); $ PDog-> SayName (); gema" Nama Baru Saya: ". $ PDog-> Nama;

Bahagian pertama adalah apa yang dapat anda sertakan dengan panggilan memerlukan_once () di bahagian atas skrip PHP anda. Ini memuat kelas untuk membuat sesuatu yang boleh dilambaikan.

Di bahagian 2, di mana kita memuat kelas. Catatan. Saya tidak perlu melakukan sesuatu yang istimewa untuk kelas yang jauh berbeza dengan corak Observer.

Di bahagian 3, di mana kita akan menukar kelas kita menjadi "pluggable" (iaitu kita menyokong plugin yang membolehkan kita mengatasi kaedah dan sifat kelas). Jadi, sebagai contoh, jika anda mempunyai aplikasi web, anda boleh mempunyai pendaftaran pemalam dan anda boleh mengaktifkan pemalam di sini. Perhatikan juga fungsi Dog_bark_beforeEvent (). Sekiranya saya menetapkan $ mixed = "BLOCK_EVENT" sebelum pernyataan pengembalian, ia akan menyekat anjing daripada menyalak dan juga akan menyekat Dog_bark_afterEvent kerana tidak akan ada acara.

Di bahagian 4, itulah opcode biasa, tetapi perhatikan bahawa apa yang anda fikirkan tidak akan berfungsi seperti ini. Contohnya, seekor anjing tidak menyebutnya dengan nama "Fido" tetapi "Coco". Anjing itu tidak mengatakan meow, tetapi siapa. Dan apabila anda ingin melihat nama anjing itu nanti, anda akan dapati bahawa itu adalah "Pelbagai" dan bukan "Coco". Semua penggantian ini diperkenalkan di Bahagian 3.

Jadi bagaimana ia berfungsi? Baiklah, mari kita menolak eval () (yang semua orang mengatakan "jahat") dan menolak bahawa itu bukan corak Pemerhati. Jadi cara kerjanya adalah dengan kelas kosong tersembunyi yang disebut Pluggable yang tidak mengandungi kaedah dan sifat yang digunakan oleh kelas Dog. Oleh itu, apabila ini berlaku, kaedah ajaib akan digunakan untuk kita. Oleh itu, di bahagian 3 dan 4, kita menghubungkan ke objek yang berasal dari kelas Pluggable, dan bukan ke kelas Anjing itu sendiri. Sebaliknya, kami membiarkan kelas Plugin "menyentuh" ​​objek Anjing untuk kami. (Sekiranya ini adalah reka bentuk yang tidak saya ketahui, beritahu saya.)

Kaedah cangkuk dan pendengar adalah yang paling biasa digunakan, tetapi ada perkara lain yang boleh anda lakukan. Bergantung pada ukuran aplikasi anda dan siapa yang ingin melihat kodnya (ini akan menjadi skrip FOSS, atau apa sahaja di dalam rumah) akan sangat mempengaruhi bagaimana anda ingin menyelesaikan pemalam.

kdeloach mempunyai contoh yang bagus, tetapi pelaksanaan dan fungsi cangkuknya agak tidak selamat. Saya akan meminta anda lebih banyak maklumat mengenai sifat aplikasi php untuk e-mel anda, dan bagaimana anda melihat pemalam.

1 untuk kdeloach dari saya.

Inilah pendekatan yang saya gunakan, ia cuba menyalin dari mekanisme isyarat / slot Qt, sejenis corak Observer. Objek boleh mengeluarkan isyarat. Setiap isyarat mempunyai pengecam dalam sistem - ia terdiri daripada id + objek pengirim. Setiap isyarat boleh diikat ke penerima, yang hanya "boleh dipanggil", anda menggunakan kelas bas untuk menghantar isyarat kepada sesiapa yang berminat menerimanya Apabila sesuatu berlaku, anda menghantar isyarat. Berikut adalah contoh dan contoh pelaksanaan

log masuk (); ?>

Saya dapati cara termudah adalah dengan mengikuti nasihat Jeff dan melihat kod yang ada. Cuba lihat Wordpress, Drupal, Joomla dan PHP-CMS terkenal lain untuk melihat bagaimana API dan rupa mereka. Dengan cara ini, anda bahkan dapat memperoleh idea yang mungkin tidak anda fikirkan sebelumnya untuk menjadikan sesuatu menjadi lebih tebal.

Jawapan yang lebih langsung adalah menulis fail generik yang akan disertakan dalam fail termasuk untuk memastikan kebolehgunaan. Ini akan dikategorikan dan TIDAK disediakan dalam satu fail "hooks.php" MASSIVE. Hati-hati, kerana akhirnya fail yang disertakan akhirnya mempunyai lebih banyak kebergantungan dan fungsi. Cuba hadkan kebergantungan API. Fail I.E lebih sedikit untuk disertakan.

Terdapat projek kemas yang dipanggil