themosis: Pendekatan moden untuk pembangunan WordPress
penghinaan saya untuk codebase kusut WordPress terkenal. Saya menasihati penggunaannya melainkan jika anda mahir secara teknikal. Walau bagaimanapun, kritikan saya berpunca daripada keinginan untuk penambahbaikan -harapan bahawa alternatif yang unggul akan muncul, menawarkan proses pembangunan yang lebih logik dan cekap. Sebarang percubaan untuk menyelaraskan WordPress adalah, pada pandangan saya, langkah positif.
Baru -baru ini, projek yang dipanggil Themosis muncul, dibebankan sebagai "rangka kerja untuk pemaju WordPress." Artikel ini meneroka themosis, penggunaannya, dan mengkaji contoh projeknya -aplikasi kedai buku.
sorotan utama:
- Themosis adalah projek novel yang direka sebagai rangka kerja untuk pemaju WordPress, yang bertujuan untuk memudahkan pembangunan dan mengenakan struktur pada seni bina plugin Chaotic WordPress.
- Tidak seperti kerangka tradisional, fungsi themosis sebagai API yang mengintegrasikan dengan WordPress untuk meningkatkan pembangunan. Ia membolehkan pemaju membina komponen WordPress menggunakan ciri PHP moden (ruang nama, kelas, fungsi tanpa nama) dan komposer.
- Pemasangan Themosis bergantung pada komposer dan alat baris arahan WordPress. Komposer mencipta projek themosis, secara automatik menggabungkan versi WordPress terkini. Skrip pemasangan WordPress standard melengkapkan persediaan.
- themosis masih dalam peringkat awal (versi 1.0 yang belum selesai). Walaupun belia, ia menunjukkan janji dalam mempromosikan amalan reka bentuk yang lebih baik dalam ekosistem PHP, walaupun dalam kekangan teras WordPress.
Memahami Themosis
Themosis bukan rangka kerja dalam erti kata tradisional. Ia adalah API yang mengintegrasikan dengan WordPress untuk memudahkan pembangunan tetapi tidak semestinya mengurangkan saiznya. Themosis menyediakan API untuk mewujudkan komponen WordPress menggunakan PHP moden, termasuk ruang nama, kelas, fungsi tanpa nama, dan sokongan komposer.
Pada dasarnya, themosis adalah plugin WordPress yang berkuasa MVC, Laravel yang digunakan untuk membina plugin lain. Ia termasuk penghala sendiri (definisi laluan gaya Laravel) dan enjin templat (Scout), sama dengan Laravel dan Phalcon, dengan sokongan WordPress yang ditambah. Sebagai contoh, gelung templat:
@loop(array('post_type' => 'post', 'posts_per_page' => -1)) <h1>{{ Loop::title() }}</h1> <div> {{ Loop::content() }} </div> @endloopmenggunakan API WordPress untuk pengambilan data, dan kelas
direka khusus untuk gelung kandungan WordPress. Loop
Pemasangan
Pemasangan Themosis melibatkan komposer dan alat baris arahan WordPress. Mewujudkan projek themosis dengan komposer secara automatik termasuk versi WordPress terkini; Skrip pemasangan WordPress standard memuktamadkan persediaan. Rujuk kepada arahan pemasangan rasmi, atau percubaan dengan projek contoh terlebih dahulu (terperinci di bawah).
Projek Contoh: App Bookstore
Themosis menyediakan contoh aplikasi kedai buku.
Menguji aplikasi kedai buku
Untuk mengujinya, anda boleh menggunakan Homestead bertambah baik. Daftarkan laman web baru dengan:
@loop(array('post_type' => 'post', 'posts_per_page' => -1)) <h1>{{ Loop::title() }}</h1> <div> {{ Loop::content() }} </div> @endloop
ingat untuk menambah bookstore.local
ke fail /etc/hosts
. Ikuti arahan. Persediaan ini membolehkan eksperimen tanpa risiko -semata -mata membina semula VM untuk membalikkan sebarang perubahan. git clone http://m.miracleart.cn/link/7101e4daaff4511510bbd4e6a0862fb7 themosis_example
http://bookstore.local:8000
Walaupun penampilan awal tidak terobosan (mana -mana tapak WordPress boleh dikonfigurasi sama), dua pemerhatian utama menonjol:
persediaan sangat cepat dan mudah. ??
- Prestasi sangat mengejutkan, memandangkan lapisan tambahan Themosis mengakses API WordPress.
- Peperiksaan kod
Kod kedai buku tinggal di GitHub: http://m.miracleart.cn/link/7101E4DAAFF4511510BBBD4E6A0862FB7 . Oleh kerana Themosis adalah plugin, kod kedai buku terletak dalam direktori pluginnya:
(logik WordPress berkuasa mereka), (themosis sumber kod-menetapkan rangka kerja lain), dan (kebergantungan komposer).
Walaupun kod itu menggabungkan amalan moden (ruang nama, kelas, dokumentasi komprehensif), elemen yang ketinggalan zaman masih kekal (mis., app
, menutup tag php). src
vendor
Kod themosis diedarkan di dua lokasi: penghalaan dan persembahan berada dalam tema, manakala logik aplikasi berada dalam folder plugin.
<?php defined('DS') or die('No direct script access.');
Struktur MVC
Struktur MVC ditakrifkan dengan baik, walaupun pemecahan di dua folder induk dapat diperbaiki. Folder routes
(serupa dengan Laravel) menggunakan sintaks setanding. Pengawal dipisahkan dari pandangan, dan model digunakan oleh pengawal, lulus data ke pandangan. Contoh dari home.controller.php
:
@loop(array('post_type' => 'post', 'posts_per_page' => -1)) <h1>{{ Loop::title() }}</h1> <div> {{ Loop::content() }} </div> @endloop
Pandangan Gunakan notasi titik untuk traversal (mis., pages.home
peta ke app/views/pages/home.scout.php
).
Routing dengan parameter
Routing adalah mudah. Halaman carian, misalnya, secara langsung menggunakan fungsi carian WordPress:
- map: bookstore.local to: /home/vagrant/Code/themosis_example
Pendekatan ini Abstrak Fungsi Carian WordPress yang sememangnya cacat, memudahkan penggantian yang lebih mudah. ??
Mewujudkan halaman tersuai
mari kita buat halaman tersuai dengan pengawal dan paparan.
- tambahkan laluan ke
routes.php
:
return View::make('pages.home')->with(array( 'promo' => Books::getPromoBook($this->page), 'books' => Books::getPopularBooks($this->bookId), 'news' => News::get(), 'newspage' => get_page_by_path('news') ));
- Buat
pages/test.scout.php
:
// Search page Route::is('search', function(){ return View::make('search', array('search' => $_GET['s'])); });
- tambah pengawal (
): controllers/Test_Controller.php
Route::only('page', 'test', 'test@index');Ini akan menjadikan "Hello World" untuk
dalam kebanyakan rangka kerja. Walau bagaimanapun, kerana themosis bergantung pada WordPress, kita mesti menambah halaman ke sistem. /test
mesej "Hello World" membuat semula selepas tambah nilai.
Untuk memasukkan kandungan halaman, kita perlu mengakses pembolehubah global dan lulus ke pandangan. Ini menyerlahkan kebergantungan pembolehubah global WordPress.
Mengubah pengawal: $post
dan paparan:
@include('header') Hello World @include('footer')menjadikan halaman dengan betul.
<?php class Test_Controller{ public function index(){ return View::make('pages.test'); } }
Walaupun agak rumit, pembalut yang kuat untuk memberikan kandungan WordPress memberikan struktur dan kejelasan, meningkatkan ketegaran WordPress.
Kesimpulan
Themosis menyediakan pengalaman seperti Laravel untuk pembangunan plugin WordPress. Ia memperkenalkan struktur dan enkapsulasi yang sangat diperlukan untuk seni bina plugin WordPress.
Walaupun masih dalam peringkat awal (versi 0.8), themosis adalah projek yang menjanjikan. Penggunaan amalan reka bentuk yang baik adalah penting untuk komuniti PHP, dan themosis menawarkan sumbangan yang berharga, walaupun dalam batasan teras WordPress.
(bahagian Soalan Lazim telah ditinggalkan kerana kekangan panjang tetapi boleh mudah dijelaskan dan dimasukkan sama dengan teks yang lain.)
Atas ialah kandungan terperinci Pertama melihat Themosis, rangka kerja untuk pemaju WordPress. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Sebab-sebab utama mengapa WordPress menyebabkan lonjakan dalam penggunaan CPU pelayan termasuk masalah pemalam, pertanyaan pangkalan data yang tidak cekap, kualiti kod tema yang buruk, atau lonjakan trafik. 1. 2. Masukkan mod penyelesaian masalah untuk secara beransur-ansur membolehkan pemalam untuk menyelesaikan masalah kesesakan prestasi, gunakan QueryMonitor untuk menganalisis pelaksanaan pemalam dan memadam atau menggantikan pemalam yang tidak cekap; 3. Pasang pemalam cache, bersihkan data berlebihan, menganalisis log pertanyaan perlahan untuk mengoptimumkan pangkalan data; 4. Periksa sama ada topik itu mempunyai masalah seperti kandungan beban, pertanyaan kompleks, atau kekurangan mekanisme caching. Adalah disyorkan untuk menggunakan ujian topik standard untuk membandingkan dan mengoptimumkan logik kod. Ikuti langkah -langkah di atas untuk memeriksa dan menyelesaikan lokasi dan selesaikan masalah satu demi satu.

Fail JavaScript Minive boleh meningkatkan kelajuan memuatkan laman web WordPress dengan mengeluarkan kosong, komen, dan kod yang tidak berguna. 1. Gunakan pemalam cache yang menyokong penggabungan mampatan, seperti w3totalcache, aktifkan dan pilih mod mampatan dalam pilihan "Minify"; 2. Gunakan plug-in mampatan khusus seperti fastvelocityminify untuk memberikan lebih banyak kawalan berbutir; 3. Secara manual memampatkan fail JS dan memuat naiknya melalui FTP, sesuai untuk pengguna yang biasa dengan alat pembangunan. Perhatikan bahawa beberapa tema atau skrip plug-in mungkin bertentangan dengan fungsi mampatan, dan anda perlu menguji fungsi laman web dengan teliti selepas pengaktifan.

Kaedah untuk mengoptimumkan tapak WordPress yang tidak bergantung pada pemalam termasuk: 1. Gunakan tema ringan, seperti Astra atau GeneratePress, untuk mengelakkan tema tumpukan; 2. Secara manual memampatkan dan menggabungkan fail CSS dan JS untuk mengurangkan permintaan HTTP; 3. Mengoptimumkan imej sebelum memuat naik, gunakan format web dan saiz fail kawalan; 4. Configure.htaccess untuk membolehkan cache penyemak imbas, dan sambungkan ke CDN untuk meningkatkan kelajuan pemuatan sumber statik; 5. Hadkan semakan artikel dan data yang kerap dibersihkan data yang berlebihan.

Cara yang paling berkesan untuk mengelakkan spam komen adalah untuk mengenal pasti dan memintasnya secara automatik melalui cara programatik. 1. Menggunakan mekanisme kod pengesahan (seperti Googler Captcha atau HCaptcha) untuk membezakan secara berkesan antara manusia dan robot, terutama yang sesuai untuk laman web awam; 2. Tetapkan bidang tersembunyi (teknologi honeypot), dan gunakan robot untuk mengisi ciri -ciri secara automatik untuk mengenal pasti komen spam tanpa menjejaskan pengalaman pengguna; 3. Semak senarai hitam Kata Kunci Kandungan Komen, maklumat spam penapis melalui pemadanan kata yang sensitif, dan perhatikan untuk mengelakkan salah faham; 4. Hakim kekerapan dan sumber IP komen, hadkan bilangan penyerahan per unit masa dan buat senarai hitam; 5. Gunakan perkhidmatan anti-spam pihak ketiga (seperti Akismet, CloudFlare) untuk meningkatkan ketepatan pengenalan. Boleh berdasarkan laman web

Transientsapi adalah alat terbina dalam di WordPress untuk menyimpan data tamat tempoh automatik sementara. Fungsi terasnya adalah set_transient, get_transient dan delete_transient. Berbanding dengan OptionsAPI, transien menyokong penetapan masa kelangsungan hidup (TTL), yang sesuai untuk senario seperti hasil permintaan API cache dan data pengkomputeran yang kompleks. Apabila menggunakannya, anda perlu memberi perhatian kepada keunikan penamaan utama dan ruang nama, mekanisme "penghapusan malas" cache, dan isu yang mungkin tidak bertahan dalam persekitaran cache objek. Senario aplikasi biasa termasuk mengurangkan kekerapan permintaan luaran, mengawal irama pelaksanaan kod, dan meningkatkan prestasi pemuatan halaman.

Apabila membangunkan blok gutenberg, kaedah aset enqueue yang betul termasuk: 1. Gunakan daftar_block_type untuk menentukan laluan editor_script, editor_style dan gaya; 2. Daftar sumber melalui wp_register_script dan wp_register_style dalam fungsi.php atau plug-in, dan tetapkan kebergantungan dan versi yang betul; 3. Konfigurasikan alat binaan untuk mengeluarkan format modul yang sesuai dan pastikan laluan itu konsisten; 4. Kawalan logik pemuatan gaya depan melalui add_theme_support atau enqueue_block_assets untuk memastikan logik pemuatan gaya front-end dipastikan.

Untuk menambah medan pengguna tersuai, anda perlu memilih kaedah lanjutan mengikut platform dan memberi perhatian kepada pengesahan data dan kawalan kebenaran. Amalan umum termasuk: 1. Gunakan jadual tambahan atau pasangan nilai utama pangkalan data untuk menyimpan maklumat; 2. Tambah kotak input ke hujung depan dan diintegrasikan dengan hujung belakang; 3. Mengatasi Pemeriksaan Format dan Kebenaran Akses untuk Data Sensitif; 4. Kemas kini antara muka dan templat untuk menyokong paparan dan penyuntingan medan baru, sambil mengambil kira penyesuaian mudah alih dan pengalaman pengguna.

Kunci untuk menambah peraturan penulisan semula tersuai di WordPress adalah dengan menggunakan fungsi add_rewrite_rule dan pastikan peraturan berkuatkuasa dengan betul. 1. Gunakan add_rewrite_rule untuk mendaftarkan peraturan, formatnya adalah add_rewrite_rule ($ regex, $ redirect, $ selepas), di mana $ regex adalah url yang sepadan dengan ungkapan biasa, $ redirect menentukan pertanyaan sebenar, dan $ selepas mengawal lokasi peraturan; 2. Pembolehubah pertanyaan tersuai perlu ditambah melalui add_filter; 3. Selepas pengubahsuaian, tetapan pautan tetap mesti disegarkan semula; 4. Adalah disyorkan untuk meletakkan peraturan di 'atas' untuk mengelakkan konflik; 5. Anda boleh menggunakan pemalam untuk melihat peraturan semasa untuk kemudahan
