6

I created a new post type named "Video".

When I create post for the post type, posts is ordered by title ASC.

Is it possible to order posts by date DESC please ?

register_post_type('Videos', array(
    'labels' => array(
        'name' => _x('Videos', 'post type general name'),
        'singular_name' => _x('Video', 'post type singular name'),
        'add_new' => _x('Ajouter', 'Video'),
        'add_new_item' => __('Ajouter une video'),
        'edit_item' => __('Éditer une video'),
        'new_item' => __('Nouvelle video'),
        'view_item' => __('Voir le lien de la 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')
   )
 );
2
  • Please add the code where you output the posts, you don't add the order_by parameter where you register the post_typ only when you query the posts Jan 17, 2013 at 14:25
  • Oh sorry, I would like to add the order_by in the Wordpress Admin
    – Steffi
    Jan 17, 2013 at 16:07

3 Answers 3

17

Alright, You can just hook into the filter pre_get_posts and check is_admin. Put this in your theme or plugin:

function wpse_81939_post_types_admin_order( $wp_query ) {
  if (is_admin()) {

    // Get the post type from the query
    $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');

I also would shange the post_type "Videos" to lowercase like "video".

3
  • 1
    Okay, thanks Pontus ! I'll try this. But why is this not set by default ? Because for "Posts" is already set by "orderby DESC"
    – Steffi
    Jan 17, 2013 at 21:40
  • 1
    Did it work for you? Jan 18, 2013 at 8:15
  • it's not by default, coz it's set to "Name" in alphabetical order by default (or slug i guess) May 3, 2016 at 22:51
7

The example above disables the ordering feature by clicking columns.

Sortable & for multiple custom post types:

function wpse_819391_post_types_admin_order( $wp_query ) {
  if ( is_admin() && !isset( $_GET['orderby'] ) ) {     
    // Get the post type from the query
    $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');
1

I used a bit different approach:

    add_action('pre_get_posts', 'filter_posts_list'); 

    function filter_posts_list($query)  {
        //$pagenow holds the name of the current page being viewed
         global $pagenow, $typenow;  
        if(current_user_can('edit_posts') && ('edit.php' == $pagenow))  { 
            //global $query's set() method for setting
            $query->set('orderby', 'date');
            $query->set('order', 'desc');
        }
    }

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.