メディアライブラリに新しい並べ替えオプションを追加するには、次のコードを使用します。
function modify_post_mime_types( $post_mime_types ) {
$post_mime_types['application/pdf'] = array( __( 'PDFs' ), __( 'Manage PDFs' ), _n_noop( 'PDF <span class="count">(%s)</span>', 'PDFs <span class="count">(%s)</span>' ) );
$post_mime_types['application/vnd.openxmlformats-officedocument.presentationml.presentation'] = array( __( 'Powerpoints' ), __( 'Manage Powerpoints' ), _n_noop( 'Powerpoints <span class="count">(%s)</span>', 'Powerpoints <span class="count">(%s)</span>' ) );
$post_mime_types['application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document'] = array( __( 'Documents' ), __( 'Manage Documents' ), _n_noop( 'Documents <span class="count">(%s)</span>', 'Documents <span class="count">(%s)</span>' ) );
return $post_mime_types;
}
add_filter( 'post_mime_types', 'modify_post_mime_types' );
これは、JavaScript対応の「グリッド」モードに最適です。
しかし、 "リスト"モードでは、エントリをクリックするとすべての拡張子/ファイルが表示されます(正しく表示されていても)。
これがPDFのリダイレクト先のURLです。
wp-admin/upload.php?mode = list&attachment-filter = post_mime_type%3Aアプリケーション%252Fpdf&m = 0&filter_action =フィルタ&アクション= -1&paged = 1&action2 = -1&影響あり&_ajax_nonce = 093720f202&ps
私が標準のWordpressの "Images"フィルタを使ってみると、実際にうまくいく。そのためのURLは次のとおりです。
wp-admin/upload.php?mode = list&attachment-filter = post_mime_type%3 image&m = 0&filter_action =フィルタ&action = -1&paged = 1&action2 = -1&影響を受ける&_ajax_nonce = 093720f202&ps
私はこれはおそらくWordpressのバグだと思っていますが、誰かがここで何かを知っているかどうかを確かめるだけです。
問題はattachment-filter=
URLパラメータにあります。 application/pdf
(またはelse)の間のスラッシュは2回エスケープされています。 %252F
をスラッシュまたは%2F
に置き換えると、フィルタは機能します。
最初のエスケープ(/
が%2F
になる)は、WPがMIMEタイプを含む選択ボックスを構築しているときに起こります。 2番目のもの(%2F
が%252F
になる)はブラウザによって実行されます。
最も簡単な解決策は、PHPのどこかにURLパラメータを手動でurldecodeすることです。
if ( isset( $_GET['attachment-filter'] ) )
$_GET['attachment-filter'] = urldecode($_GET['attachment-filter']);
更新:その問題に関するWPコアチケットがあります: https://core.trac.wordpress.org/ticket/30123
これが修正されると、上記の答えは時代遅れになります。