web-dev-qa-db-fra.com

Utiliser des publications personnalisées comme terme de méta-taxonomie de remplacement?

Les taxonomies sont très utiles pour toutes sortes de choses. Mais comme beaucoup ont souligné , ils souffrent de leur incapacité à transporter des métadonnées.

En supposant que je n'ai que des publications qui n'ont pas de parents "naturels" sur mon site, pourquoi ne devrais-je pas taxonomiser mes publications en les attachant à un post_parent et stocker mes métadonnées dans le post_meta du parent?

PAR EXEMPLE

J'ai un CPT 'oiseaux' et une taxonomie 'user_bird_collection'.

J'ai un utilisateur, Jack, et je veux ajouter le Canary à sa collection.

avec une taxonomie

Je crée (ou ajoute) un terme dans la collection user_bird_collection appelé 'Jack' (ou quelque chose de plus unique, comme son UID), en ajoutant le terme Canary au terme.

Quand Jack va sur mybirds.com/my_collection, je lui montre tous les oiseaux de son mandat.

S'il veut faire mieux et nommer son canari, je suis dans le pétrin parce que je dois ajouter des métadonnées à la relation entre le canari et la collection de Jack.

Avec post_parents

Je crée un nouveau poste avec Jack en tant qu'auteur, dont post_parent est l'ID du canari.

Lorsque Jack se rend sur la page de collection, je lui montre tous les articles qui lui appartiennent et je réoriente intelligemment toutes les demandes de détails d'oiseaux, d'images, etc. jusqu'au canari d'origine.

Quand il veut nommer son canari, tout ce que j'ai à faire est d'ajouter des métadonnées au message de Jack - en réalité, sa "propre" copie du canari, une sorte d'enveloppe autour.

AVANTAGES ÉVIDENTS

  • Interroger est tout aussi facile.
  • Je peux ajouter autant de métadonnées que je veux à l'oiseau d'origine OR l'oiseau personnalisé à l'aide de post_meta.
  • Je ne suis pas lié à l'une des implémentations concurrentes de méta terme.

Quel est le problème avec le faire de cette façon?

3
djb

Vous pouvez ajouter des métadonnées de taxonomie, similaires à add_post_meta, et en voici quelques exemples:

Tutoriel pas à pas

Classe de métadonnées de taxonomie (version améliorée de ci-dessus)

J'ai personnellement utilisé moi-même cette classe, qui a également été créée par un membre réputé et modérateur, ici à WPSE -> Bainternet , elle a fait ce qui est indiqué sur la boîte.

Plugin

Tutoriel pas à pas

Cela mis à part ...

Si vous avez un utilisateur, nommé Jack par exemple, alors pourquoi ne lui assignez-vous pas le type de publication personnalisé via un champ méta de publication dans une boîte à méta?

Donc, tu regarderais,

add_meta_box

add_post_meta

Vous pouvez toujours utiliser des taxonomies personnalisées pour vous aider à mieux classifier ou grouper vos données, mais une grande partie de ce que vous essayez d'atteindre est tout simplement la même chose que si vous le faisiez avec des méta-données posta pour commencer (par exemple, add_post_meta).

Et pour simplifier les choses, vous pouvez utiliser une classe de méta-boîtes pour déployer vos solutions,

http://fr.bainternet.info/2012/how-i-add-a-wordpress-metaboxhttp: // www.deluxeblogtips.com/meta-box/http://www.farinspace.com/wpalchemy-metabox/

J'ai utilisé tout ce qui précède, qui sont tous bons. J'utilise toujours WPAlchemy et la classe Meta-Box de Deluxe Blog Tips. Quant à Bainternet, il n’ya rien de mal avec cette classe, c’est une question d’en utiliser déjà trop. Alors faites votre choix.

METTRE À JOUR

Mon approche à ce sujet serait de

  • a) créer un type d'article personnalisé Oiseaux
  • b) créer une taxonomie Type d'oiseau
  • c) créer une meta box avec deux champs

    • 1) répertorie les utilisateurs dans une liste déroulante
    • 2) nom de l'oiseau de l'utilisateur

Le processus serait de,

  • a) ajouter un oiseau, tel que Canaries
  • b) ajoutez un terme de taxonomie correspondant au nom de l’oiseau, par exemple: Canari
  • c) ajouter un utilisateur dans ma méta-boîte associée à cet oiseau
  • d) si disponible au moment de la création, ajoutez le nom choisi par l'utilisateur pour l'oiseau

En utilisant un champ répétable comportant un bouton Ajouter maintenant , vous pouvez ajouter un autre utilisateur. Mais au lieu de regrouper tous les champs méta dans un seul post meta_key, vous devez créer des clés méta postales distinctes pour chaque utilisateur que vous souhaitez associer à l'oiseau. Sinon, vous obtiendrez des données sérialisées lentes à interroger.

Même cette approche peut être améliorée.

Vous pouvez plutôt associer la taxonomie "Canary" à l'utilisateur via User Meta.

Pour chaque type d'oiseau de la collection users, utilisez add_user_meta pour appliquer le nom choisi par l'utilisateur pour l'oiseau.

Votre méta-boîte que vous créez via add_meta_box n'est pas strictement limitée à l'utilisation de fonctions add_post_meta, etc. Vous pouvez écrire votre fonction pour qu'elle utilise plutôt add_user_meta et update_user_meta. Et ainsi de suite.

Cela laisse une séparation claire entre chacun de vos éléments.

  • Le type de message personnalisé est pour l'oiseau, ce qui pourrait expliquer l'oiseau, son origine, etc.
  • La taxonomie est pour la classification de l'oiseau
  • Meta Box/User La méta fonction est d'associer la taxonomie et le nom donné de Bird à l'utilisateur.

Je dois dire que l'idée post_parents n'est vraiment pas bonne, car créer une nouvelle publication pour ce qui est autrement des méta-données équivaut à un fiasco lorsque nous avons déjà les tables Taxonomy et User à associer à la table Posts. pour votre type de message personnalisé.

1
userabuser

Je ne vois pas beaucoup de problème en dehors du fait qu'il ne peut y avoir qu'un seul parent après. Utiliser une relation de type post-à-post, ce qui permet de créer plusieurs relations, serait une voie alternative, où vos "termes de taxonomie" sont en réalité des publications d'un type de publication personnalisé et peuvent donc avoir un contenu (et même des taxonomies). etc.) qui leur sont associés. La belle Posts 2 Posts plug-in rend cela beaucoup plus facile à accomplir, et avec l'interface utilisateur pour démarrer.

1
helenhousandi

À partir de WordPress 4.4 , le terme méta taxinomie fait désormais partie de WordPress de base .

Vous pouvez utiliser les nouvelles fonctions suivantes pour gérer les méta de terme:

Toutefois, pour le cas d'utilisation particulier de cette question, le moyen le plus efficace de gérer la relation utilisateur avec une publication peut être d'utiliser Posts2Posts (plug-in créé et maintenu par scribu, un contributeur principal).

En utilisant ce plugin, vous pouvez créer une relation entre un utilisateur et une publication et également ajouter des métadonnées à la relation elle-même .

1
sxalexander