¿Mostrar todas las publicaciones que comienzan con una letra dada?

11

Estoy tratando de 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 una letra dada, así que después de abrir la página "A" debería mostrar algo como:

  

desconcertado

     

ábaco

     

abulón

     

(...)       azul

Al principio estaba pensando en tipos de publicaciones personalizados, pero crear y mantener 26 tipos de publicaciones personalizadas parece una exageración.

¿Cuál será la forma más eficiente de clasificar las publicaciones de esa manera? Consulta de base de datos, bucle de división con PHP? Estoy apuntando a miles de publicaciones (sí, tiene que ser Wordpress :)).

    
pregunta Wordpressor 05.10.2012 - 17:54

3 respuestas

8

¡No uses tipos de publicaciones, usa términos de taxonomía!

Al guardar, establezca los términos del objeto en una taxonomía A-Z, utilizando la primera letra del título de la publicación. Asegúrate de forzar mayúsculas o minúsculas para mayor consistencia. Asegúrese 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 brinda una taxonomía con la que puedes hacer más cosas, como nubes de etiquetas o widgets de lista 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 que la base de datos cuente manualmente, y puede utilizar las API de términos de WordPress estándar de forma inmediata para realizar consultas más complejas, como las publicaciones que comienzan con vocales

    
respondido por el Tom J Nowell 05.10.2012 - 18:02
4

Si no desea utilizar el método de términos de taxonomía preferido, haga lo siguiente:

<ul class="posts">
         <?php 
         global $wpdb; 
         $request = "a" // could be any letter you want
         $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>
                    ... loop stuff here (the_title, the_permalink) ... 
                </li>
                <?php 
            }
         } 
         else 
         {
            ?> 
            <div class="alert">No clubs found for that letter. Please try again, or use the search at the top.</div>
            <?php
         }
         ?>
    </ul>
    
respondido por el 21zna9 09.10.2012 - 20:26
1

Consulte este artículo aquí: query_post by title?

O puede crear un ayudante de guardado previo utilizando marco PODS 2 y guardar la primera letra del título de la publicación en algún campo y usarlo de forma sencilla DONDE condición.

O cree un menú desplegable (otro tipo de pod / contenido) con todas las letras y cree una relación con el tipo de contenido de sus publicaciones existentes (en los pods 2 es posible) y eso es todo. Por lo tanto, antes de guardar el término del diccionario, seleccione en el cuadro desplegable la letra que desea asignar a este término.

En Pods 2 puede agregar el campo adicional a un tipo de contenido de publicaciones existente. Este plugin / framework que es algo así como CCK + Views en el mundo de Drupal es realmente increíble.

Pods 2 es un complemento muy útil.

    
respondido por el Derfder 05.10.2012 - 18:06

Lea otras preguntas en las etiquetas