Eu raramente discordo de usuários com conhecimento de outra forma, mas, neste caso, não posso evitar. Na minha opinião, chamar o uso de tabelas de banco de dados não essenciais como prática ruim por si só é simplesmente errado.
A escolha entre escolher as tabelas principais ou adicionar as suas próprias depende de vários fatores.
O tempo de execução de uma consulta depende do tamanho da tabela. Portanto, se você planeja armazenar quantidades significativas de dados, uma tabela separada que atenda apenas a esse tipo de conjunto de dados específico será inevitavelmente a solução mais eficiente.
Se você armazenar uma grande quantidade de mensagens regulares ou CPTs juntamente com esses conjuntos de dados específicos, wp_posts
bem como wp_postmeta
pode crescer rapidamente.
Para mim, essa escolha depende, em última análise, de quão "caros" os dados são. Deveria apoiar um autor, comentários, revisões, trechos ou similares? Se assim for, eu vou com CPTs e / ou funcionalidade principal. Caso contrário, eu irei com tabelas separadas para o uso e a eficiência dos recursos.
Se a noção de Eugene estivesse correta, nenhum dos plugins bem escritos existentes adicionaria suas próprias tabelas, o que felizmente não é o caso.
Usar as tabelas principais de banco de dados do WP é uma prática recomendada
$wpdb
classe muito poderosa .wp_options
e forçar o desenvolvedor de Plug-ins a considerar cuidadosamente o tipo de dados que está sendo criado / armazenado - é um CPT? é uma taxonomia? é pós meta?O WordPress fornece um meio para Plugins adicionar tabelas ao seu banco de dados
No entanto, para os casos de uso em que uma tabela de banco de dados separada é necessária, use o método que o WordPress fornece para adicionar sua tabela personalizada ao banco de dados do WordPress , especialmente para que você possa tirar proveito da
$wpdb
classe poderosa . Observe as informações / advertências que esta entrada do Codex lista:Assim, podemos concluir o seguinte:
fonte
$wpdb
(não fazer uso dele indo com tabelas non-core estava implícito na minha resposta, seria quero perder essa classe)As tabelas de banco de dados que não são essenciais são obrigatórias se seus dados forem mais complexos que o modelo de postagem do WordPress, serão enormes e terão muitos meta-detalhes que serão pesquisados.
Formato EAV que o WordPress usa para sua meta de publicação não se presta bem à pesquisa com vários critérios.
Se você dividir sua meta em várias entradas, você terá várias entradas por postagem na tabela de meta, e a pesquisa em qualquer postagem através de metas será muito mais lenta.
Se você armazenar todas as metas serializadas em uma matriz e tiver apenas uma entrada na pós-meta, dessa vez você será forçado a fazer apenas pesquisas de texto dentro dessa meta e não poderá usar operadores de comparação diretamente na sua consulta sql.
Não é um grande problema se o seu plug-in não tiver milhares de entradas e meta associada.
Mas um grande problema se o seu plug-in for fazer algo grande.
Sua situação, um nome de arquivo como entrada independente e três entradas de metadados anexadas a essa entrada não parece tão grande. Você pode usar a tabela de postagem do wordpress e a meta tabela para isso.
MAS, se as pessoas procurarem muito essas 3 metas, ESPECIALMENTE em conjunto, recomendo que você configure tabelas separadas.
Com esse formato, apenas uma tabela com apenas uma entrada, que também contém todas as metas, seria aceitável e consultaria rapidamente.
Aliás, se você usar tabelas do WordPress e também usar cache de consultas, o usuário pesquisará seus dados em cache com o tempo e sofrerá menos carga. Mas isso não seria tão prudente quanto fazer tabelas separadas.
fonte
Você pode enviar seus arquivos para a biblioteca de mídia. Cada item da biblioteca de mídia é armazenado na
wp_posts
tabela. Isso significa que cada arquivo pode ter metadados. Você pode salvar quantas informações precisar para cada arquivo dawp_postmeta
tabela usando a API de metadados .Sim, é uma prática ruim criar uma tabela própria, se você puder usar a funcionalidade principal.
fonte
fonte