Al editar uno de mis tipos de publicaciones personalizadas, quiero poder enumerar todas las entradas por un campo personalizado en lugar de la fecha en que se publican (que, para un tipo de publicación personalizada, probablemente no sea relevante). Obtuve una ventaja de los comentarios de una publicación de blog sobre tipos de publicaciones personalizadas y el autor dijo que era posible y que incluso lo hizo para que pudiera hacer clic en los nombres de las columnas para una clasificación personalizada. Mencionó la posts_orderbyfunción que noté en mis propios comentarios, pero ahora ya puedo encontrar la publicación del blog. ¿Alguna sugerencia? Vi una solución que usaba
add_action('wp', 'check_page');
Y la check_pagefunción solía add_filtercambiar la consulta, pero estoy bastante seguro de que solo funcionaría en los archivos de tema, no en el área de administración.
fuente

Respuestas:
Como probablemente pueda imaginar por la falta de respuestas proporcionadas, la solución no es exactamente trivial. Lo que he hecho es crear un ejemplo algo autónomo que asume un tipo de publicación personalizado de "
movie" y una clave de campo personalizada de " Género ".Descargo de responsabilidad : esto funciona con WP3.0 pero no puedo estar seguro de que funcionará con versiones anteriores.
Básicamente, necesita enganchar dos (2) ganchos para que funcione y otros dos (2) para que sea obvio y útil.
El primer enlace es '
restrict_manage_posts' que le permite emitir un HTML<select>en el área sobre la lista de publicaciones donde se filtran las " Acciones masivas " y " Mostrar fechas ". El código proporcionado generará la funcionalidad " Ordenar por: " como se ve en este fragmento de pantalla:(fuente: mikeschinkel.com )
El código usa SQL directo porque no hay una función API de WordPress para proporcionar la lista de todas las meta_keys para un tipo de publicación (me parece un boleto de tráfico futuro ...) De todos modos, aquí está el código. Tenga en cuenta que toma el tipo de publicación
$_GETy lo valida para asegurarse de que sea tanto un tipo de publicación válidopost_type_exists()como unmovietipo de publicación (esas dos comprobaciones son excesivas, pero lo hice para mostrarle cómo, si no quiere hacerlo) codifique el tipo de publicación.) Por último, uso elsortbyparámetro URL ya que no entra en conflicto con nada más en WordPress:El segundo paso requerido es usar el
parse_querygancho que se llama después de que WordPress decida qué consulta debe ejecutarse pero antes de ejecutarla. Aquí podemos establecer valores deorderbyymeta_keyen laquery_varmatriz de la consulta que están documentados en el Codex en elorderbyparámetro paraquery_posts(). Probamos para asegurarnos de que:is_admin()),$pagenow=='edit.php'),post_typeparámetro de URL igual amovie, ysortbyparámetro de URL y no se le ha pasado el valor ' Ninguno 'Si todas esas pruebas pasan, configuramos
query_vars(como se documenta aquí )meta_valuey nuestrosortbyvalor para ' Género ':Y eso es todo lo que necesitas hacer; ¡no se requieren ganchos "
posts_order" o "wp"! Por supuesto que realmente necesitas hacer más; necesita agregar algunas columnas en su página que enumeren las publicaciones para que pueda ver los valores por los que está ordenando, de lo contrario, los usuarios se confundirán mucho. Entonces agregue unmanage_{$post_type}_posts_columnsgancho, en este casomanage_movie_posts_columns. Este gancho pasa la matriz predeterminada de columnas y, por simplicidad, simplemente lo reemplacé con dos columnas estándar; una casilla de verificación (cb) y un nombre de publicación (title). (Puede inspeccionarposts_columnscon aprint_r()para ver qué más hay disponible de forma predeterminada).Decidí agregar un " Ordenado por: " para cuando hay un
sortbyparámetro de URL y cuando no lo esNone:Finalmente, usamos el
manage_pages_custom_columngancho para mostrar realmente el valor cuando hay una publicación del tipo de publicación apropiado y con la prueba probablemente redundante parais_admin()y$pagenow=='edit.php'. Cuando hay unsortbyparámetro de URL, extraemos el valor del campo personalizado que se está ordenando por una visualización en nuestra lista. Esto es lo que parece (recuerde, estos son datos de prueba, ¡así que no hay comentarios de la galería de maní sobre las clasificaciones de películas! :):(fuente: mikeschinkel.com )
Y aquí está el código:
Tenga en cuenta que esto solo recoge el primer " Género " para a
movie, es decir, el primer meta_valor en el caso de valores múltiples para una clave dada. Pero, de nuevo, no estoy seguro de cómo funcionaría de lo contrario.Y para aquellos que no están familiarizados con dónde colocar este código, pueden ponerlo en un complemento o más probablemente para el novato en el
functions.phparchivo en su tema actual.Cómo ayuda esto
fuente
'months_dropdown_results'y'restrict_manage_posts'. Los votos a favor de PS siempre son apreciados. :)A partir de WordPress 3.1 (estoy usando la versión beta) las columnas ahora se pueden ordenar a través de sus títulos.
La siguiente publicación detalla cómo implementarlos.
http://scribu.net/wordpress/custom-sortable-columns.html
fuente
Aquí hay una solución simple:
Simplemente reemplace SU TIPO DE PUBLICACIÓN y 'your_custom_field'
fuente