Todas as variáveis de opções são buscadas no banco de dados e carregadas no cache em cada solicitação?
Sim, mais ou menos. Quando a get_option
chamada é feita, o WordPress executa uma função chamada wp_load_alloptions
, que pega uma cópia em cache de todas as opções carregadas automaticamente ou carrega todas essas opções no cache. Em seguida, wp_load_alloptions
retorna uma matriz de todas as opções carregadas automaticamente. Se sua opção for carregada automaticamente (especificada quando você usar a add_option
função), ela fará parte dessa matriz e será retornada.
Se sua opção não for carregada automaticamente, o WordPress procurará no cache especificamente essa opção e retornará o valor, se estiver lá. Se isso ocorrer, o fallback final é acessar o banco de dados, buscar o valor, definir o cache e, em seguida, retorná-lo.
Por fim, se nenhuma opção for encontrada (por exemplo, o nome da opção era inválida), o WordPress armazenará o nome dessa opção em uma matriz em cache chamada notoptions
. Se forem feitas chamadas subsequentes para a não opção, o WP verificará primeiro a matriz de opções, para que não perca tempo verificando algo que não existe.
Se você estiver preocupado em ligar get_option
várias vezes por carregamento de página, não fique. O WordPress armazenará em cache o valor da opção após a primeira get_option
chamada, independentemente de ser carregado automaticamente ou não.
Confira a fonte paraget_option
ver o que está acontecendo.
Não,
somente as opções carregadas especificamente com o carregamento automático são definidas como true
Consulte http://codex.wordpress.org/Function_Reference/add_option
Portanto, se for uma opção necessária em todas as páginas, quando você a adicionar ao db, defina autoload = true.
Depois disso, basta usar get_option normalmente - o wp cuidará do cache, etc.
Sim,
Não há necessidade de definir o carregamento automático como yes / true. É definido como yes por padrão: http://codex.wordpress.org/Function_Reference/add_option - último parâmetro da função ($ autoload):
No entanto, se você definir como não, a opção não será colocada no cache.
fonte