web-dev-qa-db-fra.com

Connecter les utilisateurs et les taxonomies

J'aimerais envoyer des notifications par courrier électronique lorsque de nouveaux messages sont enregistrés. Mais les utilisateurs peuvent sélectionner les catégories de publication auxquelles ils souhaitent s'abonner. Les plugins disponibles ne sont pas une solution pour moi - j'ai vraiment besoin de ma propre base de code. Même si je suis assez nouveau pour WP il n'y a aucun problème avec tout ça… mais je ne sais pas comment connecter les taxonomies personnalisées aux utilisateurs.

Est-il possible de lister toutes les catégories sur la page de profil de l'utilisateur (cases à cocher) et d'enregistrer le thème dans la table usermeta? Ou voulez-vous dire qu'il est préférable de mettre tous les abonnements dans une nouvelle table et d'utiliser un troisième tableau croisé dynamique pour connecter les taxonomies et les utilisateurs?

Ou une autre solution? Toutes les idées sont appréciées :-) Merci beaucoup!

3
suntrop

Je suis tombé sur un tutoriel sur ' Taxonomies utilisateur personnalisées dans WordPress ' et il existe un plugin basé sur ce ' User Taxonomies ' mais elles servent à créer des taxonomies pour les utilisateurs. Ayez une lecture du tutoriel, il pourrait aider.

Je pense que ce dont vous parlez, c'est d'associer les taxonomies des publications aux utilisateurs. Je pense que vous devez utiliser quelque chose comme wp_set_object_terms (Codex) pour créer une relation entre l'utilisateur et le terme de taxonomie. Vous aurez donc quelque chose comme:

wp_set_object_terms( $object_id, $terms, $taxonomy, $append )
  • $ object_id - sera votre user_id
  • $ termes - termes correspondants
  • taxonomie $ - taxonomie correspondante
  • $ append - false. Chaque fois qu'un utilisateur enregistre son choix de termes de taxonomie pour s'abonner, vous devez les passer en revue et les rajouter à nouveau (au cas où quelque chose aurait été coché auparavant).

Vous devez vous assurer de nettoyer la base de données chaque fois qu'un terme utilisateur/taxonomie/taxonomie est supprimé. Vous devez donc nettoyer la relation entre les termes d'objet et de taxonomie que vous avez créés précédemment. Utilisez wp_delete_object_term_relationships (Codex).

J'espère que cela vous oriente dans la bonne direction.

3
dashaluna

J'utilisais/utilise également l'extrait de taxonomie utilisateur.

Cependant, je recommande fortement de ne pas mélanger les utilisateurs et les publications dans une taxonomie. Ce qui signifie l’enregistrement d’une taxonomie pour les utilisateurs ET les publications.

La table wp_term_relationships ne stocke qu'un object_id. Une fois qu'une publication et un utilisateur ayant le même identifiant sont créés, tout est brouillé, car le terme est attribué à l'utilisateur et à l'envoi avec cet identifiant.

Ma solution consistait à enregistrer deux taxonomies, une pour chaque type (post, utilisateur), et à conserver le pool de termes synchrone en ajoutant, en supprimant ou en modifiant des termes dans les deux taxonomies. (Avec ces hooks: created_term, pre_delete_term, edited_term)

0
azurgruen