Je construis un type d'article de portefeuille et je veux avoir un moyen de marquer certaines pièces comme étant en vedette, certaines comme normales (par défaut) et d'autres comme archivées. Les morceaux ne seraient jamais que l'un de ces 3. En raison de la valeur singulière, il me semble logique que ce soit post méta. Mais, j'ai lu que l'interrogation par taxonomie est censée être plus rapide, alors j'ai construit une solution où en vedette, normal et archivé sont 3 termes dans une taxonomie personnalisée.
Devrais-je m'en tenir aux taxonomies pour ce cas, ou passer à poster méta. Je me rends compte que c’est une question d’opinion, donc pour la rendre plus précise: les améliorations de la vitesse de la requête valent-elles la complexité supplémentaire de la création d’une taxonomie personnalisée et de sa modification afin qu’elle ne puisse jamais comporter qu'un seul terme? Est-ce qu’une taxonomie où vous ne pouvez avoir qu’un seul terme va à l’encontre du but d’une taxonomie?
Je ne suis pas sûr que l'un puisse être appelé catégoriquement plus rapidement que l'autre. Et, dans tous les cas, cela ne se produira réellement que lorsque vous commencerez à évoluer vers de très nombreux objets.
Le problème est le suivant: la table postmeta est une table clé-valeur non indexée. Si vous avez un certain nombre de lignes dans la table (quelques centaines de milliers, par exemple), cela peut entraîner des problèmes de rapidité, car MySQL doit effectuer une analyse complète de la table chaque fois que vous effectuez une requête telle que ...FROM $wpdb->posts WHERE meta_value = 'foo' and meta_value = 'bar'...
.
En revanche, les requêtes de taxonomie nécessitent une ou deux sous-requêtes. Mais les tables en question sont indexées de manière agressive (et les requêtes peuvent être mises en cache de manière agréable), de sorte que leurs requêtes fonctionnent considérablement mieux à l’échelle (là encore, "scale" signifie plusieurs milliers de messages).
En ce qui concerne la "complexité", il ne s’agit que de quelques lignes de code supplémentaires pour register_taxonomy()
. Le paramètre tax_query
pour WP_Query
n'est pas plus complexe que meta_query
et la syntaxe de wp_x_post_terms()
n'est qu'un peu plus complexe que x_post_meta()
. Et je ne m'inquiéterais pas de "vider le but d'une taxonomie". Les outils sont à votre disposition, mais cela fonctionne mieux pour votre projet :) Et il se peut qu'un jour, pour une raison quelconque, vous souhaitiez réellement avoir plusieurs termes par élément, auquel cas le choix des taxonomies aurait été un choix avant-gardiste.
Est-ce qu’une taxonomie où vous ne pouvez avoir qu’un seul terme va à l’encontre du but d’une taxonomie?
Vous pouvez changer la façon dont il apparaît dans la page de post-édition en utilisant metabox pour faire une case de sélection de taxonomie, de sorte qu'un seul terme soit toujours sélectionné ....
Je pense que dans votre cas, la méta-requête sera plus rapide que la requête fiscale, car la méta-requête nécessite 2 tables pour joindre les posts et le postmeta, alors que la taxonomie nécessite trois tables posts, table taxonomyrelelelations et table de termes ....