J'ai une page avec deux sections, chacune utilise un différent WP_Query()
pour tirer events
, qui sont un type de message personnalisé. Chacun WP_Query()
interroge a meta_key
pour la date de l'événement afin que la section 1 affiche uniquement les événements à venir events
et la section 2 les événements passés events
.
La prochaine events
section 1 affiche toutes les informations pertinentes sur ma page, il n'est donc pas possible de cliquer dessus.
Le passé events
de la section 2 n'affiche que le event
titre et est cliquable. Lorsque les utilisateurs cliquent sur un passé, event
ils établissent un lien vers un single-event.php
modèle personnalisé pour le passé event
.
Je souhaite afficher la navigation précédente / suivante dans le single-event.php
modèle, mais la navigation doit uniquement pointer vers le passé events
.
J'ai essayé d'utiliser next_post_link()
et previous_post_link()
mais ceux-ci seront liés à la prochaine events
aussi, ce que je ne veux pas. Je peux probablement configurer un nouveau WP_Query()
sur mon single-event.php
et le parcourir pour obtenir les identifiants précédent / suivant, mais répéter la requête semble être une étape radicale.
J'apprécierais vraiment un aperçu sur un moyen de filtrer les events
liens à venir de mes articles précédents / suivants. J'ai vu cette question mais je préférerais ne pas utiliser de plugin.
get_adjacent_post
fonction.WP_Query
, puis d'inspecter$your_query_object->request
, ce qui révèlera une bonne partie du SQL dont vous aurez besoin pour le retirer.Réponses:
J'ai réussi à faire fonctionner cela en utilisant uniquement des filtres WordPress, grâce à l'indice de @ Milo.
Notez juste que ceux-ci sont assez spécifiques à mon cas, mais vous ne devriez pas avoir de problème à les modifier pour votre propre usage. J'utilise des champs personnalisés avancés avec un champ Sélecteur de date appelé
date
et les liens Précédent / Suivant ne pointent que vers des événements avec desdate
champs définis à n'importe quel jour avant aujourd'hui.J'ai créé 5 filtres:
JOIN
(à ajouterwp_postmeta
)WHERE
pour le lien précédentWHERE
pour le lien suivantSORT
pour le lien précédentSORT
pour le lien suivantVoici ce que j'ai trouvé, cela semble fonctionner, mais si quelqu'un repère des problèmes, j'aimerais avoir des commentaires:
la source
J'ai eu un problème assez similaire, j'avais besoin de trier et d'exclure plusieurs messages de la navigation précédente / suivante. Le problème avec la solution de @ cfx était: ce n'est pas capable d'ajax: la
is_singular()
fonction retourne false, si vous chargez le contenu via wp-ajax. donc cela a fonctionné sur le chargement de la page, mais pas, lorsque le contenu a été modifié par ajax.global $post;
m'aidait ici.voici ma solution:
dans ce cas, la requête de champ costum est la suivante: exclure tous les articles pour lesquels cf est
not_clickable
défini surtrue
.un autre problème que j'ai rencontré: j'ai créé du contenu, puis j'ai implémenté ce champ personnalisé par la suite. gardez cela à l'esprit lorsque vous utilisez ce type de filtrage. assurez-vous que chaque publication a une valeur ou considérez-la dans votre syntaxe sql.
la source