Mostrar todas las publicaciones que comienzan con una letra dada en WordPress
Estoy intentando construir un diccionario basado en Wordpress, básicamente tendrá 26 páginas (una para cada letra):
A B C ... X Y Z
Y cada página mostrará todas las publicaciones que comiencen con la letra dada, así que al abrir la página "A" debería mostrar algo como:
aback
abacus
abalone
(...) azure
Primero pensé en usar tipos de publicación personalizados, pero crear y mantener 26 tipos de publicación personalizados parece excesivo.
¿Cuál sería la forma más eficiente de ordenar publicaciones así? ¿Consulta a la base de datos, dividir el loop con PHP? Apunto a tener miles de publicaciones (sí, tiene que ser Wordpress :)).

¡No uses tipos de publicación, usa términos de taxonomía!
Al guardar, establece los términos del objeto en una taxonomía A-Z, usando la primera letra del título de la publicación. Asegúrate de forzar mayúsculas o minúsculas para mantener la consistencia. Asegúrate de crear términos para cada letra del alfabeto, y un término para números y otros símbolos no alfanuméricos.
Esto debería ser más rápido que consultar la primera letra de cada título de publicación, y te da una taxonomía con la que puedes hacer más cosas, como nubes de etiquetas o widgets de listado de términos. ¡También es una forma mucho más rápida de determinar qué letras tienen publicaciones asociadas y cuántas, sin forzar a la base de datos a contar manualmente! Además, puedes usar las APIs estándar de términos de WordPress para hacer consultas más complejas, como publicaciones que empiezan con vocales.

Definitivamente, esta es la ruta ideal a tomar. Sin embargo, ten en cuenta que, con miles de publicaciones; esta podría ser una tarea bastante engorrosa. Necesitarías consultar inicialmente todas las publicaciones comenzando con cada letra del alfabeto, y actualizar cada publicación con el término de taxonomía adecuado, que coincida con la respectiva letra del alfabeto. De lo contrario, actualizar manualmente cada publicación individual tomaría siglos en completarse.

Sí, ese es un ENORME inconveniente, estas publicaciones serán añadidas por personas TOTALMENTE ignorantes y no puedo contar con ellos cuando se trata de configurar la taxonomía correcta al crear una nueva publicación. ¿No estoy seguro si consultar todas las publicaciones y actualizarlas cada vez que alguien edita/crea algo será eficiente?

No, eso no sería un problema en absoluto, oculta la interfaz de usuario y automatiza el proceso hazlo en los hooks de guardar y actualizar publicación, hacerlo manualmente sería absurdamente costoso

Tom J Nowell, funciona de maravilla, pero tengo un problema serio y no estoy seguro de cómo manejarlo - algunas palabras comienzan con letras como http://en.wikipedia.org/wiki/Ą - no puedo establecer términos para estas. Aquí hay algo de código y explicación: http://pastebin.com/cHxbjVFH, ¿por qué está pasando esto? Estoy usando el paquete de WP dedicado para este idioma.

¿estás hablando de acentos y diéresis, etc? Si es así, eso merece una pregunta completamente nueva por sí sola, y no es una pregunta trivial. Es probable que también sea una pregunta general de PHP, por lo que Stack Overflow sería el mejor lugar para preguntarlo

Gracias compañero, lo resolví, parece que cuando usas sbustr() estos caracteres se comportan como 2, no como 1, caracteres :) ¡Gracias!

¡Ah, esas son codificaciones multibyte! Encontrarás funciones apropiadas de PHP para esos prefijadas con mb

Si no deseas utilizar el método preferido de términos de Taxonomía, haz esto:
<ul class="posts">
<?php
global $wpdb;
$request = "a" // puede ser cualquier letra que desees
$results = $wpdb->get_results(
"
SELECT * FROM $wpdb->posts
WHERE post_title LIKE '$request%'
AND post_type = 'post'
AND post_status = 'publish';
"
);
if ( $results )
{
foreach ( $results as $post )
{
setup_postdata ( $post );
?>
<li>
... contenido del bucle aquí (the_title, the_permalink) ...
</li>
<?php
}
}
else
{
?>
<div class="alert">No se encontraron clubs para esa letra. Por favor, intenta nuevamente o utiliza la búsqueda en la parte superior.</div>
<?php
}
?>
</ul>

¿puedes explicar cómo funciona esto? ¿no devolvería cualquier publicación que contenga la letra?

Consulta este artículo aquí: ¿query_post por título?
O puedes crear un ayudante pre-guardado usando el framework PODS 2 y guardar la primera letra del título del post en algún campo y usar una condición WHERE simple.
O crear un dropdown (otro pod/tipo de contenido) con todas las letras y crear una relación con tu tipo de contenido de posts existente (en pods 2 es posible) y listo. Así, antes de guardar el término del diccionario, seleccionas del dropdown la letra que quieres asignar a este término.
En Pods 2 puedes añadir un campo extra a un tipo de contenido de posts existente. Este plugin/framework que es algo como CCK + Views en el mundo Drupal es realmente increíble.
Pods 2 es un plugin muy útil.
