Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress

Consejo Rápido: Haz Tus Columnas Personalizadas Ordenables

by
Length:ShortLanguages:

Spanish (Español) translation by Rafael Chavarría (you can also view the original English article)

En un artículo reciente por Claudio Simeone, el demostró cómo podrías agregar columnas extra a tu publicación, o tipo personalizado de publicación, pantallas de admin (o quitar las existentes). En este consejo rápido construyo sobre eso mostrándote cómo hacer tus recién creadas columnas ordenables.


Para decirle a WordPress cuáles columnas quieres registrar como ordenables necesitas este filtro:

Para artículos y páginas, $screen->id es 'edit-post' y 'edit-page' respectivamente. En general, para un tipo de artículo con nombre 'mi-tipo-articulo', es 'edit-mi-tipo-articulo'.

El filtro pasa un arreglo de nombres de columnas ordenables como llaves, y qué ordenar como valor. Más precisamente, los valores dictan a lo que está establecido el parámetro 'order-by' en la consulta que llena la tabla. De la misma manera que puedes quitar columnas, también puede hacer columnas 'no-ordenables' quitándolas de este arreglo. Veamos un ejemplo:


Registrar una Columna

Siguiendo el artículo de Claudio, supón que agregamos la columna 'slices' a nuestro tipo de artículo 'cake', lo que podemos hacer como sigue:

Y hemos agregado el contenido para la columna como sigue:

He almacenado slices como post meta, pero tus columnas pueden ser pobladas por otros datos.


Haz una Columna Ordenable

Ahora registra nuestra columna personalizada como 'sortable'. Como se mencionó arriba usamos el filtro manage_{$screen->id}_sortable_column. El $screen->id en este caso es 'edit-cake'.

La llave del arreglo $columns indica una columna ordenable, y su valor le dice a WordPress a qué establecer 'orderby' en la consulta. Si el valor fue uno de los 'orderby' entendido nativamente por WordPress (estos incluyen 'title', 'date', 'modified', 'comment_count', o ciertamente cualquiera de los otros listados bajo WP_Query en el WordPress Codex) podríamos parar aquí. La excepción a esta regla, como en este ejemplo, son los parámetros 'meta_value' y 'meta_value_num', que requieren que establezcamos una meta key también.

Si queremos ordenar por valor meta, o por alguna otra forma que WordPress no entienda automáticamente, tienes que decirle a lo que te refieres por ordenar por 'slice'. Si estás ordenando por post meta, la manera más fácil de hacer esto es enganchar a la acción pre_get_posts. Esto pasa un objeto de consulta que podemos modificar. Nota que esta acción es disparada para todas las consultas por defecto (frente y detrás). Mientras que es poco probable que cause algún problema, a menos que quieras que WordPress interprete orderby establecido a 'slice' en el front-end también, es una buena idea solo afectar a las consultas en el lado del administrador.

Esto revisa si nuestro query está ordenando por 'slice', le dice a WordPress que ordene numéricamente por el valor de los post meta 'slices'. Si quieres ordenar el valor alfabéticamente entonces usa 'meta_value' en vez de 'meta_value_num'.

$query es un objeto WP_Query, así que cualquier cosa que puedas ordenar usando ese objeto, puedes ordenar tus columnas. Para cualquier cosa más complicada, necesitarás enganchar a posts_orderby (o post_clauses), pero eso está fuera del alcance de este consejo rápido.

Nota: Si un artículo no tiene un valor almacenado para esa meta key entonces no aparecerá cuando ordenes por esa meta key. Esto es diferente de tener un artículo teniendo 0 almacenado como el valor meta.

Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.