¿Cómo ordenar las entradas de un tipo de contenido personalizado por fecha DESC en el panel de Administración?
He creado un nuevo tipo de entrada llamado "Video".
Cuando creo una entrada para este tipo de contenido, las entradas se ordenan por título ASC
.
¿Es posible ordenar las entradas por fecha DESC por favor?
register_post_type('Videos', array(
'labels' => array(
'name' => _x('Videos', 'nombre general del tipo de entrada'),
'singular_name' => _x('Video', 'nombre singular del tipo de entrada'),
'add_new' => _x('Añadir', 'Video'),
'add_new_item' => __('Añadir un video'),
'edit_item' => __('Editar un video'),
'new_item' => __('Nuevo video'),
'view_item' => __('Ver el enlace del video'),
//'search_items' => __(' Video'),
'menu_name' => 'Video'
),
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => true,
'rewrite' => array('slug' => 'video'),
'query_var' => true,
'supports' => array(
'title',
'editor' => false,
'excerpt' => false,
'trackbacks' => false,
'custom-fields',
'comments' => false,
'revisions' => false,
'thumbnail' => false,
'author' => false,
'page-attributes' => false,
),
'taxonomies' => array('post_tag')
)
);

De acuerdo, puedes simplemente engancharte al filtro pre_get_posts y verificar is_admin. Coloca esto en tu tema o plugin:
function wpse_81939_post_types_admin_order( $wp_query ) {
if (is_admin()) {
// Obtener el tipo de post desde la consulta
$post_type = $wp_query->query['post_type'];
if ( $post_type == 'Videos') {
$wp_query->set('orderby', 'date');
$wp_query->set('order', 'DESC');
}
}
}
add_filter('pre_get_posts', 'wpse_81939_post_types_admin_order');
También cambiaría el post_type "Videos" a minúsculas como "video".

Vale, ¡gracias Pontus! Voy a probar esto. ¿Pero por qué esto no está configurado por defecto? Porque para "Posts" ya está configurado como "orderby DESC"

El ejemplo anterior deshabilita la función de ordenación al hacer clic en las columnas.
Ordenable para múltiples tipos de entradas personalizadas:
function wpse_819391_post_types_admin_order( $wp_query ) {
if ( is_admin() && !isset( $_GET['orderby'] ) ) {
// Obtiene el tipo de entrada desde la consulta
$post_type = $wp_query->query['post_type'];
if ( in_array( $post_type, array('videos','news','text') ) ) {
$wp_query->set('orderby', 'date');
$wp_query->set('order', 'DESC');
}
}
}
add_filter('pre_get_posts', 'wpse_819391_post_types_admin_order');

Utilicé un enfoque un poco diferente:
add_action('pre_get_posts', 'filtrar_lista_de_entradas');
function filtrar_lista_de_entradas($query) {
//$pagenow contiene el nombre de la página actual que se está viendo
global $pagenow, $typenow;
if(current_user_can('edit_posts') && ('edit.php' == $pagenow)) {
//método set() de la variable global $query para establecer parámetros
$query->set('orderby', 'date');
$query->set('order', 'desc');
}
}

Cambia el argumento hierarchical
a false
o elimina esa línea para usar el valor por defecto que es false
.
'hierarchical' => false,
https://developer.wordpress.org/reference/functions/register_post_type/#parameters
