Exibe todos os posts que começam com determinada letra?

11

Estou tentando construir um dicionário baseado no Wordpress, basicamente ele terá 26 páginas (uma para cada letra):

  

A B C ... X Y Z

E todas as páginas exibirão todas as postagens começando com determinada letra, portanto, depois de abrir a página "A", ela deverá exibir algo como:

  

de volta

     

ábaco

     

abalone

     

(...)       azure

Eu estava pensando em tipos de post personalizado no começo, mas criar e manter 26 tipos de post personalizado soa como um exagero.

Qual será a maneira mais eficiente de classificar postagens desse tipo? Consulta de banco de dados, divisão de loop com PHP? Eu estou apontando para 1000s de posts (sim, tem que ser Wordpress:)).

    
por Wordpressor 05.10.2012 / 17:54

3 respostas

8

Não use tipos de postagem, use termos de taxonomia!

Ao salvar, defina os termos do objeto em uma taxonomia A-Z, usando a primeira letra do título da postagem. Certifique-se de forçar maiúsculas ou minúsculas para consistência. Certifique-se de criar termos para cada letra do alfabeto e um termo para números e outros símbolos não alfanuméricos.

Isso deve ser mais rápido do que consultar a primeira letra de cada título de postagem e fornecer uma taxonomia com a qual você pode fazer mais coisas, como nuvens de tags ou widgets de termos de lister. É também uma maneira muito mais rápida de determinar quais letras têm posts associados e quantas, sem forçar o banco de dados a contar manualmente, e você pode usar APIs padrão do WordPress prontas para fazer consultas mais complexas, como postagens começando com vogais

    
por Tom J Nowell 05.10.2012 / 18:02
4

Se você não quiser usar o método de termos de taxonomia preferidos, faça o seguinte:

<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>
    
por 21zna9 09.10.2012 / 20:26
1

Verifique este artigo aqui: query_post por título?

Ou você pode criar um auxiliar de pré-salvamento usando a estrutura do PODS 2 e salvar a primeira letra do título da postagem em algum campo e usar simples. condição.

Ou crie um menu suspenso (outro tipo de conteúdo / tipo de conteúdo) com todas as letras e crie uma relação com o tipo de conteúdo existente nas postagens (nos pods 2 é possível) e pronto. Portanto, antes de salvar o termo do dicionário, selecione na caixa suspensa a letra que deseja atribuir a esse termo.

No Pods 2, você pode adicionar o campo extra a um tipo de conteúdo de postagens existente. Este plugin / framework que é algo como o CCK + Views no mundo do Drupal é realmente incrível.

O pods 2 é um plugin muito útil.

    
por Derfder 05.10.2012 / 18:06