mbcreation

Order post by thumbnail (featured image) presence.

Jan 28th, 2015
464
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.30 KB | None | 0 0
  1. function posts_columns($defaults){
  2.     $defaults['riv_post_thumbs'] = __('Thumbs');
  3.     return $defaults;
  4. }
  5.  
  6. function posts_custom_columns($column_name, $id){
  7.     if($column_name === 'riv_post_thumbs'){
  8.         echo the_post_thumbnail( array(70,70) );
  9.     }
  10. }
  11.  
  12.  
  13. function korleon_nothumb_first($query){
  14.  
  15.     if( !is_admin()
  16.         || !$query->is_main_query()
  17.         || !$query->query['post_type']==='post'
  18.         || !( isset($_GET['orderby']) &&  $_GET['orderby']==='riv_post_thumbs' )
  19.         || !isset($_GET['order'])
  20.     ) return;
  21.  
  22.     $order = ( $_GET['order']==='asc' ) ? 'ASC' : 'DESC';
  23.  
  24.     $query->set('meta_query',array(
  25.  
  26.         'relation' => 'OR',
  27.            
  28.            
  29.             array(
  30.                 'key'     => '_thumbnail_id',
  31.                 'compare' => 'NOT EXISTS',
  32.                 'value' => ''
  33.             ),
  34.  
  35.  
  36.             array(
  37.                 'key'     => '_thumbnail_id',
  38.                 'compare' => 'EXISTS',
  39.              
  40.             )
  41.            
  42.     ));
  43.  
  44.     $query->set('orderby','meta_value_num');
  45.     $query->set('order', $order );
  46.  
  47. }
  48.  
  49. add_filter('manage_posts_columns', 'posts_columns', 5);
  50. add_action('manage_posts_custom_column', 'posts_custom_columns', 5, 2);
  51.  
  52. add_filter('pre_get_posts', 'korleon_nothumb_first', 999);
  53.  
  54. // edit-post
  55.  
  56. add_filter('manage_edit-post_sortable_columns', 'sort_thumb');
  57.  
  58. function sort_thumb($sortable){
  59.  
  60.     $sortable['riv_post_thumbs'] = 'riv_post_thumbs';
  61.     return $sortable;
  62.  
  63. }
Advertisement
Add Comment
Please, Sign In to add comment