Exibir todas as postagens começando com a letra especificada?

12

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

ABC ... XYZ

E cada página exibirá todas as postagens começando com a letra especificada; portanto, após abrir a página "A", ela deverá exibir algo como:

surpresa

ábaco

abalone

(...) azul

No começo, eu estava pensando em tipos de postagem personalizados, mas criar e manter 26 tipos de postagem personalizados parece um exagero.

Qual será a maneira mais eficiente de classificar postagens como essa? Consulta ao banco de dados, loop de divisão com PHP? Estou apontando para milhares de posts (sim, tem que ser Wordpress :)).

Wordpressor
fonte

Respostas:

10

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

Ao salvar, defina os termos do objeto em uma taxonomia AZ, usando a primeira letra do título da postagem. Certifique-se de forçar maiúsculas ou minúsculas para obter consistência. Crie 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 fornece uma taxonomia com a qual você pode fazer mais coisas, como nuvens de tags ou widgets de lista de termos! Também é uma maneira muito mais rápida de determinar quais letras têm postagens associadas e quantas, sem forçar o banco de dados a contar manualmente, e você pode usar APIs de termo padrão do WordPress prontas para fazer consultas mais complexas, como postagens começando com vogais

Tom J Nowell
fonte
Esta é definitivamente a rota ideal a seguir. No entanto, lembre-se, com milhares de postagens; Isso pode ser uma tarefa bastante complicada. Você precisaria consultar inicialmente todas as postagens que começam com cada letra do alfabeto e atualizar cada postagem com o termo de taxonomia apropriado, correspondendo à respectiva letra do alfabeto. Caso contrário, a atualização manual de cada postagem individual levaria séculos para ser concluída.
Michael Ecklund
Sim, é uma enorme desvantagem, essas postagens serão adicionadas por pessoas totalmente ignorantes e eu não posso contar com elas quando se trata de definir a taxonomia correta ao criar uma nova postagem. Não tenho certeza se consultar todas as postagens e atualizá-las sempre que alguém editar / criar algo será eficiente?
Wordpressor
3
Não, isso não seria um problema em tudo, esconder a interface do usuário e automatizar o process.do-lo nos salvar e atualizar pós ganchos, fazê-lo manualmente seria absurdamente caro
Tom J Nowell
Tom J Nowell, funciona como um encanto, mas tenho um problema sério e não sei como gerenciar isso - algumas das palavras começam com letras como en.wikipedia.org/wiki/Ą - Estou incapaz de definir termos para estes. Aqui estão alguns códigos e explicações: pastebin.com/cHxbjVFH , por que isso está acontecendo? Estou usando o pacote WP dedicado para esse idioma.
Wordpressor
você está falando sobre sotaques e tremados etc etc? Nesse caso, isso é algo que merece uma pergunta totalmente nova e não é uma pergunta trivial a ser feita. É provável também é uma questão geral PHP e assim por estouro de pilha seria o melhor lugar para fazer isso
Tom J Nowell
4

Se você não quiser usar o método de termos de taxonomia preferido, 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>
21zna9
fonte
você pode explicar como isso funciona? não retornaria nenhuma postagem que contenha a carta?
Tintinabulator Zea
não seria. O mysql usa% como curinga. no entanto, eu nunca encontrei $ em consultas mysql. corretamente, ele deve lerWHERE post_title LIKE 'request%'
brett
1

Confira 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 a condição WHERE simples.

Ou crie um menu suspenso (outro pod / tipo de conteúdo) com todas as letras e crie um relacionamento com o tipo de conteúdo das postagens existentes (nos pods 2 é possível) e é isso. Portanto, antes de salvar o termo do dicionário, selecione na caixa suspensa a letra que deseja atribuir a esse termo.

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

Pods 2 é um plugin muito útil.

Derfder
fonte