Eu tenho dois tipos de postagem personalizados que lidam com os nomes das pessoas. No momento, nas visualizações de navegação, ele apenas lista todas elas em ordem alfabética e a paginação as divide em números, o que não é muito útil quando você está tentando encontrar uma pessoa específica.
Especificamente, me pediram para criar links de paginação para pessoas parecidas com esta:
- AG
- HM
- NQ
- RQ
Meu problema - não consigo descobrir como consultar os tipos de postagem personalizados pela primeira letra de um campo. Então, não tenho certeza de como posso criar a paginação dessa maneira. Alguém tem alguma sugestão? Obrigado!
custom-post-types
pagination
mcleodm3
fonte
fonte
Respostas:
Pergunta interessante! Eu o resolvi expandindo a
WHERE
consulta com váriaspost_title LIKE 'A%' OR post_title LIKE 'B%' ...
cláusulas. Você também pode usar uma expressão regular para fazer uma pesquisa por intervalo, mas acredito que o banco de dados não poderá usar um índice.Este é o núcleo da solução: um filtro na
WHERE
cláusula:Claro que você não deseja permitir entrada externa aleatória em sua consulta. É por isso que tenho uma etapa de higienização de entrada
pre_get_posts
, que converte duas variáveis de consulta em um intervalo válido. (Se você encontrar uma maneira de quebrar isso, deixe um comentário para que eu possa corrigi-lo)A etapa final é criar uma regra de reescrita para que você possa acessar
example.com/posts/a-g/
ouexample.com/posts/a
ver todas as postagens começando com essa (faixa de) letra (s).Você pode alterar o padrão de regra de reescrita para começar com outra coisa. Se for para um tipo de postagem personalizado, adicione
&post_type=your_custom_post_type
a substituição (a segunda sequência, que começa comindex.php
).A adição de links de paginação é deixada como um exercício para o leitor :-)
fonte
like_escape()
:)Isso ajudará você a começar. Não sei como você interromperia a consulta em uma letra específica e depois diria ao WP que há outra página com mais letras, mas o seguinte ocupa 99% do restante.
Não esqueça de postar sua solução!
fonte
Uma resposta usando o exemplo do @ kaiser, com um tipo de postagem personalizado como uma função que aceita parâmetros de início e término alfa. Este exemplo é obviamente para uma pequena lista de itens, pois não inclui paginação secundária. Estou publicando para que você possa incorporar o conceito ao seu,
functions.php
se quiser.fonte
Aqui está uma maneira de fazer isso usando os filtros
query_vars
eposts_where
:Souce: https://gist.github.com/3904986
fonte
Isso não é tanto uma resposta, mas mais um ponteiro para uma direção a seguir. Provavelmente terá que ser 100% personalizado - e estará muito envolvido. Você precisará criar uma consulta sql personalizada (usando as classes wpdb) e, para paginação, passará esses parâmetros para sua consulta personalizada. Você provavelmente também precisará criar novas regras de reescrita para isso. Algumas funções para analisar:
fonte