Tengo dos tipos de publicaciones personalizadas que tratan con los nombres de las personas. En este momento, en las vistas de navegación, solo las enumera todas alfabéticamente y la paginación las desglosa por números, lo que no es muy útil cuando intenta encontrar a una persona específica.
Específicamente, me han pedido que cree enlaces de paginación para personas que se ven así:
- AG
- HM
- NQ
- RQ
Mi problema: no puedo entender cómo puedo consultar los tipos de publicaciones personalizadas por la primera letra de un campo. Entonces, no estoy seguro de cómo puedo crear la paginación de esta manera. ¿Alguien tiene alguna sugerencia? ¡Gracias!
custom-post-types
pagination
mcleodm3
fuente
fuente
Respuestas:
¡Interesante pregunta! Lo resolví expandiendo la
WHERE
consulta con un montón depost_title LIKE 'A%' OR post_title LIKE 'B%' ...
cláusulas. También puede usar una expresión regular para hacer una búsqueda de rango, pero creo que la base de datos no podrá usar un índice en ese momento.Este es el núcleo de la solución: un filtro en la
WHERE
cláusula:Por supuesto, no desea permitir una entrada externa aleatoria en su consulta. Es por eso que tengo un paso de desinfección de entrada
pre_get_posts
, que convierte dos variables de consulta en un rango válido. (Si encuentra una manera de romper esto, deje un comentario para que pueda corregirlo)El paso final es crear una regla de reescritura bonita para que pueda ir
example.com/posts/a-g/
oexample.com/posts/a
ver todas las publicaciones que comienzan con esta (rango de) letra (s).Puede cambiar el patrón de la regla de reescritura para comenzar con otra cosa. Si se trata de un tipo de publicación personalizado, asegúrese de agregar
&post_type=your_custom_post_type
a la sustitución (la segunda cadena, que comienza conindex.php
).Agregar enlaces de paginación se deja como un ejercicio para el lector :-)
fuente
like_escape()
:)Esto te ayudará a comenzar. No sé cómo rompería la consulta en una letra específica y luego le diría a WP que hay otra página con más letras, pero la siguiente toma el 99% del resto.
¡No olvides publicar tu solución!
fuente
Una respuesta usando el ejemplo de @ kaiser, con un tipo de publicación personalizado como una función que acepta los parámetros alfa de inicio y fin. Este ejemplo es obviamente para una lista corta de elementos, ya que no incluye paginación secundaria. Lo estoy publicando para que pueda incorporar el concepto en su
functions.php
si lo desea.fuente
Aquí hay una manera de hacer esto usando los filtros
query_vars
yposts_where
:Souce: https://gist.github.com/3904986
fuente
Esto no es tanto una respuesta, sino más bien un puntero a una dirección a seguir. Esto probablemente tendrá que ser 100% personalizado, y estará muy involucrado. Deberá crear una consulta sql personalizada (utilizando las clases wpdb) y luego, para la paginación, pasará estos parámetros a su consulta personalizada. Probablemente también necesite crear nuevas reglas de reescritura para esto. Algunas funciones a considerar:
fuente