「写真家」と「著作権」というメディア エントリのメタデータに 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を始めたばかりです。助けていただければ幸いです。