Bonjour,
J'espère pouvoir trouver une solution à ce problème qui m'empoisonne pas mal l'existence ces jours derniers. Je suis pas vraiment ce qu'on peut appeler un codeur, même si j'ai un DUT SRC, ca fait bien longtemps que j'ai arrété de faire du dev web pur et dur. Je me débrouille avec ce que je sais faire, mais parfois il m'arrive (comme là), de n'avoir aucune idée sur ce que je devrais faire pour obtenir ce que je veux. En vrai, j'ai pas du créer une requête SQL depuis facilement 4 ans.
Donc voilà, sous wordpress, on a une fonction qui s'appelle previous_post_link (pareil avec next), qui en théorie permet d'exclure un certain nombre de catégories, qui fait que la navigation ne s'opère qu'au sein d'une seule catégorie, ce qui est par ailleurs exactement ce dont j'ai besoin.
Or voilà, il semblerait que ca ne marche pas. Disons que si j'ai deux catégories, chien et chat, et que je veux naviguer uniquement dans chat, ben le filtre "vire-moi-les-chiens" ne fonctionne pas. Car le post suivant ou précédent apparait quand meme comme être un chien. Enfoiré!
J'ai cherché sur les forums wordpress, aucune réponse consistante n'a pu venir me sauver, donc j'ai décidé d'y aller à bras-le-corps, et d'aller moi-même farfouiller dans les requêtes sql.
Donc voici la requête effectuée par wp pour savoir quel est le post suivant à afficher (pour en créer un lien, enfin je laisse wordpress faire son travail, le problème étant surtout qu'il me retourne des posts de mauvaise catégorie):
Code :
- SELECT p.* FROM `wpmod_posts` AS p INNER JOIN wpmod_term_relationships AS tr ON p.ID = tr.object_id INNER JOIN
- wpmod_term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE p.post_date < '2009-02-24 15:44:17'
- AND p.post_type = 'post' AND p.post_status = 'publish' AND tt.taxonomy = 'category' AND tt.term_id NOT IN (5) ORDER
- BY p.post_date DESC LIMIT 1
|
où NOT IN (5) est censé opérer le filtre.
Maintenant je l'ai retournée dans tous les sens, en remplacant par !=, en mettant IN, ou = en changeant la catégorie (5 ou 6), en l'enlevant, et à chaque fois il me retourne le même post.
Donc, mes capacités d'analyse m'ont permis d'en conclure que cette condition ne sert absolument à rien dans la requête. Maintenant j'aimerais savoir s'il y a un moyen d'arriver à faire marcher ce filtre, dont j'ai désespérément besoin, pour lequel j'ai essayé plusieurs méthodes et sur lequel je viens de passer plusieurs heures (au moins depuis hier apm), et si oui, est ce que vous pourriez m'aider à l'atteindre?
Merci beaucoup
pour la structure de la db, on une dizaine de table, mais les trois utilisées ici sont correctes il me semble:
Post, contient tous les posts, relationship est la relation entre les post et les catégories:
et term_taxonomy ressemble à cela:
Merci pour votre aide!