0

「写真家」と「著作権」というメディア エントリのメタデータに 2 つのカスタム列を含めました。メディア ライブラリの管理ビューに両方の列を含め、並べ替え可能にしました。しかし、それらのいずれかで並べ替えると、結果はその列に NULL 値を持つエントリを除外します

管理パネルのメディア ビューにカスタム フィールドを追加する

//Custom columns in Media Admin view

add_filter('manage_media_columns', 'media_additional_columns', 1);
function media_additional_columns($defaults){
    $defaults['photographer'] = __('Photographer');
    $defaults['copyright'] = __('Copyright');
    return $defaults;
}

//Fill Custom Media Admin Columns with content

add_action('manage_media_custom_column', 'media_custom_columns_attachment_id', 1, 2);
function media_custom_columns_attachment_id($column_name, $post_id){
   switch ( $column_name ) {
    case 'photographer':
      echo get_post_meta( $post_id, 'photographer', true );
      break;

    case 'copyright':
      echo get_post_meta( $post_id, 'copyright', true );
      break;
}
}


管理パネルのメディア ビューでカスタム列を並べ替え可能にする

//make custom columns sortable

//add custom columns to array sortable columns
add_filter('manage_upload_sortable_columns', 'as_add_custom_column_sortable');
function as_add_custom_column_sortable($columns) {
    $columns['photographer'] = 'photographer';
    $columns['copyright'] = 'copyright';
    return $columns;
  }

//alter the post query in case stuff gets sorted by custom columns
  add_action( 'pre_get_posts', 'as_custom_column_orderby' );
  function as_custom_column_orderby( $query ) {
    if( ! is_admin() || ! $query->is_main_query() ) {
      return;
    }
    switch ($query->get( 'orderby')) {
      case 'photographer':
        $query->set( 'orderby', 'meta_value' );
        $query->set( 'meta_key', 'photographer' );
        break;
      case 'copyright':
        $query->set( 'orderby', 'meta_value' );
        $query->set( 'meta_key', 'copyright' );
        break;   
    }
  }

非NULL値を持つエントリの後に、ソートされたテーブルにNULL値を持つエントリを含めたいです。

投稿とユーザーの同じ質問に答えるこの投稿を見つけました。メディアは基本的に添付ファイルタイプの投稿であるため、投稿に適用できる答えはメディアにも当てはまると思いましたが、そうではなく、メディアライブラリが完全に空になります。

私はPHPを始めたばかりです。助けていただければ幸いです。

4

1 に答える 1