En nuestro artículo reciente sobre SETUP_POSTDATA (), un lector publicó una buena pregunta: ¿Cómo ordenar una matriz tomada por los objetos WP_Post en orden alfabético de acuerdo con sus términos en cierta taxonomía? En otras palabras, si trabajo con publicaciones de tipo cinemato ¿Los títulos reales de las publicaciones en sí? La respuesta actual actual de Google para “Sortear publicaciones por valor de taxonidad” usa varios get_posts () en un bucle foreach (). No me gusta esta solución, porque implica trabajar con más matriz de objetos WP_Post, en lugar de con una sola matriz ordenada, con la que podemos hacer lo que queramos.
Antes de bucear, una invitación. Si desea comprender mejor el desarrollo de WordPress en general, escribí la mejor guía para ello:
¡La mejor manera de aprender el desarrollo de WordPress y ejecutar hoy!

En funcionamiento está nuestro curso completo “Aprende el desarrollo de WordPress”. Ahora, en la tercera edición actualizada y extendida, ha ayudado a cientos de compradores felices a aprender el desarrollo de WordPress de una manera rápida, inteligente y completa. Esto es lo que tienen que decir:
“Creo que cualquiera está interesado en aprender el desarrollo de WordPress necesita este curso. Ver videos era como si estuvieran muchas luces encendidas “. -Jason, desarrollador de WordPress
“Otros cursos que casi siempre he intentado no tienen explicaciones claras sobre lo que WordPress hace las cosas de cierta manera o cómo funcionan juntas. En funcionamiento hace todo esto y todo se explica claramente en un lenguaje fácil de entender “. -Carolina, freelancer y corre ahora
Ahora: clasificar nuestros términos de taxonomía en un solo bucle, en una sola matriz ordenada por WP_Post S, es una gran cantidad de código, pero hay una buena solución. Eso es lo que cubrimos hoy. Demostración de publicaciones ordenadas por términos de taxonomía Esta demostración proviene de un sitio de prueba, que tiene dos publicaciones en dos categorías diferentes:
El sitio de prueba ejecuta veinte diecisiete. Atraqué todo el código en la sección “Código completo” a continuación en la plantilla de Index.Php de veinte diecisiete, donde normalmente iría el bucle (ver línea 34):

Esto da este resultado en la página inicial del sitio demostrativo:

Esto es especial porque ordenan estas publicaciones en orden alfabético con el nombre de la categoría en la que se encuentra. Si las publicaciones fueran ordenadas alfabéticamente por sus propios nombres, o el viceversa de los datos de publicación (como en las “publicaciones recientes” a la derecha), entonces aparecería en el orden opuesto.

Ordenar una serie de publicaciones de acuerdo con sus términos de taxonomía: el código de trabajo completo a continuación hace lo siguiente:
Haga cargo de todas las publicaciones (Post Tipo predeterminado) que tienen un valor para la taxonomía de categoría.
Ordene estas publicaciones en orden alfabético con el nombre de la primera categoría en la que se enumeran.
Muestra los enlaces permanentes y títulos de cada publicación en su orden ordenado.
Function wpshout_fetch_posts_in_category_taxonomy () {// obtiene publicaciones que un valor para la ‘categoría’ taxonomy = array (‘tax_query’ => array (‘taxonomy’ => ‘categoría’, ‘operador’ => existe ‘,))); // devuelve publicaciones recuperadas return get_posts ($ args); } // Personalice cada uno de los objetos WP_Post obtenidos: cada uno tendrá una propresión A // ‘Categoría’ que contenga el objeto WP_MTER de su categoría function_addrory_term_objcts_to_posts ($ publicaciones) {foreach ($ publica como $ post_index = / post): / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / post) Obtenga la matriz de los términos de categoría WP_MMTER para la publicación actual $ TRASTRES = get_the_terms ($ current_post, ‘categoría’); // Guarde el primer objeto wp_term al objeto wp_post $ current_post-> category = $ Termination [0]; // Actualiza la matriz de $ publicaciones con el objeto WP_Post modificado $ publica [$ post_index] = $ current_post; EndForeach; // devolver la matriz de objetos wp_post modificados devolver $ publicaciones; } // Definir la función de clasificación para ordenar por categoría nombre wpshout_sort_bosts_by_catory ($ a, $ b) {return stricmp (wp_strip_all_tags ($ a-> categoría-> nombre), wp_strip_all_tags ($ b> categoría-> nombre)); } // llame a funciones justificadas para obtener una matriz de semillas de objetos wp_post, // luego salga con foreach () function wpshout_output_posts_sorte_by_category () {$ posts = wpshout_fetch_posts_in_category_tagony (); // Devuelve si no hay resultados si (! IS_Array ($ publicaciones)): False retorno; Terminara si; // Agregar categoría objeto WP_Term como propidad a cada objeto wp_post $ posts = wpshout_add_category_term_objcts_to_posts ($ publicaciones); // Ordenar publicaciones por nombre de categoría usort ($ post, ‘wpshout_sort_posts_by_category’); // llamar a global $ post variable global $ post;
// Reunir publicaciones ordenadas y mostrar usando etiquetas de plantilla foreach ($ publicaciones como $ current_post): // establecer $ post global variable en el objeto de publicación actual $ post = $ current_post;// Configurar el “entorno” para las etiquetas de plantilla configurar_postata ($ post);// Use etiquetas de plantilla echo echo ‘
‘;The_itle ();echo ‘
‘;EndForeach;// reiniciar la variable $ post wp_reset_postata ();} // llame a la función de salida donde desea en su archivo de plantilla wpshout_output_posts_sorted_by_category ();Notas sobre el código Hay algunos puntos clave para ver aquí.
Agregar una propiedad de categoría a los objetos WP_Post como se mencionó “> La pregunta original, los términos de taxonomía no son una propiedad implícita de un objeto WP_POST. Por lo tanto, su clasificación es más un desafío que clasificar por los nombres de publicaciones, datos de publicación, etc. Resolví este problema solucionando otro objeto, un objeto wp_term, que ofrece todo tipo de información sobre la primera categoría de cada posición. Un ejemplo de objeto wp_term se ve así: objeto (wp_term)#1143 (10) {[“termin_id] => int (15) [” name “] => string (14)” Primera categoría “[” Slug “] = > String (14) “Primera categoría” [“Termin_Group”] => int (0) [“Termin_Taxonomy_id”] => int (15) [“Taxonomy”] => String (8) “Categoría” [“Descripción” ] => String (0) “” [“Parent”] => int (0) [“Count”] => int (1) [“Filtro”] => String (3) “RAW”} Cada objeto wp_post, A través de la función wpshout_add_categy_term_objects_to_posts (), tenía un objeto wp_term agregado como su nueva propiedad de categoría.

Usort () por el nombre de la categoría con el paso anterior, podríamos usar la propiedad de nombre de la propiedad de categoría de cada publicación. Obtener el nombre de categoría de un objeto WP_Post modificado se ve así: $ this_post-> categoría-> nombre. Esto nos permitió hacer un orden alfabético de publicaciones por nombres de sus categorías usando Usort (). Llegamos un poco más seco () en nuestro artículo sobre SETUP_POSTDATA (). El contenido de la salida para usar varios objetos WP_Post, ya que normalmente usaríamos un objeto WP_QUEY, usamos el maravilloso setup_postData () de Wordpr. Tema: donde sea que tenga que tomar publicaciones, ordenarlas después de un término de taxonomía y enviarlas a la página. Nuestra rápida demostración anterior simplemente ha pegado el código demostrativo completo en el índice.php de un tema. También puede poner todo, excepto la línea final, en funciones.php de su base y luego llamar a wpshout_output_posts_sorted_by_category () donde quiera en su tema o registre un widget que usa esta funcionalidad, etc. Cambio de argumentos para get_posts () Como cubre nuestras guías para wp_query y get_posts (), puede personalizar su get_posts () como lo desee. El siguiente ejemplo cambia el tipo de publicación dirigida al producto, limita los resultados tomados a las cinco últimas publicaciones publicadas y modifica la taxonomía que se clasificará en Product_CAT.
‘Post_type’ => ‘Product’, ‘Post_per_page’ => 5, ‘Tax_Query’ => Array (‘Taxonomy’ => Product_Cat ‘,’ Operator ‘=> existe’,)) Desventaja de este modo de clasificación de los objetos Post Lo que me gustaría cambiar es el número de consultas de bases de datos separadas: además de la llamada única get_posts (), hay una llamada get_the_terms () para cada publicación tomada. Si su llamada get_posts () ha traído miles de publicaciones, entonces significa 1.001 viajes adicionales a la base de datos, que arruinará en términos de rendimiento. Me interesaría saber si alguien sabe una mejora por ello. Una idea sería escribir una sola consulta almacenada en caché, que se hará cargo de los términos de la taxonomía dirigida a todas las publicaciones y luego se referirá a los resultados de esa consulta, pero no estoy seguro de cómo funciona. en la práctica. Su deseo es nuestro mandamiento, así que leemos los comentarios. Comprender cómo clasificar las publicaciones de acuerdo con los metadatos, incluidos los términos de su taxonomía, también es algo bastante útil para hacer en WordPress, por lo que esperamos que comprenda la demostración anterior y cómo podría modificarse. Si es así, saludos, eres lo suficientemente bueno en WordPress.
¡Gracias por leer! Escuchemos sus preguntas y comentarios a continuación. Imagen de crédito: allispossible.org.uk
Cómo ordenar las publicaciones por sus términos de taxonomía
Tags Cómo ordenar las publicaciones por sus términos de taxonomía
homefinance blog