Apakah semua variabel opsi diambil dari database dan dimuat ke cache pada setiap permintaan?
Ya, semacam. Ketika get_option
panggilan dilakukan, WordPress menjalankan fungsi yang dipanggil wp_load_alloptions
, yang mengambil salinan cache dari semua opsi yang di-load secara otomatis atau memuat semua opsi ke dalam cache. Kemudian wp_load_alloptions
mengembalikan sebuah array dari semua opsi yang diisikan otomatis. Jika opsi Anda dimuat secara otomatis (ditentukan saat Anda menggunakan add_option
fungsi), itu akan menjadi bagian dari array ini dan dikembalikan.
Jika opsi Anda tidak dimuat secara otomatis, WordPress kemudian mencari di dalam cache secara khusus untuk opsi itu dan mengembalikan nilainya jika ada. Jika itu meleset, fallback terakhir adalah pergi ke database, mengambil nilai, mengaturnya cache dan kemudian mengembalikannya.
Akhirnya, jika tidak ada opsi yang ditemukan sama sekali (mis. Nama opsi tidak valid), WordPress menyimpan nama opsi itu dalam array yang di-cache yang disebut notoptions
. Jika panggilan berikutnya ke non-opsi dilakukan, WP memeriksa array notoptions terlebih dahulu sehingga tidak membuang waktu memeriksa sesuatu yang tidak ada.
Jika Anda khawatir menelepon get_option
berulang kali per halaman, jangan lakukan. WordPress akan men-cache nilai opsi setelah get_option
panggilan pertama terlepas dari apakah itu dimuat secara otomatis atau tidak.
Lihat sumbernya untukget_option
melihat apa yang terjadi.
Tidak,
hanya opsi yang secara khusus dimuat dengan autoload yang disetel ke true
Lihat http://codex.wordpress.org/Function_Reference/add_option
Jadi jika itu merupakan opsi yang diperlukan pada setiap halaman, ketika Anda menambahkannya ke db, setel autoload = true.
Setelah itu, cukup gunakan get_option secara normal - wp akan menangani cacheing dll.
Iya nih,
Tidak perlu mengatur autoload ke yes / true. Ini diatur ke yes secara default: http://codex.wordpress.org/Function_Reference/add_option - parameter fungsi terakhir ($ autoload):
Padahal, jika Anda mengaturnya ke tidak, maka opsi tidak akan dimasukkan ke dalam cache.
sumber