Inti WordPress dibina di atas siri objek/kelas yang digunakan untuk mengawal segala -galanya dari manipulasi pangkalan data ke rupa dan nuansa laman web anda.
Sepanjang tutorial ini, kami akan melihat ke dalam reka bentuk berorientasikan objek dan bagaimana anda boleh menggunakannya dalam aplikasi praktikal ketika membangun untuk WordPress termasuk:
Nota 2: Jika anda berminat memuat turun segala -galanya dengan segera, sila memuat turun sumber dari repositori GitHub saya dan ikuti bersama tutorial.
mari kita melompat ke dalamnya!
Takeaways Key
dengan reka bentuk berorientasikan objek anda membuat struktur (kelas) yang akan mengumpulkan bersama semua fungsi berkaitan (kaedah) dan maklumat (sifat) untuk menyelesaikan masalah.
Ini berbeza daripada pembangunan prosedur di mana anda membuat fungsi dan pembolehubah untuk menyelesaikan isu-isu, bagaimanapun, unsur-unsur ini boleh dipisahkan di pelbagai fail, diisytiharkan semula dan sering longgar. Reka bentuk yang berorientasikan objek berorientasikan objek adalah mengenai menyatukan fungsi yang berkaitan ke dalam satu tempat supaya ia dapat dikekalkan, diperluaskan dan digunakan dari satu lokasi.
Oleh kerana kod prosedur telah berfungsi dengan baik, anda mungkin tertanya -tanya apa gunanya dalam membangunkan pendekatan berorientasikan objek?
Walaupun tidak ada 'salah' dengan reka bentuk prosedur, terdapat beberapa manfaat untuk berkembang dalam gaya berorientasikan objek.
Kod anda pada umumnya lebih teratur apabila menggunakan pendekatan berorientasikan objek. Mewujudkan kelas bermaksud bahawa fungsi untuk menyelesaikan masalah anda adalah dalam fail (tidak seperti pembangunan prosedur di mana anda mungkin mempunyai fungsi dan pembolehubah yang tersebar di mana -mana).
Mempunyai semua kod anda di satu tempat membantu anda menyimpan perkara yang teratur dan membantu pemaju lain yang mungkin datang dan perlu memahami bagaimana sistem anda berfungsi.
Tidak ada yang lebih buruk daripada mengambil projek dan perlu diburu untuk mencari fungsi dan pembolehubah yang digunakan untuk membuat pelbagai elemen tapak (yang selalu tersebar di pelbagai fail untuk alasan yang tidak diketahui).
Apabila menyelesaikan masalah dengan pendekatan berorientasikan objek, anda membuat kelas.
Kelas -kelas ini boleh diperluas atau ditingkatkan dengan memperluaskannya menggunakan warisan. Warisan akan membolehkan anda membuat kelas berdasarkan kelas lain yang memberikan akses kepada semua sifat dan kaedahnya ke kelas baru.
anda boleh mengembangkan kelas untuk melaksanakan fungsi tambahan, atau bahkan mengatasi kaedah dan sifatnya untuk memenuhi syarat.
dengan kod prosedur, anda sama ada perlu refactor sebahagian daripada kod anda atau membuat kod baru sepenuhnya untuk menangani situasi tambahan.
Tujuan reka bentuk berorientasikan objek adalah untuk merangkum semua fungsi untuk menyelesaikan situasi ke dalam kelas.
Oleh kerana semua kod untuk menyelesaikan masalah adalah di dalam kelas dan kelas itu secara amnya dalam fail PHP sendiri, anda boleh mengambil keseluruhan fail dan menggunakannya di lokasi lain, oleh itu ia bersifat modular.
Manfaat ini ialah jika anda menulis kelas dengan cukup baik, anda harus dapat menggunakannya semula kemudian dan hanya perlu melakukan penyesuaian sedikit.Walaupun anda boleh menyalin dan menampal kod prosedur, ia secara amnya tidak teratur dan anda mungkin perlu melalui beberapa fail untuk memastikan anda mempunyai fungsi yang diperlukan.
Contoh Senario - Membuat Pameran Acara Mudah
Langkah -langkah pertama adalah untuk memecahkan fungsi yang dikehendaki supaya kami dapat merancang penyelesaian kami (merancang dengan baik di sini akan membantu pendekatan berorientasi objek kami ke hadapan). Dalam senario kami, kami dapat melihat set tugas berikut:
kita boleh membuat sama ada plugin atau kita boleh mengedit tema kanak -kanak untuk menyediakan fungsi ini.
Untuk senario ini, kami akan membuat fungsi kami di dalam fail yang kemudiannya boleh disertakan dalam tema kanak -kanak. Saya telah memilih kaedah ini kerana kami ingin mengedit templat tema kami supaya kami dapat mengeluarkan maklumat acara tambahan kami.
Mendapatkan direktori anda disediakan dan membuat fail andaCara mudah untuk mengatur segala -galanya adalah dengan membuat direktori termasuk di dalam tema anak anda. Direktori ini akan mengandungi kod atau fungsi lain tema anda akan termasuk/melaksanakan (anda boleh memanggil apa sahaja yang anda mahukan, tujuannya adalah untuk mempunyai satu direktori di dalam tema).
Di dalam direktori ini kita harus membuat folder lain, kali ini dipanggil event_showcase. Ia berada di dalam folder ini kami akan meletakkan semua fail kami yang berkenaan untuk senario ini. Kami juga memerlukan folder JS dan CSS.
Mengatur fungsi anda ke dalam folder akan bermakna bahawa ke depan anda dapat dengan lebih mudah melihat modul / ciri -ciri alat tema anda. Sebagai contoh, anda mungkin mahu melaksanakan satu lagi fungsi fungsi untuk tema anda, anda hanya boleh menambah folder baru dan secara logik semuanya teratur dengan kemas.
mari kita buat fail untuk contoh kami dan gerakkannya ke dalam direktori yang betul
Memuatkan fail anda di dalam WordPress
Buka fungsi tema anak anda.php dan letakkan kod berikut sama ada bahagian atas atau bawah
<span>//Theme functions for child theme </span> <span>//load our event showcase class </span><span>$event_showcase = get_stylesheet_directory() . '/includes/event_showcase/event_showcase_class.php'; </span><span>include($event_showcase);</span>
Membuat garis besar kelas anda
Salin kod berikut ke dalam fail kelas anda.
<span>//Theme functions for child theme </span> <span>//load our event showcase class </span><span>$event_showcase = get_stylesheet_directory() . '/includes/event_showcase/event_showcase_class.php'; </span><span>include($event_showcase);</span>
mari kita lari melalui kaedah dan sifat supaya kita dapat memahami aliran proses:
mari kita pergi sekarang dan mengemas kini unsur -unsur ini dan menggariskan kod
Kami mengisytiharkan beberapa sifat di bahagian atas kelas kami yang akan dirujuk melalui kaedah kami. Tujuannya ialah mereka memudahkan untuk mengharapkan semula kelas ini dan mengubah fungsinya pada masa akan datang.
<span>/* </span><span> * Event Showcase </span><span> * Creates an 'event' content type to showcase upcoming functions and information </span><span> * Uses hooks and filters inside your theme to output relevant information </span><span> */ </span> <span>class event_showcase{ </span> <span>//variables </span> <span>private $directory = ''; </span> <span>private $singular_name = 'event'; </span> <span>private $plural_name = 'events'; </span> <span>private $content_type_name = 'event_showcase'; </span> <span>//magic function, called on creation </span> <span>public function __construct(){} </span> <span>//sets the directory (path) so that we can use this for our enqueuing </span> <span>public function set_directory_value(){} </span> <span>//check if we need to flush rewrite rules </span> <span>public function check_flush_rewrite_rules(){} </span> <span>//enqueue public scripts and styles </span> <span>public function enqueue_public_scripts_and_styles(){} </span> <span>//enqueue admin scripts and styles </span> <span>public function enqueue_admin_scripts_and_styles(){} </span> <span>//adding our new content type </span> <span>public function add_content_type(){} </span> <span>//adding meta box to save additional meta data for the content type </span> <span>public function add_meta_boxes_for_content_type(){} </span> <span>//displays the visual output of the meta box in admin (where we will save our meta data) </span> <span>public function display_function_for_content_type_meta_box($post){} </span> <span>//when saving the custom content type, save additional meta data </span> <span>public function save_custom_content_type($post_id){} </span> <span>//display additional meta information for the content type </span> <span>//@hooked using 'display_additional_meta_data' in theme </span> <span>function display_additional_meta_data(){} </span> <span>} </span> <span>//create new object </span> <span>$event_showcase = new event_showcase;</span>
fungsi __construct kami adalah fungsi sihir. Fungsi ini adalah fungsi PHP5 khas yang boleh diakses oleh kelas untuk melakukan tindakan tertentu.
semuanya bermula dengan garis bawah dua sebelum nama mereka dan boleh dimasukkan secara pilihan dalam mana -mana definisi kelas. Memahami semua fungsi sihir yang terbaik untuk perbincangan lain (di sini adalah satu lagi artikel mengenai fungsi sihir dan pemalar).
Fungsi __Construct dipanggil sebaik sahaja kelas dimulakan supaya ia adalah fungsi pertama yang akan dicetuskan. Di sinilah kami menambah semua cangkuk, penapis dan logik permulaan kami. Kemas kini garis asas dengan kod berikut.
<span>//variables </span><span>private $directory = ''; </span><span>private $singular_name = 'event'; </span><span>private $plural_name = 'events'; </span><span>private $content_type_name = 'event_showcase';</span>
anda mungkin berfikir bahawa add_action kelihatan sedikit berbeza daripada apa yang mungkin anda lihat sebelumnya dan anda betul.
Apabila menggunakan panggilan add_action dan add_filter di dalam kelas, anda mesti membekalkan hujah kedua dalam array. Nilai pertama array adalah $ pembolehubah ini (yang bermaksud kelas itu sendiri) dan yang kedua adalah nama fungsi yang akan digunakan (dibungkus dalam petikan).
untuk maklumat lanjut lihat nota kaki kelas untuk fungsi add_action pada codex wordpress.
Oleh kerana kita akan enqueuing CSS dan JS, masuk akal untuk menyimpan URL direktori fail ke dalam pembolehubah yang boleh kita akses. Struktur direktori kami adalah /termasuk /event_showcase namun ia boleh disesuaikan sesuai dengan struktur anda.
<span>//Theme functions for child theme </span> <span>//load our event showcase class </span><span>$event_showcase = get_stylesheet_directory() . '/includes/event_showcase/event_showcase_class.php'; </span><span>include($event_showcase);</span>
Oleh kerana kami menambah jenis kandungan tersuai, kami perlu mengendalikan permalink yang cantik; Permalinks ini ditulis semula yang menjadikan URL halaman anda kelihatan kurang hodoh (bukannya mempunyai http://mywebsite.com.au/?p=123 Anda boleh mempunyai http://mywebsite.com.au/my-event).
Menulis semula memastikan bahawa jenis kandungan anda ditukar kepada format yang cantik, namun, penulisan semula ini mahal dan jika dilakukan secara berlebihan dapat memperlahankan tapak anda. Kerana penulisan semula boleh mempengaruhi laman web anda, biasanya hanya diubah pada pengaktifan tema/plugin atau penyahaktifan.Oleh kerana anda mungkin tidak mahu mengemas kini permalink anda secara manual, fungsi ini meminta WordPress untuk melakukannya secara automatik dan hanya sekali (selepas jenis kandungan baru anda telah ditambah).
Fungsi ini akan menyemak untuk melihat sama ada laman web perlu dibuang melalui pilihan tema. Sekiranya siram diperlukan, ia akan mengemas kini permalinks dan kemudian tetapkan nilai pilihan kepada palsu (jadi ia hanya mencetuskan sekali, tidak setiap kali kita memuatkan halaman).
<span>/* </span><span> * Event Showcase </span><span> * Creates an 'event' content type to showcase upcoming functions and information </span><span> * Uses hooks and filters inside your theme to output relevant information </span><span> */ </span> <span>class event_showcase{ </span> <span>//variables </span> <span>private $directory = ''; </span> <span>private $singular_name = 'event'; </span> <span>private $plural_name = 'events'; </span> <span>private $content_type_name = 'event_showcase'; </span> <span>//magic function, called on creation </span> <span>public function __construct(){} </span> <span>//sets the directory (path) so that we can use this for our enqueuing </span> <span>public function set_directory_value(){} </span> <span>//check if we need to flush rewrite rules </span> <span>public function check_flush_rewrite_rules(){} </span> <span>//enqueue public scripts and styles </span> <span>public function enqueue_public_scripts_and_styles(){} </span> <span>//enqueue admin scripts and styles </span> <span>public function enqueue_admin_scripts_and_styles(){} </span> <span>//adding our new content type </span> <span>public function add_content_type(){} </span> <span>//adding meta box to save additional meta data for the content type </span> <span>public function add_meta_boxes_for_content_type(){} </span> <span>//displays the visual output of the meta box in admin (where we will save our meta data) </span> <span>public function display_function_for_content_type_meta_box($post){} </span> <span>//when saving the custom content type, save additional meta data </span> <span>public function save_custom_content_type($post_id){} </span> <span>//display additional meta information for the content type </span> <span>//@hooked using 'display_additional_meta_data' in theme </span> <span>function display_additional_meta_data(){} </span> <span>} </span> <span>//create new object </span> <span>$event_showcase = new event_showcase;</span>
Kami menggunakan nama jenis kandungan dalam panggilan enqueue supaya tidak ada konflik penamaan dengan plugin lain (kerana ia akan diterjemahkan ke dalam sesuatu yang unik i.e `event_showcase_public_scripts`).
kami memanggil kedua -dua wp_enqueue_style dan wp_enqueue_script untuk memuatkan sumber kami.
kami juga menggunakan direktori $ dan $ content_type_name sifat semasa memuatkan sumber kami.
enqueue_admin_scripts_and_styles ()
<span>//variables </span><span>private $directory = ''; </span><span>private $singular_name = 'event'; </span><span>private $plural_name = 'events'; </span><span>private $content_type_name = 'event_showcase';</span>
kami periksa untuk melihat sama ada kami berada di skrin edit atau skrin baru untuk jenis kandungan kami dan teruskan hanya jika kami (tidak perlu memuat sumber apabila kami tidak berada di halaman yang betul).
kami memanggil kedua -dua wp_enqueue_style dan wp_enqueue_script untuk memuat sumber kami, pada dasarnya sama dengan fungsi awam kami.
Untuk contoh ini, saya menggunakan kedua -dua JQuery UI DatePicker (sebahagian daripada Perpustakaan UI JQuery) dan pemetik masa JQuery UI (dibina untuk mempunyai gaya yang sama seperti pemetik tarikh).
pergi dan muat turun perpustakaan masa pemetik dari pautan di atas dan sertakan fail CSS dan JS yang berkaitan di dalam direktori anda.
add_content_type ()
<span>//magic function, called on creation </span><span>public function __construct(){ </span> <span>$this->set_directory_value(); //set the directory url on creation </span> <span>add_action('init', array($this,'add_content_type')); //add content type </span> <span>add_action('init', array($this,'check_flush_rewrite_rules')); //flush re-write rules for permalinks (because of content type) </span> <span>add_action('add_meta_boxes', array($this,'add_meta_boxes_for_content_type')); //add meta boxes </span> <span>add_action('wp_enqueue_scripts', array($this,'enqueue_public_scripts_and_styles')); //enqueue public facing elements </span> <span>add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts_and_styles')); //enqueues admin elements </span> <span>add_action('save_post_' . $this->content_type_name, array($this,'save_custom_content_type')); //handles saving of content type meta info </span> <span>add_action('display_content_type_meta', array($this,'display_additional_meta_data')); //displays the saved content type meta info </span><span>}</span>
Fungsi ini menggunakan $ singular_name, $ plural_name dan $ content_type_nameproperties untuk membuat pendaftaran jenis pos baru ini mudah.
Penstrukturan fungsi pendaftaran seperti ini bermakna anda boleh menukar dan mendaftarkan jenis pos dengan mudah dengan hanya beberapa keping maklumat.
Untuk garis besar yang lebih terperinci mengenai mendaftarkan jenis kandungan tersuai sila lihat Codex WordPress untuk fungsi register_post_type
<span>//Theme functions for child theme </span> <span>//load our event showcase class </span><span>$event_showcase = get_stylesheet_directory() . '/includes/event_showcase/event_showcase_class.php'; </span><span>include($event_showcase);</span>
Sebaik sahaja anda telah menambah langkah ini, anda harus melihat item baru telah ditambah ke menu WordPress back-end.
Kami menambah kotak meta yang kami perlukan untuk jenis kandungan kami di sini. Kami memanggil fungsi add_meta_box dan memberikannya dengan fungsi. Kisah pendek ialah kita menggunakan ini untuk membuat kotak admin baru untuk memegang elemen bentuk baru kita yang ingin kita simpan.
<span>/* </span><span> * Event Showcase </span><span> * Creates an 'event' content type to showcase upcoming functions and information </span><span> * Uses hooks and filters inside your theme to output relevant information </span><span> */ </span> <span>class event_showcase{ </span> <span>//variables </span> <span>private $directory = ''; </span> <span>private $singular_name = 'event'; </span> <span>private $plural_name = 'events'; </span> <span>private $content_type_name = 'event_showcase'; </span> <span>//magic function, called on creation </span> <span>public function __construct(){} </span> <span>//sets the directory (path) so that we can use this for our enqueuing </span> <span>public function set_directory_value(){} </span> <span>//check if we need to flush rewrite rules </span> <span>public function check_flush_rewrite_rules(){} </span> <span>//enqueue public scripts and styles </span> <span>public function enqueue_public_scripts_and_styles(){} </span> <span>//enqueue admin scripts and styles </span> <span>public function enqueue_admin_scripts_and_styles(){} </span> <span>//adding our new content type </span> <span>public function add_content_type(){} </span> <span>//adding meta box to save additional meta data for the content type </span> <span>public function add_meta_boxes_for_content_type(){} </span> <span>//displays the visual output of the meta box in admin (where we will save our meta data) </span> <span>public function display_function_for_content_type_meta_box($post){} </span> <span>//when saving the custom content type, save additional meta data </span> <span>public function save_custom_content_type($post_id){} </span> <span>//display additional meta information for the content type </span> <span>//@hooked using 'display_additional_meta_data' in theme </span> <span>function display_additional_meta_data(){} </span> <span>} </span> <span>//create new object </span> <span>$event_showcase = new event_showcase;</span>
kami menggunakan fungsi ini untuk mengeluarkan pilihan back-end untuk maklumat meta baru untuk jenis kandungan kami.
Sebagai contoh, kami mengumpul tarikh, masa dan maklumat lain mengenai peristiwa yang akan kami tunjukkan kepada pengguna akhir.
kita mulakan dengan mengumpul semua meta pos tambahan ke dalam pembolehubah dan memaparkan output borang HTML. Beberapa bidang ini akan mencetuskan antara muka pemetik tarikh dan yang lain akan mencetuskan pemetik masa (ditentukan oleh kelas yang digunakan pada elemen).
Di samping itu, kami menetapkan medan nonce supaya kami dapat mengesahkan simpan jika permintaan itu datang dari halaman ini.
<span>//variables </span><span>private $directory = ''; </span><span>private $singular_name = 'event'; </span><span>private $plural_name = 'events'; </span><span>private $content_type_name = 'event_showcase';</span>
Apabila anda selesai dengan langkah ini, anda harus melihat kotak meta kosong baru telah berubah dan kini dapat memegang semua maklumat baru kami.
di sinilah kami menyimpan data meta tambahan kami untuk jenis kandungan tersuai kami.
kami mula -mula memeriksa nonce yang kami tambah dalam kotak meta kami dan mengesahkan keasliannya. Selepas ini, kami menyemak bahawa kami tidak melakukan autosave dan pengguna sebenarnya boleh mengedit halaman ini. Sekiranya semua cek itu diluluskan, kami bergerak ke hadapan.
Kami mengumpulkan semua nilai kami ke dalam pembolehubah dan membersihkannya menggunakan fungsi sanitize_text_field. Selepas ini, kami memanggil fungsi update_post_meta untuk menyimpan data kami.
<span>//magic function, called on creation </span><span>public function __construct(){ </span> <span>$this->set_directory_value(); //set the directory url on creation </span> <span>add_action('init', array($this,'add_content_type')); //add content type </span> <span>add_action('init', array($this,'check_flush_rewrite_rules')); //flush re-write rules for permalinks (because of content type) </span> <span>add_action('add_meta_boxes', array($this,'add_meta_boxes_for_content_type')); //add meta boxes </span> <span>add_action('wp_enqueue_scripts', array($this,'enqueue_public_scripts_and_styles')); //enqueue public facing elements </span> <span>add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts_and_styles')); //enqueues admin elements </span> <span>add_action('save_post_' . $this->content_type_name, array($this,'save_custom_content_type')); //handles saving of content type meta info </span> <span>add_action('display_content_type_meta', array($this,'display_additional_meta_data')); //displays the saved content type meta info </span><span>}</span>
Fungsi ini memaparkan maklumat meta yang disimpan untuk satu jawatan jenis kandungan baru kami (acara tunggal).
kami menentukan tindakan baru yang dipanggil Display_Content_Type_Meta di dalam fungsi __construct kami, inilah yang kelihatan seperti:
<span>//sets the directory (path) so that we can use this for our enqueuing </span><span>public function set_directory_value(){ </span> <span>$this->directory = get_stylesheet_directory_uri() . '/includes/event_showcase'; </span><span>}</span>
Nilai kedua tindakan ini dipanggil Display_additional_meta_data dan sepadan dengan fungsi ini. Ini bermakna bahawa pada bila -bila masa seseorang memanggil do_action ('paparan_content_type_meta'); ia akan memanggil fungsi ini dan memaparkan maklumat meta pos baru.
anda boleh menghubungi do_action ('paparan_content_type_meta'); Dari mana -mana di dalam tema anda (selagi anda berada di satu jawatan jenis kandungan ini) dan ia akan memaparkan maklumat meta.
Saya menggunakan tema induk dua puluh tiga belas jadi saya menyambung ke kandungan.php tema kanak -kanak untuk paparan saya.
Fungsi ini akan mendapat Global $ Post dan $ Post_Type dan periksa bahawa item semasa yang dilihat adalah jenis kandungan baru kami.
selepas ini fungsi mengumpul maklumat meta dan memaparkannya (membuat beberapa pemeriksaan cepat di sepanjang jalan).
<span>//Theme functions for child theme </span> <span>//load our event showcase class </span><span>$event_showcase = get_stylesheet_directory() . '/includes/event_showcase/event_showcase_class.php'; </span><span>include($event_showcase);</span>
Sekarang sebahagian besar fungsi telah selesai, mari kita bertukar ke dalam fail CSS dan JS kami untuk dengan cepat menambah beberapa gaya dan interaktiviti.
<span>/* </span><span> * Event Showcase </span><span> * Creates an 'event' content type to showcase upcoming functions and information </span><span> * Uses hooks and filters inside your theme to output relevant information </span><span> */ </span> <span>class event_showcase{ </span> <span>//variables </span> <span>private $directory = ''; </span> <span>private $singular_name = 'event'; </span> <span>private $plural_name = 'events'; </span> <span>private $content_type_name = 'event_showcase'; </span> <span>//magic function, called on creation </span> <span>public function __construct(){} </span> <span>//sets the directory (path) so that we can use this for our enqueuing </span> <span>public function set_directory_value(){} </span> <span>//check if we need to flush rewrite rules </span> <span>public function check_flush_rewrite_rules(){} </span> <span>//enqueue public scripts and styles </span> <span>public function enqueue_public_scripts_and_styles(){} </span> <span>//enqueue admin scripts and styles </span> <span>public function enqueue_admin_scripts_and_styles(){} </span> <span>//adding our new content type </span> <span>public function add_content_type(){} </span> <span>//adding meta box to save additional meta data for the content type </span> <span>public function add_meta_boxes_for_content_type(){} </span> <span>//displays the visual output of the meta box in admin (where we will save our meta data) </span> <span>public function display_function_for_content_type_meta_box($post){} </span> <span>//when saving the custom content type, save additional meta data </span> <span>public function save_custom_content_type($post_id){} </span> <span>//display additional meta information for the content type </span> <span>//@hooked using 'display_additional_meta_data' in theme </span> <span>function display_additional_meta_data(){} </span> <span>} </span> <span>//create new object </span> <span>$event_showcase = new event_showcase;</span>
<span>//variables </span><span>private $directory = ''; </span><span>private $singular_name = 'event'; </span><span>private $plural_name = 'events'; </span><span>private $content_type_name = 'event_showcase';</span>
<span>//magic function, called on creation </span><span>public function __construct(){ </span> <span>$this->set_directory_value(); //set the directory url on creation </span> <span>add_action('init', array($this,'add_content_type')); //add content type </span> <span>add_action('init', array($this,'check_flush_rewrite_rules')); //flush re-write rules for permalinks (because of content type) </span> <span>add_action('add_meta_boxes', array($this,'add_meta_boxes_for_content_type')); //add meta boxes </span> <span>add_action('wp_enqueue_scripts', array($this,'enqueue_public_scripts_and_styles')); //enqueue public facing elements </span> <span>add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts_and_styles')); //enqueues admin elements </span> <span>add_action('save_post_' . $this->content_type_name, array($this,'save_custom_content_type')); //handles saving of content type meta info </span> <span>add_action('display_content_type_meta', array($this,'display_additional_meta_data')); //displays the saved content type meta info </span><span>}</span>
Apabila semuanya disusun bersama, anda sepatutnya dapat membuat 'acara' baru dengan data meta tambahan. Apabila anda melihat acara anda, anda akan melihat sesuatu untuk sampel saya di bawah
anda dapat melihat sarikata tambahan, tarikh, masa dan data tiket.
Memperluaskan jenis pos asas seperti ini dan menambah elemen tambahan membantu membuat laman web yang lebih interaktif dan mudah untuk dikendalikan. Tidak lagi pengguna perlu menambah semua maklumat tersebut melalui kawasan kandungan yang boleh menjadi kemas, sukar digunakan dan tidak konsisten. Mereka kini mempunyai mudah untuk menguruskan antara muka.
Sekarang anda telah melihat contoh praktikal reka bentuk berorientasikan objek dan betapa mudahnya untuk meningkatkan perkembangan anda, anda boleh menggunakan kemahiran ini dan membina tema dan plugin yang lebih baik.
anda mungkin mahu memuat turun sumber contoh ini dari halaman GitHub saya dan kemudian mengubahnya sesuai dengan projek yang akan datang atau memperluaskannya untuk menyediakan fungsi tambahan.Mudah -mudahan artikel ini akan membantu anda merancang pembangunan anda dan melihat bagaimana metodologi berorientasikan objek dapat menjimatkan masa dan usaha anda.
soalan yang sering ditanya mengenai pembangunan berorientasikan objek dengan WordPress
Pengaturcaraan prosedur dalam WordPress melibatkan menulis senarai arahan untuk komputer untuk mengikuti langkah demi langkah untuk menyelesaikan tugas. Sebaliknya, pengaturcaraan berorientasikan objek menganjurkan program di sekitar datanya (objek) dan satu set antara muka yang jelas kepada data tersebut. Pendekatan ini menjadikannya lebih mudah untuk mengurus dan mengawal aplikasi kompleks dengan memecahkannya ke dalam kepingan yang lebih kecil dan boleh diguna semula.
Atas ialah kandungan terperinci Pembangunan berorientasikan objek dengan WordPress. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!