Ordenar los usuarios de WordPress por el número de entradas

Te muestro dos ejemplos para ordenar los usuarios de Wordpress por el número de entradas.

En el área de administración de WordPress, los usuarios se muestran por defecto, ordenados en orden ascendentes por el nombre de usuario y también se pueden mostrar ordenados por correo electrónico.

La forma predeterminada de como muestra a los usuarios, no se acomodaba a mis necesidades de trabajo con WordPress, debido a que me parece más útil y fácil, por ejemplo, poder ordenar los datos de usuario por el número de entradas publicadas o, en su defecto, mostrar el listado de usuarios, por el mismo criterio.

Buscando información sobre el particular en Google, encontré que muchos usuarios tenían necesidades similares, más no iguales a las que yo requería. Pero sus propuestas de código me dieron las pistas necesarias para encontrar las respuestas que estaba buscando.

Luego, encontré que en el código de referencia de WordPress, existe la clase «WP_User_Query»[1], así que me puse a revisar dicha información, específicamente me fue útil lo que corresponde a los parámetros de orden. Por esa razón encontré que uno de los parámetros de orden es: «post_count».

Post_count es el parámetro que permite ordenar los usuarios por el número de entradas publicadas.

También encontré un código[2] que permitía ordenar el listado de usuarios a través de una nueva columna, aspecto que no requería, pero sí me sirvió la parte que ordenaba los datos, para construir mi propio código y hacer las pruebas correspondientes.

En dicho código estaba un filtro denominado «users_list_table_query_args»[3], el mismo que permite modificar a la clase «WP_User_Query».

Asimismo, en el mismo ejemplo, había otro filtro denominado «manage_users_sortable_columns»[4], que nos permite ordenar por algún criterio de columna cualquier listado del administrador de WordPress.

Así que, con toda esa información me resultaron dos códigos que a continuación presento:

  1. Ordena por defecto los usuarios por la cantidad de entradas publicadas

En este caso, la solución es Ordenar los usuarios de WordPress por el número de entradas, para ello creamos la función «change_user_order», la que aplicará el filtro «users_list_table_query_args» a la clase «WP_User_Query», para que por defecto la lista de usuarios de WordPress se ordene por el número de entradas o publicaciones realizadas.

Como puede observarse hay dos argumentos o parámetros que se pasan en la función, por un lado «post_count» y por el otro el criterio de orden «DESC», que en este caso es el descendente, por lo que se mostrarán a los usuarios que tienen más publicaciones realizadas de mayor a menor.

function change_user_order($args)
{
    $args["orderby"] = "post_count";
    $args["order"] = "DESC";
    return $args;
}
add_filter("users_list_table_query_args","change_user_order");
  1. Agregar el filtro de orden a la columna de entradas

Con esta opción, mantenemos el orden por defecto de la lista de usuarios y más bien a la columna que muestra el número de entradas, le agregamos el filtro «manage_users_sortable_columns», para que se pueda ordenar de forma ascendente o descendente cuando presionemos clic sobre la etiqueta «Entradas».

function column_sortable_post_count ($columns)
{
    return wp_parse_args (array ('posts' => 'post_count'), $columns);
}
add_filter ('manage_users_sortable_columns', 'column_sortable_post_count');

Para para ejecutar los códigos, estos deben ser pegados en el archivo functions.php del tema activo, aunque es más recomendable que estos se guarden en un complemento de funciones para que estos códigos no se pierdan en caso de cambiar el tema por defecto o, caso contrario se puede utilizar el complemento «Code Snippets» que se ubica en el directorio de complementos de WordPress.

Un detalle final, solo uno de los códigos deberá ser implementados, de lo contrario predominará el ejemplo 1 planteado, pareciendo que el ejemplo 2 no funciona. En mi caso, implementé el ejemplo 2, por ello, por defecto la lista de usuarios de WordPress está ordenada por defecto por el número de entradas publicadas.

Notas

[1] https://developer.wordpress.org/reference/classes/wp_user_query/

[2] https://wordpress.stackexchange.com/questions/209591/can-you-have-the-users-list-pre-sorted-by-specific-column

[3] https://developer.wordpress.org/reference/hooks/users_list_table_query_args/

[4] https://developer.wordpress.org/reference/hooks/manage_this-screen-id_sortable_columns/

4.8/5 - (13 votos)