Tengo una página con dos secciones, cada una utiliza una diferente WP_Query()
para tirar en events
, que son un tipo de mensaje personalizado. Cada uno WP_Query()
consulta meta_key
la fecha del evento para que la Sección 1 solo muestre los próximos events
y la Sección 2 los pasados events
.
El próximo events
en la Sección 1 muestra toda la información relevante en mi página, por lo que no es posible hacer clic en ellos.
El pasado events
en la Sección 2 solo muestra el event
título y se puede hacer clic en él. Cuando los usuarios hacen clic en un pasado, event
se vinculan a una single-event.php
plantilla personalizada para el pasado event
.
Quiero mostrar la navegación Anterior / Siguiente en la single-event.php
plantilla, pero la navegación solo debería apuntar al pasado events
.
Intenté usar next_post_link()
y, previous_post_link()
pero estos también se vincularán a los próximos events
, que no quiero. Probablemente pueda configurar un nuevo WP_Query()
en mi single-event.php
y recorrerlo para obtener las ID de Prev / Next, pero repetir la consulta parece un paso drástico.
Realmente agradecería una idea de cómo filtrar los próximos events
enlaces de mis publicaciones anteriores / siguientes. He visto esta pregunta pero preferiría no usar un complemento.
get_adjacent_post
función.WP_Query
, luego inspeccionar$your_query_object->request
, lo que revelará una buena parte del SQL que necesitará para llevarlo a cabo.Respuestas:
Logré que esto funcionara utilizando nada más que filtros de WordPress, gracias a la sugerencia de @ Milo.
Solo tenga en cuenta que estos son bastante específicos para mi caso, pero no debería tener problemas para modificarlos para su propio uso. Estoy usando campos personalizados avanzados con un campo selector de fecha llamado
date
y los enlaces Anterior / Siguiente solo apuntan a eventos condate
campos configurados en cualquier día antes de hoy.Creé 5 filtros:
JOIN
(para agregarwp_postmeta
)WHERE
para el enlace anteriorWHERE
para el siguiente enlaceSORT
para el enlace anteriorSORT
para el siguiente enlaceEsto es lo que se me ocurrió, parece estar funcionando, pero si alguien detecta algún problema, me encantaría recibir comentarios:
fuente
Tuve un problema bastante similar, necesitaba ordenar y excluir varias publicaciones de la navegación anterior / siguiente. El problema con la solución de @ cfx era: no es capaz de ajax: la
is_singular()
función devuelve falso si carga contenido a través de wp-ajax. así que funcionó en la carga de la página, pero no lo hizo, cuando ajax cambió el contenido.global $post;
me estaba ayudando aquí.Aquí está mi solución:
en este caso, la consulta de campo de costum es: excluir todas las publicaciones que tienen cf
not_clickable
establecido entrue
.Otro problema que encontré: tuve un poco de contenido creado y luego implementé ese campo personalizado después, por lo que la consulta también excluyó las publicaciones que ni siquiera tenían ese campo adjunto a la publicación, sin importar si era verdadero o falso. solo tenlo en cuenta cuando uses este tipo de filtrado. asegúrese de que cada publicación tenga un valor o considere esto en su sintaxis sql.
fuente