Performa dengan pengisian otomatis dan tabel opsi

12

Saya bermain-main dengan autoloadkolom optionstabel. Saya tidak menemukan banyak informasi tentang bagaimana nilai autoloaded digunakan. Saya mencoba print_r($GLOBALS)dan melihat bahwa opsi autoloaded disimpan $GLOBALS['wp_object_cache']->cache['options']['alloptions'].

Apakah ada cara lain untuk mengakses variabel-variabel itu?

Misalkan saya perlu mengakses opsi my_option, yang disetel ke autoload, berkali-kali dalam templat yang berbeda (mis. Sekali masuk header.php, sekali masuk footer.php), metode mana yang disarankan?

  1. Apakah saya boleh mengambilnya dari $GLOBALSarray (karena nilainya sudah ada di sini)
  2. Harus saya gunakan get_option('my_option')sekali dan mengglobalkan variabel itu lagi
  3. Gunakan get_option('my_option')setiap waktu (yang menurut saya tidak penting)
  4. Sesuatu yang lain
RRikesh
sumber

Jawaban:

23

Saya tidak menemukan banyak informasi tentang bagaimana nilai autoloaded digunakan.

Tidak ada case khusus untuk opsi autoloaded, mereka digunakan dengan cara yang sama seperti opsi reguler lainnya, tetapi mari kita cari tahu apa arti autoloadkolom dari optionstabel. Kolom ini menentukan apakah kita perlu mengambil opsi pada tahap inisialisasi permintaan atau haruskah kita mengambil opsi hanya berdasarkan permintaan.

Tetapi ketika autoloading ini terjadi dan apa fungsinya? Semua opsi pengisian otomatis dimuat dan di-cache oleh wp_load_alloptionsfungsi, yang disebut is_blog_installedfungsi pada awal setiap permintaan HTTP, ditangani oleh WP.

Mari kita simpulkan: opsi pengisian otomatis adalah opsi yang sama, tetapi dimuat di awal pemrosesan permintaan HTTP oleh WP.

Misalkan saya perlu mengakses opsi ... metode mana yang disarankan?

  1. Ini pendekatan yang buruk untuk mengambilnya $GLOBALSlangsung, gunakan get_optionsaja
  2. Variabel kustom global tidak diterima dan disarankan untuk melakukannya sesedikit mungkin
  3. Dari sudut pandang saya itu adalah pilihan terbaik untuk Anda
  4. Bahkan jangan memikirkan hal lain :)

Mengapa menggunakan get_optionfungsi setiap kali merupakan opsi terbaik? Karena:

  1. Yang pertama dan yang paling penting karena : Anda dapat yakin bahwa itu akan mengembalikan nilai terbaru, setiap kali Anda menyebutnya.
  2. Ini akan menyimpannya untuk digunakan kembali di masa depan.
  3. Ini memungkinkan plugin dan tema lain untuk mengaitkan opsi Anda dengan mengaitkan option_optionnamefilter.
  4. Ini akan mengambil opsi jika belum dimuat.
Eugene Manuilov
sumber
1
+1 jawaban yang sangat informatif. Belum pernah mendengar tentang opsi hook sebelumnya :)
RRikesh
@rrikesh, selamat datang, harap ini menjelaskan cukup baik
Eugene Manuilov