Aqui está o meu código
$my_wp_query = new WP_Query();
$all_wp_pages = $my_wp_query->query(array('post_type' => 'page','post_parent'=>$parid,'orderby'=>'title','order'=>'ASC' ));
Ele exibe apenas as subpáginas do primeiro nível. Eu preciso de todas as subpáginas, subpáginas ... e tudo. Procurei uma solução e posso obter todas as subpáginas usando get_pages e wp_list_pages.
Mas eu realmente preciso classificar a ordem pelo meta valor personalizado da postagem. Então, eu tenho que usar a consulta personalizada.
por favor ajude. obrigado
wp-query
query-posts
query
phpuser
fonte
fonte
Respostas:
Por que não usar apenas
get_pages()
?por exemplo
Mas se realmente deve ser como um
WP_Query()
objeto, use um método semelhante:fonte
WP_Query()
?O problema
O que você está tendo problemas para entender é "Como eu faço o X?" Esta não é uma ação de uma etapa, é um processo de várias etapas e precisa ser dividido.
Você não precisa fazer isso:
Você precisa fazer isso:
A solução geral
Portanto, para entender como fazê-lo infinitamente até chegar ao fim, sem codificá-lo, você precisa entender as funções recursivas.
por exemplo
Aplicando recursão a este problema para uma solução
Portanto, seu pai é
$parid
e sua meta meta tem uma chave de$metakey
.Vamos passar para uma função de agarrar seus filhos.
Em seguida, classificaremos o array $ children, as chaves serão os IDs das postagens e os valores serão os meta-valores.
e vamos definir a função como:
Isso fornece uma variedade de IDs e valores de postagem, ordenados do menor para o maior. Você pode usar outras funções de classificação PHP para fazer isso do maior para o menor.
Agora, e os filhos das crianças?
No meio do nosso loop, precisamos fazer uma chamada recursiva, passando o filho em vez do ID pai.
Então, é isso:
Torna-se isso:
Com esta modificação, a função agora recupera os filhos, os filhos das crianças, os filhos das crianças ..... etc
No final, você pode aparar os valores na matriz para obter IDs como este:
Usando essa estratégia, você pode substituir o valor da meta-chave por qualquer outra métrica ou usar funções recursivas de outras maneiras.
Como o código completo requer apenas alguns segundos de compreensão básica e uma colagem de cópia rápida, não insultarei sua inteligência com um bloco de código de colagem de cópia completa.
Vantagens
Problemas que você encontrará
Minha recomendação
Eu recomendo que você aplique a hierarquia da página ou use uma taxonomia. Por exemplo, se você está classificando postagens, tenha uma taxonomia de classificação de página com os termos 1,2,3,4 e 5 etc. Isso fornecerá uma listagem de post pronta para uso.
Como alternativa, use os menus de navegação e ignore esse problema completamente
fonte
Obter recursivamente todas as subpáginas atuais
Aqui está uma abordagem recursiva usando
get_children
. Coloque o seguinte em seufunctions.php
:Como usá-lo
Use a função acima onde quiser, por exemplo:
A função suporta um
args
parâmetro (string ou matriz de consulta) e umoutput
tipo (veja acima).Então você também pode usá-lo assim:
E devido à dependência
get_children
=>get_posts
=>WP_Query
você pode usar meta-valores, conforme solicitado inicialmente pelo autor desta pergunta.fonte
Não tenho certeza se é exatamente isso que você procura, mas você pode usar a função wp_list_pages e os parâmetros 'child_of' e 'depth'.
Consulte a seguinte página no Codex para obter mais informações: http://codex.wordpress.org/Function_Reference/wp_list_pages
fonte
Eu criei uma função recursiva que obtém todos os IDs filhos de uma página pai. Depois de termos os IDs, fazemos consultas para as páginas e podemos ordenar os resultados por meta-chave / valor.
Se você precisar classificar os filhos por meta-chave / valor de maneira hierárquica, deve passar os valores meta_key e order_by para o WP_Query na função _get_children_ids (em vez do WP_Query final).
Caso contrário, um método mais simples para obter todo o ID filho é:
fonte
FAÇO ESTE FUNCIONAMENTO, APENAS COPIAR COLAR O CÓDIGO NA SUA PÁGINA.
fonte
$post -> ID
?), B) não é o que foi solicitado, C) não foi explicado muito bem.