Cum se ordonează articolele unui tip de postare personalizat după dată DESC în panoul de administrare?
Am creat un nou tip de postare numit "Video".
Când creez o postare pentru acest tip de conținut, postările sunt ordonate după title ASC
.
Este posibil să ordonez postările după dată în ordine descrescătoare (DESC)?
register_post_type('Videos', array(
'labels' => array(
'name' => _x('Videos', 'nume general tip postare'),
'singular_name' => _x('Video', 'nume singular tip postare'),
'add_new' => _x('Adaugă', 'Video'),
'add_new_item' => __('Adaugă un video'),
'edit_item' => __('Editează video'),
'new_item' => __('Video nou'),
'view_item' => __('Vezi link-ul 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')
)
);

În regulă, poți pur și simplu să te conectezi la filtrul pre_get_posts și să verifici is_admin. Pune acest cod în tema sau pluginul tău:
function wpse_81939_post_types_admin_order( $wp_query ) {
if (is_admin()) {
// Obține tipul de post din interogare
$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');
Aș schimba și post_type "Videos" la literă mică, gen "video".

Bine, mulțumesc Pontus! Voi încerca asta. Dar de ce nu este setat implicit? Pentru "Postări" este deja setat prin "orderby DESC"

Exemplul de mai sus dezactivează funcția de ordonare prin clic pe coloane.
Sortabil pentru mai multe tipuri de postări personalizate:
function wpse_819391_post_types_admin_order( $wp_query ) {
if ( is_admin() && !isset( $_GET['orderby'] ) ) {
// Obține tipul de postare din interogare
$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');

Am folosit o abordare puțin diferită:
add_action('pre_get_posts', 'filter_posts_list');
function filter_posts_list($query) {
//$pagenow stochează numele paginii curente vizualizate
global $pagenow, $typenow;
if(current_user_can('edit_posts') && ('edit.php' == $pagenow)) {
//metoda set() a obiectului global $query pentru setare
$query->set('orderby', 'date');
$query->set('order', 'desc');
}
}

Schimbă argumentul hierarchical
la false
sau șterge acea linie pentru a te baza pe valoarea implicită de false
.
'hierarchical' => false,
https://developer.wordpress.org/reference/functions/register_post_type/#parameters
