Em caso de dúvida, observe o código fonte.
Ao entrar em get_option()
, você verá (abreviado):
$value = wp_cache_get( $option, 'options' );
if ( false === $value ) {
$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );
// Has to be get_row instead of get_var because of funkiness with 0, false, null values
if ( is_object( $row ) ) {
$value = $row->option_value;
wp_cache_add( $option, $value, 'options' );
} else { // option does not exist, so we must cache its non-existence
$notoptions[$option] = true;
wp_cache_set( 'notoptions', $notoptions, 'options' );
return apply_filters( 'default_option_' . $option, $default );
}
}
Primeiro, o WordPress verifica se ele já tem a opção na memória. Por padrão, wp_cache_get()
recuperará valores de um armazenamento de dados na memória (geralmente apenas uma variável PHP). Mas algumas instalações usam um cache de objetos mais avançado que armazena os dados em outro local.
Em ambos os casos, wp_cache_get()
retornará o valor da opção se o WordPress já souber.
Caso contrário, o WordPress tentará capturá-lo do banco de dados. Se a opção existir no banco de dados, o WordPress armazenará em cache na memória e retornará, tornando as pesquisas subseqüentes mais rápidas.
Se a opção não existe no banco de dados, o WordPress o sinaliza em uma matriz interna "essas opções não existem" para que não tente procurar mais tarde e retorne algum valor padrão.
Portanto, para responder à sua pergunta original:
Se eu usar isso 10 vezes em várias funções do meu plug-in, o WordPress faz 10 consultas ao banco de dados ou faz apenas 1 chamada ao banco de dados por solicitação HTTP e armazena em cache os resultados?
O WordPress fará uma chamada de banco de dados por solicitação HTTP e armazenará em cache os resultados.