Aqui esta mi codigo
$my_wp_query = new WP_Query();
$all_wp_pages = $my_wp_query->query(array('post_type' => 'page','post_parent'=>$parid,'orderby'=>'title','order'=>'ASC' ));
Muestra solo las subpáginas del primer nivel. Necesito toda la subpágina, la subpágina de sub ... y todo. Busqué una solución y puedo obtener todas las subpáginas usando get_pages y wp_list_pages.
Pero realmente necesito ordenar el orden por el metavalor personalizado. Entonces tengo que usar una consulta personalizada.
por favor ayuda. Gracias
wp-query
query-posts
query
phpuser
fuente
fuente
Respuestas:
¿Por qué no solo usar
get_pages()
?p.ej
Pero si realmente debe ser como un
WP_Query()
objeto, use un método similar:fuente
WP_Query()
?El problema
Lo que tiene problemas para comprender es "¿Cómo hago X?" Esta no es una acción de 1 paso, es un proceso de varios pasos y debe separarse.
No necesitas hacer esto:
Usted necesita hacer ésto:
La solucion general
Entonces, para entender cómo hacerlo infinitamente hasta llegar al final, sin codificarlo, debe comprender las funciones recursivas.
p.ej
Aplicando la recursión a este problema para una solución
Entonces tu padre es
$parid
, y tu meta de publicación tiene una clave de$metakey
.Pasemos a una función para agarrar a sus hijos.
Luego clasificaremos la matriz $ children, las claves serán las ID de publicación y los valores serán los metavalores.
y definamos la función como:
Esto le brinda una variedad de ID y valores de publicaciones, ordenados de menor a mayor. Puede usar otras funciones de clasificación de PHP para hacerlo de mayor a menor.
¿Qué pasa con los niños de los niños?
En el medio de nuestro bucle, necesitamos hacer una llamada recursiva, pasando el niño en lugar del ID de padre.
Así que esto:
Se convierte en esto:
Con esta modificación, la función ahora recupera los hijos, los hijos de los niños, los hijos de los niños ..... etc.
Al final, puede recortar los valores en la matriz para obtener ID como este:
Con esta estrategia, puede reemplazar el valor de la metaclave con cualquier otra métrica, o usar funciones recursivas de otras maneras.
Dado que el código completo requiere solo unos segundos de comprensión básica y una copia rápida de pegar, no insultaré su inteligencia con un bloque de código completo.
Ventajas
Problemas que encontrarás
Mi recomendación
Te recomendaría que aplanes la jerarquía de tu página o que uses una taxonomía. Por ejemplo, si está calificando publicaciones, tenga una taxonomía de calificación de página con los términos 1,2,3,4 y 5, etc. Esto le proporcionará una lista de publicaciones lista para usar.
Alternativamente, use los menús de navegación y evite este problema por completo
fuente
Obtenga recursivamente todas las subpáginas actuales
Aquí hay un enfoque recursivo utilizando
get_children
. Ponga lo siguiente en sufunctions.php
:Cómo usarlo
Use la función anterior donde desee, por ejemplo, así:
La función admite un
args
parámetro (cadena o matriz de consulta) y unoutput
tipo (ver arriba).Entonces también puedes usarlo así:
Y debido a la dependencia
get_children
=>get_posts
=>WP_Query
puede usar meta valores, como lo solicitó inicialmente el autor de esta pregunta.fuente
No estoy seguro de si esto es exactamente lo que busca, pero podría usar la función wp_list_pages, y usar los parámetros 'child_of' y 'profundidad'.
Consulte la siguiente página en el Codex para obtener más información: http://codex.wordpress.org/Function_Reference/wp_list_pages
fuente
Hice una función recursiva que obtiene todos los identificadores secundarios de una página principal. Una vez que tenemos los identificadores, hacemos una consulta para las páginas y podemos ordenar los resultados por meta clave / valor.
Si necesita ordenar los hijos por meta clave / valor de manera jerárquica, debe pasar los valores meta_key y order_by a WP_Query en la función _get_children_ids (en lugar de la WP_Query final).
Si no, un método más simple para obtener toda la identificación secundaria es:
fuente
HAGO ESTE FUNCIONAMIENTO, SOLO COPIE Y PEGUE EL CÓDIGO EN SU PÁGINA.
fuente
$post -> ID
?), B) no es lo que se pidió, C) no se explica muy bien.