E qual devo usar?
Qual é a diferença entre a API de opções e a API de configurações ?
Eu tenho um tema com mais de 100 opções de administrador. Como devo registrá-las e armazená-las? No momento, estou usando a API de opções, mas não estou muito feliz com isso, todas as opções estão sendo registradas separadamente, para que elas criem muitas consultas ao banco de dados.
Vejo três maneiras de armazenar opções / configurações do WordPress no momento:
1. API de opções - a maneira antiga (a pior?).
(Eu já estou usando este)
<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>
E então no front end:
echo get_option('option1');
Parece feio e não acho que seja a maneira correta de armazenar um grande número de opções (eu adoraria agrupá-las de alguma forma).
2. Opções API - 1 opção como uma grande matriz.
Não sei bem como atualizar essa matriz usando formulários html, alguém? Eu acredito que deveria ser assim:
$opt['option1'] = foo
$opt['option2'] = foo
$opt['option3'] = bar
update_option('theme_settings',$opt);
E então no front end:
$settings = get_option('theme_settings');
echo $settings['option1'];
echo $settings['option2'];
echo $settings['option3'];
Ouvi dizer que realmente diminui o número de consultas e tenho todas elas como uma opção. Eu adoraria usar este, mas como mencionei acima, não tenho certeza de como atualizar esse conjunto de opções no formulário de administração do Wordpress. Eu acho: <input type="hidden" name="theme_settings" value="option1,option2,option3,..." />
substituirá a matriz em vez de adicionar novos elementos?
3. Configurações API - a nova maneira.
Requer muito código adicional:
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
};
E não tenho certeza de qual é a diferença entre isso e o método com uma opção como uma matriz?
tl; dr Então, como devo projetar meu armazenamento de configurações de tema para que funcione rapidamente e armazenar todas as opções / configurações em um só local, para que eu possa, por exemplo, fazer eco / despejar todas elas com uma função simples (sim , Quero fazer isso muito mal, mas não faço ideia de como fazer isso com esta API de configurações). O segundo método parece o melhor até agora.