Ve hangisini kullanmalıyım?
Seçenekler API'sı ve Ayarlar API'sı arasındaki fark nedir ?
100'den fazla yönetici seçeneğine sahip bir temam var, bunları nasıl kaydedip saklamalıyım? Şu anda Seçenekler API'sini kullanıyorum ama bundan çok memnun değilim, her bir seçenek ayrı olarak kaydediliyor, böylece birçok veritabanı sorgusu oluşturuyorlar.
Şu anda WordPress seçeneklerini / ayarlarını depolamanın üç yolunu görüyorum:
1. Seçenekler API - eski (en kötü?) Yol.
(Bunu zaten kullanıyorum)
<form method="post" action="options.php">
<?php wp_nonce_field('update-options'); ?>
// all the inputs
<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="option1,option2,option3,..." />
<p class="submit">
<input type="submit" value="<?php _e('Save Changes') ?>" />
</p>
</form>
Ve sonra ön uçta:
echo get_option('option1');
Çirkin görünüyor ve bunun çok sayıda seçeneği depolamanın doğru yolu olduğunu düşünmüyorum (onları bir şekilde gruplamak isterim).
2. Seçenekler API - büyük bir dizi olarak 1 seçenek.
Nasıl html formları kullanarak bu diziyi güncellemek için emin değilim, kimse? Gibi olması gerektiğine inanıyorum:
$opt['option1'] = foo
$opt['option2'] = foo
$opt['option3'] = bar
update_option('theme_settings',$opt);
Ve sonra ön uçta:
$settings = get_option('theme_settings');
echo $settings['option1'];
echo $settings['option2'];
echo $settings['option3'];
Sorgu sayısını gerçekten azalttığını duydum ve hepsini tek bir seçenek olarak görüyorum. Bunu kullanmak isterdim ama yukarıda da belirttiğim gibi, bu seçenek dizisini Wordpress yönetici formunda nasıl güncelleyeceğimi bilmiyorum. Sanırım: <input type="hidden" name="theme_settings" value="option1,option2,option3,..." />
yeni öğeler eklemek yerine dizinin üzerine yazacak mı?
3. Ayarlar API'sı - yeni yol.
Çok fazla ek kod gerektirir:
function register_theme_settings() {
//register our settings
register_setting( 'theme-settings', 'option1' );
register_setting( 'theme-settings', 'option2' );
register_setting( 'theme-settings', 'option3' );
register_setting( 'theme-settings', 'option4' );
register_setting( 'theme-settings', 'option5' );
// imagine this for 100 and more options
};
Ve bir seçenek olarak bir seçenek ile bu yöntem arasındaki fark nedir emin değilim?
tl; dr Öyleyse, hızlı bir şekilde çalışacak ve tüm seçenekleri / ayarları tek bir yerde saklayacak şekilde tema ayarları depolama alanımı nasıl yansıtmalıyım , örneğin hepsini tek bir basit işlevle yankı / dökümü yapabiliyorum (evet , Bunu kötü yapmak istiyorum, ancak bu Ayarlar API'sı ile nasıl yapacağımı bilmiyorum). İkinci yöntem şimdiye kadar en iyi görünüyor.